
char * sha_crypt(char *key_data,char *salt_data)

{
  anon_union_208_2_947302e2_for_alt_ctx *paVar1;
  anon_union_208_2_947302e2_for_ctx *paVar2;
  long lVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  size_t sVar7;
  char *pcVar8;
  char *pcVar9;
  uchar *__src;
  char *pcVar10;
  long lVar11;
  ulong uVar12;
  ulong uVar13;
  code *pcVar14;
  code *pcVar15;
  ulong uVar16;
  code *pcVar17;
  undefined8 *puVar18;
  uint uVar19;
  undefined8 *puVar20;
  char *pcVar21;
  long in_FS_OFFSET;
  bool bVar22;
  byte bVar23;
  uint local_298;
  uint local_294;
  uint local_290;
  char *endp;
  anon_struct_544_4_e531aae2 L;
  
  bVar23 = 0;
  lVar3 = *(long *)(in_FS_OFFSET + 0x28);
  sVar7 = strlen(salt_data);
  uVar19 = (int)sVar7 + 0x58;
  local_298 = 0x40;
  if (salt_data[1] != '6') {
    uVar19 = (int)sVar7 + 0x2d;
    local_298 = 0x20;
  }
  pcVar8 = (char *)xzalloc((ulong)uVar19);
  *pcVar8 = '$';
  pcVar8[1] = salt_data[1];
  pcVar21 = pcVar8 + 3;
  pcVar8[2] = '$';
  pcVar10 = salt_data + 3;
  iVar5 = strncmp(pcVar10,"rounds=%u$",7);
  local_290 = 5000;
  if (iVar5 == 0) {
    uVar19 = bb_strtou(salt_data + 10,&endp,10);
    local_290 = 5000;
    if (*endp == '$') {
      pcVar10 = endp + 1;
      uVar6 = 999999999;
      if (uVar19 < 1000000000) {
        uVar6 = uVar19;
      }
      local_290 = 1000;
      if (999 < uVar6) {
        local_290 = uVar6;
      }
      iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);
      pcVar21 = pcVar21 + iVar5;
    }
  }
  pcVar9 = strchrnul(pcVar10,0x24);
  uVar6 = (int)pcVar9 - (int)pcVar10;
  uVar19 = 0x10;
  if (uVar6 < 0x11) {
    uVar19 = uVar6;
  }
  __src = (uchar *)xstrndup(pcVar10,uVar19);
  strcpy(pcVar21,(char *)__src);
  uVar16 = (ulong)uVar19;
  pcVar21[uVar16] = '$';
  sVar7 = strlen(key_data);
  pcVar10 = xstrdup(key_data);
  bVar22 = local_298 != 0x20;
  pcVar14 = sha512_end;
  if (!bVar22) {
    pcVar14 = sha1_end;
  }
  pcVar15 = md5_hash;
  if (bVar22) {
    pcVar15 = sha512_hash;
  }
  pcVar17 = sha512_begin;
  if (!bVar22) {
    pcVar17 = sha256_begin;
  }
  local_294 = (uint)sVar7;
  paVar2 = &L.ctx;
  (*pcVar17)(paVar2);
  uVar13 = sVar7 & 0xffffffff;
  (*pcVar15)(paVar2,pcVar10);
  (*pcVar15)(paVar2,__src,uVar16);
  paVar1 = &L.alt_ctx;
  (*pcVar17)(paVar1);
  (*pcVar15)(paVar1,pcVar10,uVar13);
  (*pcVar15)(paVar1,__src,uVar16);
  (*pcVar15)(paVar1,pcVar10,uVar13);
  (*pcVar14)(paVar1,&L);
  pcVar9 = pcVar10;
  if (local_298 < local_294) {
    uVar12 = sVar7 & 0xffffffff;
    do {
      (*pcVar15)(&L.ctx,&L,local_298);
      uVar6 = (int)uVar12 - local_298;
      uVar12 = (ulong)uVar6;
    } while (local_298 < uVar6);
    (*pcVar15)(&L.ctx,&L,uVar6);
  }
  else {
    (*pcVar15)(&L.ctx,&L,uVar13);
    if (local_294 == 0) {
      (*pcVar14)(&L.ctx,&L);
      (*pcVar17)(&L.alt_ctx);
      (*pcVar14)(&L.alt_ctx,L.temp_result);
      goto LAB_001a2ffd;
    }
  }
  uVar12 = sVar7 & 0xffffffff;
  do {
    if ((uVar12 & 1) == 0) {
      (*pcVar15)(&L.ctx,pcVar10,uVar13);
    }
    else {
      (*pcVar15)(&L.ctx,&L,local_298);
    }
    uVar6 = (uint)uVar12 >> 1;
    uVar12 = (ulong)uVar6;
  } while (uVar6 != 0);
  (*pcVar14)(&L.ctx,&L);
  (*pcVar17)(&L.alt_ctx);
  do {
    (*pcVar15)(&L.alt_ctx,pcVar10,uVar13);
    uVar6 = (int)uVar12 + 1;
    uVar12 = (ulong)uVar6;
  } while (uVar6 < local_294);
  (*pcVar14)(&L.alt_ctx,L.temp_result);
  if (local_298 <= local_294) {
    do {
      *(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);
      *(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =
           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);
      lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);
      puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));
      puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);
      for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {
        *puVar20 = *puVar18;
        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;
        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;
      }
      pcVar9 = pcVar9 + (int)local_298;
      local_294 = local_294 - local_298;
    } while (local_298 <= local_294);
  }
LAB_001a2ffd:
  memcpy(pcVar9,L.temp_result,(ulong)local_294);
  (*pcVar17)(&L.alt_ctx);
  uVar6 = 0;
  do {
    (*pcVar15)(&L.alt_ctx,__src,uVar16);
    uVar6 = uVar6 + 1;
  } while (uVar6 < L.alt_result[0] + 0x10);
  (*pcVar14)(&L.alt_ctx,L.temp_result);
  if (uVar19 < 8) {
    if ((uVar19 & 4) == 0) {
      if (uVar19 != 0) {
        *__src = L.temp_result[0];
        if ((uVar19 & 2) != 0) {
          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =
               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);
        }
      }
    }
    else {
      *(undefined4 *)__src = L.temp_result._0_4_;
      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =
           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);
    }
  }
  else {
    *(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);
    *(undefined8 *)(__src + ((ulong)uVar19 - 8)) =
         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38);
    lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8);
    uVar19 = uVar19 + (int)lVar11 & 0xfffffff8;
    if (7 < uVar19) {
      uVar6 = 0;
      do {
        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =
             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));
        uVar6 = uVar6 + 8;
      } while (uVar6 < uVar19);
    }
  }
  uVar19 = 0;
  paVar2 = &L.ctx;
  do {
    (*pcVar17)(paVar2);
    if ((uVar19 & 1) == 0) {
      (*pcVar15)(paVar2,&L,local_298);
    }
    else {
      (*pcVar15)(paVar2,pcVar10,uVar13);
    }
    if (uVar19 != (uVar19 / 3) * 3) {
      (*pcVar15)(paVar2,__src,uVar16);
    }
    if (uVar19 != (uVar19 / 7) * 7) {
      (*pcVar15)(paVar2,pcVar10,uVar13);
    }
    if ((uVar19 & 1) == 0) {
      (*pcVar15)(paVar2,pcVar10,uVar13);
    }
    else {
      (*pcVar15)(paVar2,&L,local_298);
    }
    (*pcVar14)(paVar2,&L);
    uVar19 = uVar19 + 1;
  } while (local_290 != uVar19);
  pcVar21 = pcVar21 + uVar16 + 1;
  uVar6 = 0;
  uVar16 = 0x15;
  uVar19 = 0x2a;
  if (local_298 == 0x20) {
    uVar19 = 10;
    uVar6 = 0;
    uVar16 = 0x14;
    while( true ) {
      iVar5 = (int)uVar16;
      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |
                             (uint)L.alt_result[uVar16],4);
      if (iVar5 == 0x1d) break;
      uVar19 = iVar5 + 0xbU;
      if (0x1d < iVar5 + 0xbU) {
        uVar19 = iVar5 - 0x13;
      }
      uVar6 = iVar5 + 1;
      uVar4 = iVar5 - 9;
      if (iVar5 + 0x15U < 0x1e) {
        uVar4 = iVar5 + 0x15U;
      }
      uVar16 = (ulong)uVar4;
    }
    to64(pcVar21,(uint)(ushort)L.alt_result._30_2_,3);
  }
  else {
    while( true ) {
      iVar5 = (int)uVar16;
      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |
                             (uint)L.alt_result[uVar19],4);
      if (iVar5 == 0x14) break;
      uVar4 = iVar5 + 0x16U;
      if (0x3e < iVar5 + 0x16U) {
        uVar4 = iVar5 - 0x29;
      }
      uVar6 = iVar5 + 1;
      uVar19 = iVar5 + 0x2bU;
      if (0x3e < iVar5 + 0x2bU) {
        uVar19 = iVar5 - 0x14;
      }
      uVar16 = (ulong)uVar4;
    }
    to64(pcVar21,(uint)L.alt_result[0x3f],2);
  }
  free(pcVar10);
  free(__src);
  if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {
    return pcVar8;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



undefined1 * FUN_001a2c74(char *param_1,char *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  size_t sVar4;
  undefined1 *puVar5;
  char *pcVar6;
  char *pcVar7;
  undefined8 *__ptr;
  undefined8 *puVar8;
  long lVar9;
  ulong uVar10;
  ulong uVar11;
  code *pcVar12;
  code *pcVar13;
  ulong uVar14;
  code *pcVar15;
  undefined8 *puVar16;
  int iVar17;
  undefined8 *puVar18;
  char *pcVar19;
  long in_FS_OFFSET;
  bool bVar20;
  byte bVar21;
  uint local_298;
  uint local_294;
  uint local_290;
  char *local_270;
  byte local_268 [30];
  undefined2 local_24a;
  undefined8 uStack_230;
  undefined8 local_228;
  undefined1 local_1e8 [208];
  undefined1 local_118 [216];
  long local_40;
  
  bVar21 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  sVar4 = strlen(param_2);
  iVar17 = (int)sVar4 + 0x58;
  local_298 = 0x40;
  if (param_2[1] != '6') {
    iVar17 = (int)sVar4 + 0x2d;
    local_298 = 0x20;
  }
  puVar5 = (undefined1 *)FUN_0010e602(iVar17);
  *puVar5 = 0x24;
  puVar5[1] = param_2[1];
  pcVar19 = puVar5 + 3;
  puVar5[2] = 0x24;
  pcVar7 = param_2 + 3;
  iVar17 = strncmp(pcVar7,"rounds=%u$",7);
  local_290 = 5000;
  if (iVar17 == 0) {
    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);
    local_290 = 5000;
    if (*local_270 == '$') {
      pcVar7 = local_270 + 1;
      uVar3 = 999999999;
      if (uVar2 < 1000000000) {
        uVar3 = uVar2;
      }
      local_290 = 1000;
      if (999 < uVar3) {
        local_290 = uVar3;
      }
      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);
      pcVar19 = pcVar19 + iVar17;
    }
  }
  pcVar6 = strchrnul(pcVar7,0x24);
  uVar3 = (int)pcVar6 - (int)pcVar7;
  uVar2 = 0x10;
  if (uVar3 < 0x11) {
    uVar2 = uVar3;
  }
  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);
  strcpy(pcVar19,pcVar7);
  uVar14 = (ulong)uVar2;
  pcVar19[uVar14] = '$';
  sVar4 = strlen(param_1);
  __ptr = (undefined8 *)FUN_0010e627(param_1);
  bVar20 = local_298 != 0x20;
  pcVar12 = FUN_0019cf5c;
  if (!bVar20) {
    pcVar12 = FUN_0019cec9;
  }
  pcVar13 = FUN_0019ccd2;
  if (bVar20) {
    pcVar13 = FUN_0019ce29;
  }
  pcVar15 = FUN_0019cdf9;
  if (!bVar20) {
    pcVar15 = FUN_0019cdca;
  }
  local_294 = (uint)sVar4;
  (*pcVar15)(local_1e8);
  uVar11 = sVar4 & 0xffffffff;
  (*pcVar13)(local_1e8,__ptr);
  (*pcVar13)(local_1e8,pcVar7,uVar14);
  (*pcVar15)(local_118);
  (*pcVar13)(local_118,__ptr,uVar11);
  (*pcVar13)(local_118,pcVar7,uVar14);
  (*pcVar13)(local_118,__ptr,uVar11);
  (*pcVar12)(local_118,local_268);
  puVar8 = __ptr;
  if (local_298 < local_294) {
    uVar10 = sVar4 & 0xffffffff;
    do {
      (*pcVar13)(local_1e8,local_268,local_298);
      uVar3 = (int)uVar10 - local_298;
      uVar10 = (ulong)uVar3;
    } while (local_298 < uVar3);
    (*pcVar13)(local_1e8,local_268,uVar3);
  }
  else {
    (*pcVar13)(local_1e8,local_268,uVar11);
    if (local_294 == 0) {
      (*pcVar12)(local_1e8,local_268);
      (*pcVar15)(local_118);
      (*pcVar12)(local_118,&local_228);
      goto LAB_001a2ffd;
    }
  }
  uVar10 = sVar4 & 0xffffffff;
  do {
    if ((uVar10 & 1) == 0) {
      (*pcVar13)(local_1e8,__ptr,uVar11);
    }
    else {
      (*pcVar13)(local_1e8,local_268,local_298);
    }
    uVar3 = (uint)uVar10 >> 1;
    uVar10 = (ulong)uVar3;
  } while (uVar3 != 0);
  (*pcVar12)(local_1e8,local_268);
  (*pcVar15)(local_118);
  do {
    (*pcVar13)(local_118,__ptr,uVar11);
    uVar3 = (int)uVar10 + 1;
    uVar10 = (ulong)uVar3;
  } while (uVar3 < local_294);
  (*pcVar12)(local_118,&local_228);
  if (local_298 <= local_294) {
    do {
      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);
      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =
           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);
      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);
      puVar16 = (undefined8 *)((long)&local_228 - lVar9);
      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);
      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {
        *puVar18 = *puVar16;
        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;
        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;
      }
      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);
      local_294 = local_294 - local_298;
    } while (local_298 <= local_294);
  }
LAB_001a2ffd:
  memcpy(puVar8,&local_228,(ulong)local_294);
  (*pcVar15)(local_118);
  uVar3 = 0;
  do {
    (*pcVar13)(local_118,pcVar7,uVar14);
    uVar3 = uVar3 + 1;
  } while (uVar3 < local_268[0] + 0x10);
  (*pcVar12)(local_118,&local_228);
  if (uVar2 < 8) {
    if ((uVar2 & 4) == 0) {
      if (uVar2 != 0) {
        *pcVar7 = (char)local_228;
        if ((uVar2 & 2) != 0) {
          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =
               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);
        }
      }
    }
    else {
      *(undefined4 *)pcVar7 = (undefined4)local_228;
      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =
           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);
    }
  }
  else {
    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);
    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)
    ;
    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);
    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;
    if (7 < uVar2) {
      uVar3 = 0;
      do {
        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =
             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));
        uVar3 = uVar3 + 8;
      } while (uVar3 < uVar2);
    }
  }
  uVar2 = 0;
  do {
    (*pcVar15)(local_1e8);
    if ((uVar2 & 1) == 0) {
      (*pcVar13)(local_1e8,local_268,local_298);
    }
    else {
      (*pcVar13)(local_1e8,__ptr,uVar11);
    }
    if (uVar2 != (uVar2 / 3) * 3) {
      (*pcVar13)(local_1e8,pcVar7,uVar14);
    }
    if (uVar2 != (uVar2 / 7) * 7) {
      (*pcVar13)(local_1e8,__ptr,uVar11);
    }
    if ((uVar2 & 1) == 0) {
      (*pcVar13)(local_1e8,__ptr,uVar11);
    }
    else {
      (*pcVar13)(local_1e8,local_268,local_298);
    }
    (*pcVar12)(local_1e8,local_268);
    uVar2 = uVar2 + 1;
  } while (local_290 != uVar2);
  pcVar19 = pcVar19 + uVar14 + 1;
  uVar3 = 0;
  uVar14 = 0x15;
  uVar2 = 0x2a;
  if (local_298 == 0x20) {
    uVar2 = 10;
    uVar3 = 0;
    uVar14 = 0x14;
    while( true ) {
      iVar17 = (int)uVar14;
      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |
                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4
                                    );
      if (iVar17 == 0x1d) break;
      uVar2 = iVar17 + 0xbU;
      if (0x1d < iVar17 + 0xbU) {
        uVar2 = iVar17 - 0x13;
      }
      uVar3 = iVar17 + 1;
      uVar1 = iVar17 - 9;
      if (iVar17 + 0x15U < 0x1e) {
        uVar1 = iVar17 + 0x15U;
      }
      uVar14 = (ulong)uVar1;
    }
    FUN_001a236a(pcVar19,local_24a,3);
  }
  else {
    while( true ) {
      iVar17 = (int)uVar14;
      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |
                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4
                                    );
      if (iVar17 == 0x14) break;
      uVar1 = iVar17 + 0x16U;
      if (0x3e < iVar17 + 0x16U) {
        uVar1 = iVar17 - 0x29;
      }
      uVar3 = iVar17 + 1;
      uVar2 = iVar17 + 0x2bU;
      if (0x3e < iVar17 + 0x2bU) {
        uVar2 = iVar17 - 0x14;
      }
      uVar14 = (ulong)uVar1;
    }
    FUN_001a236a(pcVar19,uStack_230._7_1_,2);
  }
  free(__ptr);
  free(pcVar7);
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return puVar5;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x298
MOV RBX,RDI
MOV R13,RSI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x288],RAX
XOR EAX,EAX
MOV RDI,RSI
CALL 0x0010b4c0
LEA EDI,[RAX + 0x58]
MOV dword ptr [RSP + 0x30],0x40
CMP byte ptr [R13 + 0x1],0x36
JZ 0x001a2cc3
LEA EDI,[RAX + 0x2d]
MOV dword ptr [RSP + 0x30],0x20
MOV EDI,EDI
CALL 0x0010e602
MOV RCX,RAX
MOV qword ptr [RSP + 0x48],RAX
MOV byte ptr [RAX],0x24
MOVZX EAX,byte ptr [R13 + 0x1]
MOV byte ptr [RCX + 0x1],AL
LEA R12,[RCX + 0x3]
MOV byte ptr [RCX + 0x2],0x24
LEA RBP,[R13 + 0x3]
MOV EDX,0x7
LEA RSI,[0x1c1115]
MOV RDI,RBP
CALL 0x0010b1e0
MOV dword ptr [RSP + 0x38],0x1388
TEST EAX,EAX
JNZ 0x001a2d79
LEA RSI,[RSP + 0x58]
LEA RDI,[R13 + 0xa]
MOV EDX,0xa
CALL 0x001101c1
MOV RDX,qword ptr [RSP + 0x58]
MOV dword ptr [RSP + 0x38],0x1388
CMP byte ptr [RDX],0x24
JNZ 0x001a2d79
LEA RBP,[RDX + 0x1]
CMP EAX,0x3b9ac9ff
MOV EDX,0x3b9ac9ff
CMOVBE EDX,EAX
CMP EDX,0x3e8
MOV EAX,0x3e8
CMOVNC EAX,EDX
MOV dword ptr [RSP + 0x38],EAX
MOV R8D,EAX
LEA RCX,[0x1c1115]
MOV RDX,-0x1
MOV ESI,0x1
MOV RDI,R12
MOV EAX,0x0
CALL 0x0010c570
CDQE
ADD R12,RAX
MOV ESI,0x24
MOV RDI,RBP
CALL 0x0010b2e0
SUB RAX,RBP
CMP EAX,0x10
MOV R15D,0x10
CMOVBE R15D,EAX
MOV ESI,R15D
MOV RDI,RBP
CALL 0x0010e648
MOV RBP,RAX
MOV RSI,RAX
MOV RDI,R12
CALL 0x0010b210
MOV EAX,R15D
MOV qword ptr [RSP + 0x28],RAX
ADD R12,RAX
MOV qword ptr [RSP + 0x40],R12
MOV byte ptr [R12],0x24
MOV RDI,RBX
CALL 0x0010b4c0
MOV R12,RAX
MOV RDI,RBX
CALL 0x0010e627
MOV qword ptr [RSP + 0x8],RAX
MOV ECX,dword ptr [RSP + 0x30]
CMP ECX,0x20
LEA RDX,[0x19cec9]
LEA RAX,[0x19cf5c]
MOV RBX,RAX
CMOVZ RBX,RDX
MOV qword ptr [RSP + 0x18],RBX
LEA RBX,[0x19ccd2]
LEA RAX,[0x19ce29]
CMOVNZ RBX,RAX
LEA RDX,[0x19cdca]
LEA RAX,[0x19cdf9]
MOV RSI,RAX
CMOVZ RSI,RDX
MOV dword ptr [RSP + 0x34],R12D
LEA R14,[RSP + 0x60]
LEA R13,[RSP + 0xe0]
MOV RDI,R13
MOV qword ptr [RSP + 0x20],RSI
CALL RSI
MOV EDX,R12D
MOV qword ptr [RSP + 0x10],RDX
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,R13
CALL RBX
MOV RDX,qword ptr [RSP + 0x28]
MOV RSI,RBP
MOV RDI,R13
CALL RBX
LEA R13,[R14 + 0x150]
MOV RDI,R13
MOV RSI,qword ptr [RSP + 0x20]
CALL RSI
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,R13
CALL RBX
MOV RDX,qword ptr [RSP + 0x28]
MOV RSI,RBP
MOV RDI,R13
CALL RBX
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,R13
CALL RBX
MOV RSI,R14
MOV RDI,R13
MOV RAX,qword ptr [RSP + 0x18]
CALL RAX
MOV ECX,dword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x3c],ECX
CMP R12D,ECX
JBE 0x001a2eed
MOV R13D,R12D
LEA R14,[RSP + 0x60]
MOVSXD RDX,dword ptr [RSP + 0x30]
LEA RDI,[R14 + 0x80]
MOV RSI,R14
CALL RBX
MOV EAX,dword ptr [RSP + 0x3c]
SUB R13D,EAX
CMP R13D,EAX
JA 0x001a2ebd
MOV EDX,R13D
LEA RSI,[RSP + 0x60]
LEA RDI,[RSI + 0x80]
CALL RBX
JMP 0x001a2f09
LEA RSI,[RSP + 0x60]
LEA RDI,[RSI + 0x80]
MOV RDX,qword ptr [RSP + 0x10]
CALL RBX
TEST R12D,R12D
JZ 0x001a3352
MOV R13D,R12D
LEA R14,[RSP + 0x60]
TEST R13B,0x1
JZ 0x001a31d9
MOVSXD RDX,dword ptr [RSP + 0x30]
LEA RDI,[R14 + 0x80]
MOV RSI,R14
CALL RBX
SHR R13D,0x1
JNZ 0x001a2f11
LEA R14,[RSP + 0x60]
LEA RDI,[RSP + 0xe0]
MOV RSI,R14
MOV RAX,qword ptr [RSP + 0x18]
CALL RAX
LEA RDI,[R14 + 0x150]
MOV RAX,qword ptr [RSP + 0x20]
CALL RAX
LEA R14,[RSP + 0x1b0]
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,R14
CALL RBX
ADD R13D,0x1
CMP dword ptr [RSP + 0x34],R13D
JA 0x001a2f5e
LEA RSI,[RSP + 0xa0]
LEA RDI,[RSP + 0x1b0]
MOV RDX,qword ptr [RSP + 0x18]
CALL RDX
MOV RCX,qword ptr [RSP + 0x8]
MOV RAX,RCX
MOV ESI,dword ptr [RSP + 0x3c]
CMP R12D,ESI
JC 0x001a2ffd
MOV ECX,dword ptr [RSP + 0x30]
MOVSXD R10,ECX
LEA RDX,[RSP + 0xa0]
MOV R8D,ECX
LEA R9,[RDX + R8*0x1]
MOV R11D,dword ptr [RSP + 0x34]
MOV R12D,ESI
MOV RCX,qword ptr [RDX]
MOV qword ptr [RAX],RCX
MOV RCX,qword ptr [R9 + -0x8]
MOV qword ptr [RAX + R8*0x1 + -0x8],RCX
LEA RDI,[RAX + 0x8]
AND RDI,-0x8
MOV RCX,RAX
SUB RCX,RDI
MOV RSI,RDX
SUB RSI,RCX
ADD ECX,dword ptr [RSP + 0x30]
SHR ECX,0x3
MOV ECX,ECX
MOVSQ.REP RDI,RSI
ADD RAX,R10
SUB R11D,R12D
CMP R11D,R12D
JNC 0x001a2fbe
MOV dword ptr [RSP + 0x34],R11D
MOV EDX,dword ptr [RSP + 0x34]
LEA R12,[RSP + 0x60]
LEA RSI,[RSP + 0xa0]
MOV RDI,RAX
CALL 0x0010bb30
LEA RDI,[R12 + 0x150]
MOV RAX,qword ptr [RSP + 0x20]
CALL RAX
MOV R12D,0x0
LEA R13,[RSP + 0x1b0]
MOV RDX,qword ptr [RSP + 0x28]
MOV RSI,RBP
MOV RDI,R13
CALL RBX
ADD R12D,0x1
MOVZX EAX,byte ptr [RSP + 0x60]
ADD EAX,0x10
CMP EAX,R12D
JA 0x001a3033
LEA R13,[RSP + 0x60]
LEA R12,[R13 + 0x40]
LEA RDI,[R13 + 0x150]
MOV RSI,R12
MOV RAX,qword ptr [RSP + 0x18]
CALL RAX
CMP R15D,0x8
JNC 0x001a3220
TEST R15B,0x4
JZ 0x001a31f1
MOV EAX,dword ptr [R13 + 0x40]
MOV dword ptr [RBP],EAX
MOV R15D,R15D
MOV EAX,dword ptr [R12 + R15*0x1 + -0x4]
MOV dword ptr [RBP + R15*0x1 + -0x4],EAX
MOV R12D,0x0
LEA R14,[RSP + 0x60]
LEA R13,[R14 + 0x80]
MOVSXD R15,dword ptr [RSP + 0x30]
MOV RDI,R13
MOV RAX,qword ptr [RSP + 0x20]
CALL RAX
MOV EAX,R12D
AND EAX,0x1
MOV dword ptr [RSP + 0x34],EAX
JZ 0x001a327b
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,R13
CALL RBX
MOV EAX,0xaaaaaaab
MUL R12D
SHR EDX,0x1
LEA EAX,[RDX + RDX*0x2]
CMP R12D,EAX
JZ 0x001a30f2
MOV RDX,qword ptr [RSP + 0x28]
MOV RSI,RBP
MOV RDI,R13
CALL RBX
MOV EAX,0x24924925
MUL R12D
MOV EAX,R12D
SUB EAX,EDX
SHR EAX,0x1
ADD EDX,EAX
SHR EDX,0x2
LEA EAX,[RDX*0x8]
SUB EAX,EDX
CMP R12D,EAX
JZ 0x001a3123
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,R13
CALL RBX
CMP dword ptr [RSP + 0x34],0x0
JZ 0x001a328b
MOV RDX,R15
MOV RSI,R14
MOV RDI,R13
CALL RBX
MOV RSI,R14
MOV RDI,R13
MOV RAX,qword ptr [RSP + 0x18]
CALL RAX
ADD R12D,0x1
CMP dword ptr [RSP + 0x38],R12D
JNZ 0x001a30aa
MOV RDI,qword ptr [RSP + 0x40]
ADD RDI,0x1
MOV EAX,0x0
MOV EBX,0x15
MOV EDX,0x2a
CMP dword ptr [RSP + 0x30],0x20
JNZ 0x001a32eb
MOV EDX,0xa
MOV EAX,0x0
MOV EBX,0x14
MOV ECX,EAX
MOVZX ESI,byte ptr [RSP + RCX*0x1 + 0x60]
SHL ESI,0x10
MOV EDX,EDX
MOVZX EDX,byte ptr [RSP + RDX*0x1 + 0x60]
SHL EDX,0x8
OR ESI,EDX
MOV EAX,EBX
MOVZX EAX,byte ptr [RSP + RAX*0x1 + 0x60]
OR ESI,EAX
MOV EDX,0x4
CALL 0x001a236a
MOV RDI,RAX
CMP EBX,0x1d
JZ 0x001a329f
LEA EDX,[RBX + 0xb]
LEA EAX,[RBX + -0x13]
CMP EDX,0x1d
CMOVA EDX,EAX
LEA EAX,[RBX + 0x1]
LEA ECX,[RBX + 0x15]
SUB EBX,0x9
CMP ECX,0x1d
CMOVBE EBX,ECX
JMP 0x001a3187
LEA RDI,[R14 + 0x80]
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
CALL RBX
JMP 0x001a2f2c
TEST R15D,R15D
JZ 0x001a3093
MOVZX EAX,byte ptr [R13 + 0x40]
MOV byte ptr [RBP],AL
TEST R15B,0x2
JZ 0x001a3093
MOV R15D,R15D
MOVZX EAX,word ptr [R12 + R15*0x1 + -0x2]
MOV word ptr [RBP + R15*0x1 + -0x2],AX
JMP 0x001a3093
MOV RAX,qword ptr [RSP + 0xa0]
MOV qword ptr [RBP],RAX
MOV EAX,R15D
MOV RDX,qword ptr [R12 + RAX*0x1 + -0x8]
MOV qword ptr [RBP + RAX*0x1 + -0x8],RDX
LEA RDX,[RBP + 0x8]
AND RDX,-0x8
MOV RAX,RBP
SUB RAX,RDX
SUB R12,RAX
ADD R15D,EAX
AND R15D,0xfffffff8
CMP R15D,0x8
JC 0x001a3093
AND R15D,0xfffffff8
MOV EAX,0x0
MOV ECX,EAX
MOV RSI,qword ptr [R12 + RCX*0x1]
MOV qword ptr [RDX + RCX*0x1],RSI
ADD EAX,0x8
CMP EAX,R15D
JC 0x001a3264
JMP 0x001a3093
MOV RDX,R15
MOV RSI,R14
MOV RDI,R13
CALL RBX
JMP 0x001a30d3
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,R13
CALL RBX
JMP 0x001a3139
MOVZX ESI,byte ptr [RSP + 0x7f]
SHL ESI,0x8
MOVZX EAX,byte ptr [RSP + 0x7e]
OR ESI,EAX
MOV EDX,0x3
CALL 0x001a236a
MOV RDI,qword ptr [RSP + 0x8]
CALL 0x0010c5a0
MOV RDI,RBP
CALL 0x0010c5a0
MOV RAX,qword ptr [RSP + 0x48]
MOV RBX,qword ptr [RSP + 0x288]
XOR RBX,qword ptr FS:[0x28]
JZ 0x001a3391
CALL 0x0010b500
MOV ECX,EAX
MOVZX ESI,byte ptr [RSP + RCX*0x1 + 0x60]
SHL ESI,0x10
MOV EAX,EBX
MOVZX ECX,byte ptr [RSP + RAX*0x1 + 0x60]
SHL ECX,0x8
OR ESI,ECX
MOV EDX,EDX
MOVZX EAX,byte ptr [RSP + RDX*0x1 + 0x60]
OR ESI,EAX
MOV EDX,0x4
CALL 0x001a236a
MOV RDI,RAX
CMP EBX,0x14
JZ 0x001a333b
LEA ECX,[RBX + 0x16]
LEA EAX,[RBX + -0x29]
CMP ECX,0x3e
CMOVA ECX,EAX
LEA EAX,[RBX + 0x1]
LEA EDX,[RBX + 0x2b]
SUB EBX,0x14
CMP EDX,0x3e
CMOVA EDX,EBX
MOV EBX,ECX
JMP 0x001a32eb
MOVZX ESI,byte ptr [RSP + 0x9f]
MOV EDX,0x2
CALL 0x001a236a
JMP 0x001a32b8
LEA R12,[RSP + 0x60]
LEA RDI,[RSP + 0xe0]
MOV RSI,R12
MOV R14,qword ptr [RSP + 0x18]
CALL R14
LEA R13,[R12 + 0x150]
MOV RDI,R13
MOV RAX,qword ptr [RSP + 0x20]
CALL RAX
LEA RSI,[R12 + 0x40]
MOV RDI,R13
CALL R14
MOV RAX,qword ptr [RSP + 0x8]
JMP 0x001a2ffd
ADD RSP,0x298
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "undefined1 * FUN_001a2c74(char *param_1,char *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  size_t sVar4;\n  undefined1 *puVar5;\n  char *pcVar6;\n  char *pcVar7;\n  undefined8 *__ptr;\n  undefined8 *puVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ulong uVar14;\n  code *pcVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  undefined8 *puVar18;\n  char *pcVar19;\n  long in_FS_OFFSET;\n  bool bVar20;\n  byte bVar21;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *local_270;\n  byte local_268 [30];\n  undefined2 local_24a;\n  undefined8 uStack_230;\n  undefined8 local_228;\n  undefined1 local_1e8 [208];\n  undefined1 local_118 [216];\n  long local_40;\n  \n  bVar21 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar4 = strlen(param_2);\n  iVar17 = (int)sVar4 + 0x58;\n  local_298 = 0x40;\n  if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }\n  puVar5 = (undefined1 *)FUN_0010e602(iVar17);\n  *puVar5 = 0x24;\n  puVar5[1] = param_2[1];\n  pcVar19 = puVar5 + 3;\n  puVar5[2] = 0x24;\n  pcVar7 = param_2 + 3;\n  iVar17 = strncmp(pcVar7,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }\n  pcVar6 = strchrnul(pcVar7,0x24);\n  uVar3 = (int)pcVar6 - (int)pcVar7;\n  uVar2 = 0x10;\n  if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }\n  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);\n  strcpy(pcVar19,pcVar7);\n  uVar14 = (ulong)uVar2;\n  pcVar19[uVar14] = '$';\n  sVar4 = strlen(param_1);\n  __ptr = (undefined8 *)FUN_0010e627(param_1);\n  bVar20 = local_298 != 0x20;\n  pcVar12 = FUN_0019cf5c;\n  if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }\n  pcVar13 = FUN_0019ccd2;\n  if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }\n  pcVar15 = FUN_0019cdf9;\n  if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }\n  local_294 = (uint)sVar4;\n  (*pcVar15)(local_1e8);\n  uVar11 = sVar4 & 0xffffffff;\n  (*pcVar13)(local_1e8,__ptr);\n  (*pcVar13)(local_1e8,pcVar7,uVar14);\n  (*pcVar15)(local_118);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar13)(local_118,pcVar7,uVar14);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar12)(local_118,local_268);\n  puVar8 = __ptr;\n  if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar10 = sVar4 & 0xffffffff;\n  do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);\n  (*pcVar12)(local_1e8,local_268);\n  (*pcVar15)(local_118);\n  do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);\n  (*pcVar12)(local_118,&local_228);\n  if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);\n  (*pcVar15)(local_118);\n  uVar3 = 0;\n  do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);\n  (*pcVar12)(local_118,&local_228);\n  if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }\n  uVar2 = 0;\n  do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);\n  pcVar19 = pcVar19 + uVar14 + 1;\n  uVar3 = 0;\n  uVar14 = 0x15;\n  uVar2 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }\n  free(__ptr);\n  free(pcVar7);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "undefined1 * FUN_001a2c74(char *param_1,char *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  size_t sVar4;\n  undefined1 *puVar5;\n  char *pcVar6;\n  char *pcVar7;\n  undefined8 *__ptr;\n  undefined8 *puVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ulong uVar14;\n  code *pcVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  undefined8 *puVar18;\n  char *pcVar19;\n  long in_FS_OFFSET;\n  bool bVar20;\n  byte bVar21;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *local_270;\n  byte local_268 [30];\n  undefined2 local_24a;\n  undefined8 uStack_230;\n  undefined8 local_228;\n  undefined1 local_1e8 [208];\n  undefined1 local_118 [216];\n  long local_40;\n  \n  bVar21 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar4 = strlen(param_2);\n  iVar17 = (int)sVar4 + 0x58;\n  local_298 = 0x40;\n  if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }\n  puVar5 = (undefined1 *)FUN_0010e602(iVar17);\n  *puVar5 = 0x24;\n  puVar5[1] = param_2[1];\n  pcVar19 = puVar5 + 3;\n  puVar5[2] = 0x24;\n  pcVar7 = param_2 + 3;\n  iVar17 = strncmp(pcVar7,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }\n  pcVar6 = strchrnul(pcVar7,0x24);\n  uVar3 = (int)pcVar6 - (int)pcVar7;\n  uVar2 = 0x10;\n  if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }\n  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);\n  strcpy(pcVar19,pcVar7);\n  uVar14 = (ulong)uVar2;\n  pcVar19[uVar14] = '$';\n  sVar4 = strlen(param_1);\n  __ptr = (undefined8 *)FUN_0010e627(param_1);\n  bVar20 = local_298 != 0x20;\n  pcVar12 = FUN_0019cf5c;\n  if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }\n  pcVar13 = FUN_0019ccd2;\n  if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }\n  pcVar15 = FUN_0019cdf9;\n  if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }\n  local_294 = (uint)sVar4;\n  (*pcVar15)(local_1e8);\n  uVar11 = sVar4 & 0xffffffff;\n  (*pcVar13)(local_1e8,__ptr);\n  (*pcVar13)(local_1e8,pcVar7,uVar14);\n  (*pcVar15)(local_118);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar13)(local_118,pcVar7,uVar14);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar12)(local_118,local_268);\n  puVar8 = __ptr;\n  if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar10 = sVar4 & 0xffffffff;\n  do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);\n  (*pcVar12)(local_1e8,local_268);\n  (*pcVar15)(local_118);\n  do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);\n  (*pcVar12)(local_118,&local_228);\n  if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);\n  (*pcVar15)(local_118);\n  uVar3 = 0;\n  do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);\n  (*pcVar12)(local_118,&local_228);\n  if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }\n  uVar2 = 0;\n  do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);\n  pcVar19 = pcVar19 + uVar14 + 1;\n  uVar3 = 0;\n  uVar14 = 0x15;\n  uVar2 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }\n  free(__ptr);\n  free(pcVar7);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (pointer_declarator "* FUN_001a2c74(char *param_1,char *param_2)" * (function_declarator "FUN_001a2c74(char *param_1,char *param_2)" identifier (parameter_list "(char *param_1,char *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  size_t sVar4;\n  undefined1 *puVar5;\n  char *pcVar6;\n  char *pcVar7;\n  undefined8 *__ptr;\n  undefined8 *puVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ulong uVar14;\n  code *pcVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  undefined8 *puVar18;\n  char *pcVar19;\n  long in_FS_OFFSET;\n  bool bVar20;\n  byte bVar21;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *local_270;\n  byte local_268 [30];\n  undefined2 local_24a;\n  undefined8 uStack_230;\n  undefined8 local_228;\n  undefined1 local_1e8 [208];\n  undefined1 local_118 [216];\n  long local_40;\n  \n  bVar21 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar4 = strlen(param_2);\n  iVar17 = (int)sVar4 + 0x58;\n  local_298 = 0x40;\n  if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }\n  puVar5 = (undefined1 *)FUN_0010e602(iVar17);\n  *puVar5 = 0x24;\n  puVar5[1] = param_2[1];\n  pcVar19 = puVar5 + 3;\n  puVar5[2] = 0x24;\n  pcVar7 = param_2 + 3;\n  iVar17 = strncmp(pcVar7,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }\n  pcVar6 = strchrnul(pcVar7,0x24);\n  uVar3 = (int)pcVar6 - (int)pcVar7;\n  uVar2 = 0x10;\n  if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }\n  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);\n  strcpy(pcVar19,pcVar7);\n  uVar14 = (ulong)uVar2;\n  pcVar19[uVar14] = '$';\n  sVar4 = strlen(param_1);\n  __ptr = (undefined8 *)FUN_0010e627(param_1);\n  bVar20 = local_298 != 0x20;\n  pcVar12 = FUN_0019cf5c;\n  if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }\n  pcVar13 = FUN_0019ccd2;\n  if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }\n  pcVar15 = FUN_0019cdf9;\n  if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }\n  local_294 = (uint)sVar4;\n  (*pcVar15)(local_1e8);\n  uVar11 = sVar4 & 0xffffffff;\n  (*pcVar13)(local_1e8,__ptr);\n  (*pcVar13)(local_1e8,pcVar7,uVar14);\n  (*pcVar15)(local_118);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar13)(local_118,pcVar7,uVar14);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar12)(local_118,local_268);\n  puVar8 = __ptr;\n  if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar10 = sVar4 & 0xffffffff;\n  do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);\n  (*pcVar12)(local_1e8,local_268);\n  (*pcVar15)(local_118);\n  do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);\n  (*pcVar12)(local_118,&local_228);\n  if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);\n  (*pcVar15)(local_118);\n  uVar3 = 0;\n  do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);\n  (*pcVar12)(local_118,&local_228);\n  if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }\n  uVar2 = 0;\n  do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);\n  pcVar19 = pcVar19 + uVar14 + 1;\n  uVar3 = 0;\n  uVar14 = 0x15;\n  uVar2 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }\n  free(__ptr);\n  free(pcVar7);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined8 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "undefined8 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "char *pcVar19;" primitive_type (pointer_declarator "*pcVar19" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "uint local_298;" type_identifier identifier ;) (declaration "uint local_294;" type_identifier identifier ;) (declaration "uint local_290;" type_identifier identifier ;) (declaration "char *local_270;" primitive_type (pointer_declarator "*local_270" * identifier) ;) (declaration "byte local_268 [30];" type_identifier (array_declarator "local_268 [30]" identifier [ number_literal ]) ;) (declaration "undefined2 local_24a;" type_identifier identifier ;) (declaration "undefined8 uStack_230;" type_identifier identifier ;) (declaration "undefined8 local_228;" type_identifier identifier ;) (declaration "undefined1 local_1e8 [208];" type_identifier (array_declarator "local_1e8 [208]" identifier [ number_literal ]) ;) (declaration "undefined1 local_118 [216];" type_identifier (array_declarator "local_118 [216]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar17 = (int)sVar4 + 0x58;" (assignment_expression "iVar17 = (int)sVar4 + 0x58" identifier = (binary_expression "(int)sVar4 + 0x58" (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_298 = 0x40;" (assignment_expression "local_298 = 0x40" identifier = number_literal) ;) (if_statement "if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }" if (parenthesized_expression "(param_2[1] != '6')" ( (binary_expression "param_2[1] != '6'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'6'" ' character ')) )) (compound_statement "{\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }" { (expression_statement "iVar17 = (int)sVar4 + 0x2d;" (assignment_expression "iVar17 = (int)sVar4 + 0x2d" identifier = (binary_expression "(int)sVar4 + 0x2d" (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_298 = 0x20;" (assignment_expression "local_298 = 0x20" identifier = number_literal) ;) })) (expression_statement "puVar5 = (undefined1 *)FUN_0010e602(iVar17);" (assignment_expression "puVar5 = (undefined1 *)FUN_0010e602(iVar17)" identifier = (cast_expression "(undefined1 *)FUN_0010e602(iVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e602(iVar17)" identifier (argument_list "(iVar17)" ( identifier ))))) ;) (expression_statement "*puVar5 = 0x24;" (assignment_expression "*puVar5 = 0x24" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5[1] = param_2[1];" (assignment_expression "puVar5[1] = param_2[1]" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar19 = puVar5 + 3;" (assignment_expression "pcVar19 = puVar5 + 3" identifier = (binary_expression "puVar5 + 3" identifier + number_literal)) ;) (expression_statement "puVar5[2] = 0x24;" (assignment_expression "puVar5[2] = 0x24" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar7 = param_2 + 3;" (assignment_expression "pcVar7 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) (expression_statement "iVar17 = strncmp(pcVar7,"rounds=%u$",7);" (assignment_expression "iVar17 = strncmp(pcVar7,"rounds=%u$",7)" identifier = (call_expression "strncmp(pcVar7,"rounds=%u$",7)" identifier (argument_list "(pcVar7,"rounds=%u$",7)" ( identifier , (string_literal ""rounds=%u$"" " string_content ") , number_literal )))) ;) (expression_statement "local_290 = 5000;" (assignment_expression "local_290 = 5000" identifier = number_literal) ;) (if_statement "if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }" { (expression_statement "uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);" (assignment_expression "uVar2 = FUN_001101c1(param_2 + 10,&local_270,10)" identifier = (call_expression "FUN_001101c1(param_2 + 10,&local_270,10)" identifier (argument_list "(param_2 + 10,&local_270,10)" ( (binary_expression "param_2 + 10" identifier + number_literal) , (pointer_expression "&local_270" & identifier) , number_literal )))) ;) (expression_statement "local_290 = 5000;" (assignment_expression "local_290 = 5000" identifier = number_literal) ;) (if_statement "if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }" if (parenthesized_expression "(*local_270 == '$')" ( (binary_expression "*local_270 == '$'" (pointer_expression "*local_270" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }" { (expression_statement "pcVar7 = local_270 + 1;" (assignment_expression "pcVar7 = local_270 + 1" identifier = (binary_expression "local_270 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = 999999999;" (assignment_expression "uVar3 = 999999999" identifier = number_literal) ;) (if_statement "if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }" if (parenthesized_expression "(uVar2 < 1000000000)" ( (binary_expression "uVar2 < 1000000000" identifier < number_literal) )) (compound_statement "{\n        uVar3 = uVar2;\n      }" { (expression_statement "uVar3 = uVar2;" (assignment_expression "uVar3 = uVar2" identifier = identifier) ;) })) (expression_statement "local_290 = 1000;" (assignment_expression "local_290 = 1000" identifier = number_literal) ;) (if_statement "if (999 < uVar3) {\n        local_290 = uVar3;\n      }" if (parenthesized_expression "(999 < uVar3)" ( (binary_expression "999 < uVar3" number_literal < identifier) )) (compound_statement "{\n        local_290 = uVar3;\n      }" { (expression_statement "local_290 = uVar3;" (assignment_expression "local_290 = uVar3" identifier = identifier) ;) })) (expression_statement "iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);" (assignment_expression "iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" identifier = (call_expression "__sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" identifier (argument_list "(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" ( identifier , number_literal , number_literal , (string_literal ""rounds=%u$"" " string_content ") , identifier )))) ;) (expression_statement "pcVar19 = pcVar19 + iVar17;" (assignment_expression "pcVar19 = pcVar19 + iVar17" identifier = (binary_expression "pcVar19 + iVar17" identifier + identifier)) ;) })) })) (expression_statement "pcVar6 = strchrnul(pcVar7,0x24);" (assignment_expression "pcVar6 = strchrnul(pcVar7,0x24)" identifier = (call_expression "strchrnul(pcVar7,0x24)" identifier (argument_list "(pcVar7,0x24)" ( identifier , number_literal )))) ;) (expression_statement "uVar3 = (int)pcVar6 - (int)pcVar7;" (assignment_expression "uVar3 = (int)pcVar6 - (int)pcVar7" identifier = (binary_expression "(int)pcVar6 - (int)pcVar7" (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = 0x10;" (assignment_expression "uVar2 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }" if (parenthesized_expression "(uVar3 < 0x11)" ( (binary_expression "uVar3 < 0x11" identifier < number_literal) )) (compound_statement "{\n    uVar2 = uVar3;\n  }" { (expression_statement "uVar2 = uVar3;" (assignment_expression "uVar2 = uVar3" identifier = identifier) ;) })) (expression_statement "pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);" (assignment_expression "pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2)" identifier = (cast_expression "(char *)FUN_0010e648(pcVar7,uVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e648(pcVar7,uVar2)" identifier (argument_list "(pcVar7,uVar2)" ( identifier , identifier ))))) ;) (expression_statement "strcpy(pcVar19,pcVar7);" (call_expression "strcpy(pcVar19,pcVar7)" identifier (argument_list "(pcVar19,pcVar7)" ( identifier , identifier ))) ;) (expression_statement "uVar14 = (ulong)uVar2;" (assignment_expression "uVar14 = (ulong)uVar2" identifier = (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pcVar19[uVar14] = '$';" (assignment_expression "pcVar19[uVar14] = '$'" (subscript_expression "pcVar19[uVar14]" identifier [ identifier ]) = (char_literal "'$'" ' character ')) ;) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "__ptr = (undefined8 *)FUN_0010e627(param_1);" (assignment_expression "__ptr = (undefined8 *)FUN_0010e627(param_1)" identifier = (cast_expression "(undefined8 *)FUN_0010e627(param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e627(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "bVar20 = local_298 != 0x20;" (assignment_expression "bVar20 = local_298 != 0x20" identifier = (binary_expression "local_298 != 0x20" identifier != number_literal)) ;) (expression_statement "pcVar12 = FUN_0019cf5c;" (assignment_expression "pcVar12 = FUN_0019cf5c" identifier = identifier) ;) (if_statement "if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n    pcVar12 = FUN_0019cec9;\n  }" { (expression_statement "pcVar12 = FUN_0019cec9;" (assignment_expression "pcVar12 = FUN_0019cec9" identifier = identifier) ;) })) (expression_statement "pcVar13 = FUN_0019ccd2;" (assignment_expression "pcVar13 = FUN_0019ccd2" identifier = identifier) ;) (if_statement "if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n    pcVar13 = FUN_0019ce29;\n  }" { (expression_statement "pcVar13 = FUN_0019ce29;" (assignment_expression "pcVar13 = FUN_0019ce29" identifier = identifier) ;) })) (expression_statement "pcVar15 = FUN_0019cdf9;" (assignment_expression "pcVar15 = FUN_0019cdf9" identifier = identifier) ;) (if_statement "if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n    pcVar15 = FUN_0019cdca;\n  }" { (expression_statement "pcVar15 = FUN_0019cdca;" (assignment_expression "pcVar15 = FUN_0019cdca" identifier = identifier) ;) })) (expression_statement "local_294 = (uint)sVar4;" (assignment_expression "local_294 = (uint)sVar4" identifier = (cast_expression "(uint)sVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "(*pcVar15)(local_1e8);" (call_expression "(*pcVar15)(local_1e8)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_1e8)" ( identifier ))) ;) (expression_statement "uVar11 = sVar4 & 0xffffffff;" (assignment_expression "uVar11 = sVar4 & 0xffffffff" identifier = (binary_expression "sVar4 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "(*pcVar13)(local_1e8,__ptr);" (call_expression "(*pcVar13)(local_1e8,__ptr)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr)" ( identifier , identifier ))) ;) (expression_statement "(*pcVar13)(local_1e8,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_1e8,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,pcVar7,uVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_118)" ( identifier ))) ;) (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar13)(local_118,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_118,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,pcVar7,uVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar12)(local_118,local_268);" (call_expression "(*pcVar12)(local_118,local_268)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_118,local_268)" ( identifier , identifier ))) ;) (expression_statement "puVar8 = __ptr;" (assignment_expression "puVar8 = __ptr" identifier = identifier) ;) (if_statement "if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" if (parenthesized_expression "(local_298 < local_294)" ( (binary_expression "local_298 < local_294" identifier < identifier) )) (compound_statement "{\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }" { (expression_statement "uVar10 = sVar4 & 0xffffffff;" (assignment_expression "uVar10 = sVar4 & 0xffffffff" identifier = (binary_expression "sVar4 & 0xffffffff" identifier & number_literal)) ;) (do_statement "do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);" do (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    }" { (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,local_298)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar3 = (int)uVar10 - local_298;" (assignment_expression "uVar3 = (int)uVar10 - local_298" identifier = (binary_expression "(int)uVar10 - local_298" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(local_298 < uVar3)" ( (binary_expression "local_298 < uVar3" identifier < identifier) )) ;) (expression_statement "(*pcVar13)(local_1e8,local_268,uVar3);" (call_expression "(*pcVar13)(local_1e8,local_268,uVar3)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,uVar3)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" else (compound_statement "{\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" { (expression_statement "(*pcVar13)(local_1e8,local_268,uVar11);" (call_expression "(*pcVar13)(local_1e8,local_268,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,uVar11)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }" if (parenthesized_expression "(local_294 == 0)" ( (binary_expression "local_294 == 0" identifier == number_literal) )) (compound_statement "{\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }" { (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_1e8,local_268)" ( identifier , identifier ))) ;) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_118)" ( identifier ))) ;) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_118,&local_228)" ( identifier , (pointer_expression "&local_228" & identifier) ))) ;) (goto_statement "goto LAB_001a2ffd;" goto statement_identifier ;) })) }))) (expression_statement "uVar10 = sVar4 & 0xffffffff;" (assignment_expression "uVar10 = sVar4 & 0xffffffff" identifier = (binary_expression "sVar4 & 0xffffffff" identifier & number_literal)) ;) (do_statement "do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);" do (compound_statement "{\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  }" { (if_statement "if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" if (parenthesized_expression "((uVar10 & 1) == 0)" ( (binary_expression "(uVar10 & 1) == 0" (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" { (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" else (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" { (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,local_298)" ( identifier , identifier , identifier ))) ;) }))) (expression_statement "uVar3 = (uint)uVar10 >> 1;" (assignment_expression "uVar3 = (uint)uVar10 >> 1" identifier = (binary_expression "(uint)uVar10 >> 1" (cast_expression "(uint)uVar10" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) ;) (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_1e8,local_268)" ( identifier , identifier ))) ;) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_118)" ( identifier ))) ;) (do_statement "do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);" do (compound_statement "{\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  }" { (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar3 = (int)uVar10 + 1;" (assignment_expression "uVar3 = (int)uVar10 + 1" identifier = (binary_expression "(int)uVar10 + 1" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar3 < local_294)" ( (binary_expression "uVar3 < local_294" identifier < identifier) )) ;) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_118,&local_228)" ( identifier , (pointer_expression "&local_228" & identifier) ))) ;) (if_statement "if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }" if (parenthesized_expression "(local_298 <= local_294)" ( (binary_expression "local_298 <= local_294" identifier <= identifier) )) (compound_statement "{\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }" { (do_statement "do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);" do (compound_statement "{\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    }" { (expression_statement "*puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);" (assignment_expression "*puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228)" (pointer_expression "*puVar8" * identifier) = (call_expression "CONCAT44(local_228._4_4_,(undefined4)local_228)" identifier (argument_list "(local_228._4_4_,(undefined4)local_228)" ( (field_expression "local_228._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)local_228" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) ;) (expression_statement "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);" (assignment_expression "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298)" (pointer_expression "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8))" * (cast_expression "(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + ((ulong)local_298 - 8))" ( (binary_expression "(long)puVar8 + ((ulong)local_298 - 8)" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((ulong)local_298 - 8)" ( (binary_expression "(ulong)local_298 - 8" (cast_expression "(ulong)local_298" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)&uStack_230 + (ulong)local_298)" * (cast_expression "(undefined8 *)((long)&uStack_230 + (ulong)local_298)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_230 + (ulong)local_298)" ( (binary_expression "(long)&uStack_230 + (ulong)local_298" (cast_expression "(long)&uStack_230" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_230" & identifier)) + (cast_expression "(ulong)local_298" ( (type_descriptor "ulong" type_identifier) ) identifier)) ))))) ;) (expression_statement "lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar8 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar8 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar16 = (undefined8 *)((long)&local_228 - lVar9);" (assignment_expression "puVar16 = (undefined8 *)((long)&local_228 - lVar9)" identifier = (cast_expression "(undefined8 *)((long)&local_228 - lVar9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_228 - lVar9)" ( (binary_expression "(long)&local_228 - lVar9" (cast_expression "(long)&local_228" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_228" & identifier)) - identifier) )))) ;) (expression_statement "puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar8 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar8 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }" for ( (assignment_expression "uVar10 = (ulong)((int)lVar9 + local_298 >> 3)" identifier = (call_expression "(ulong)((int)lVar9 + local_298 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)lVar9 + local_298 >> 3)" ( (binary_expression "(int)lVar9 + local_298 >> 3" (binary_expression "(int)lVar9 + local_298" (cast_expression "(int)lVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) >> number_literal) )))) ; (binary_expression "uVar10 != 0" identifier != number_literal) ; (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }" { (expression_statement "*puVar18 = *puVar16;" (assignment_expression "*puVar18 = *puVar16" (pointer_expression "*puVar18" * identifier) = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "puVar16 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar16 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar18 = puVar18 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "puVar18 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar18 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);" (assignment_expression "puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298)" identifier = (cast_expression "(undefined8 *)((long)puVar8 + (long)(int)local_298)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + (long)(int)local_298)" ( (binary_expression "(long)puVar8 + (long)(int)local_298" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(long)(int)local_298" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_298" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) (expression_statement "local_294 = local_294 - local_298;" (assignment_expression "local_294 = local_294 - local_298" identifier = (binary_expression "local_294 - local_298" identifier - identifier)) ;) }) while (parenthesized_expression "(local_298 <= local_294)" ( (binary_expression "local_298 <= local_294" identifier <= identifier) )) ;) })) (labeled_statement "LAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);" statement_identifier : (expression_statement "memcpy(puVar8,&local_228,(ulong)local_294);" (call_expression "memcpy(puVar8,&local_228,(ulong)local_294)" identifier (argument_list "(puVar8,&local_228,(ulong)local_294)" ( identifier , (pointer_expression "&local_228" & identifier) , (cast_expression "(ulong)local_294" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;)) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_118)" ( identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);" do (compound_statement "{\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  }" { (expression_statement "(*pcVar13)(local_118,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_118,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,pcVar7,uVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < local_268[0] + 0x10)" ( (binary_expression "uVar3 < local_268[0] + 0x10" identifier < (binary_expression "local_268[0] + 0x10" (subscript_expression "local_268[0]" identifier [ number_literal ]) + number_literal)) )) ;) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_118,&local_228)" ( identifier , (pointer_expression "&local_228" & identifier) ))) ;) (if_statement "if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" if (parenthesized_expression "(uVar2 < 8)" ( (binary_expression "uVar2 < 8" identifier < number_literal) )) (compound_statement "{\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }" { (if_statement "if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" if (parenthesized_expression "((uVar2 & 4) == 0)" ( (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" ( (binary_expression "uVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }" { (if_statement "if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }" { (expression_statement "*pcVar7 = (char)local_228;" (assignment_expression "*pcVar7 = (char)local_228" (pointer_expression "*pcVar7" * identifier) = (cast_expression "(char)local_228" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }" if (parenthesized_expression "((uVar2 & 2) != 0)" ( (binary_expression "(uVar2 & 2) != 0" (parenthesized_expression "(uVar2 & 2)" ( (binary_expression "uVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }" { (expression_statement "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);" (assignment_expression "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" (pointer_expression "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2))" * (cast_expression "(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 2))" ( (binary_expression "pcVar7 + ((ulong)uVar2 - 2)" identifier + (parenthesized_expression "((ulong)uVar2 - 2)" ( (binary_expression "(ulong)uVar2 - 2" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" * (cast_expression "(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2 + 6)" ( (binary_expression "(long)&uStack_230 + (ulong)uVar2 + 6" (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_230" & identifier)) + (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) })) })) }) (else_clause "else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" else (compound_statement "{\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" { (expression_statement "*(undefined4 *)pcVar7 = (undefined4)local_228;" (assignment_expression "*(undefined4 *)pcVar7 = (undefined4)local_228" (pointer_expression "*(undefined4 *)pcVar7" * (cast_expression "(undefined4 *)pcVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined4)local_228" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);" (assignment_expression "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" (pointer_expression "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4))" * (cast_expression "(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 4))" ( (binary_expression "pcVar7 + ((ulong)uVar2 - 4)" identifier + (parenthesized_expression "((ulong)uVar2 - 4)" ( (binary_expression "(ulong)uVar2 - 4" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" * (cast_expression "(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2 + 4)" ( (binary_expression "(long)&uStack_230 + (ulong)uVar2 + 4" (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_230" & identifier)) + (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" else (compound_statement "{\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" { (expression_statement "*(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);" (assignment_expression "*(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228)" (pointer_expression "*(ulong *)pcVar7" * (cast_expression "(ulong *)pcVar7" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(local_228._4_4_,(undefined4)local_228)" identifier (argument_list "(local_228._4_4_,(undefined4)local_228)" ( (field_expression "local_228._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)local_228" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) ;) (expression_statement "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;" (assignment_expression "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" (pointer_expression "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8))" * (cast_expression "(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 8))" ( (binary_expression "pcVar7 + ((ulong)uVar2 - 8)" identifier + (parenthesized_expression "((ulong)uVar2 - 8)" ( (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" * (cast_expression "(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2)" ( (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_230" & identifier)) + (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ))))) ;) (expression_statement "lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);" (assignment_expression "lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" (cast_expression "(long)pcVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(pcVar7 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar7 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar7 + 8)" ( (binary_expression "pcVar7 + 8" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;" (assignment_expression "uVar2 = uVar2 + (int)lVar9 & 0xfffffff8" identifier = (binary_expression "uVar2 + (int)lVar9 & 0xfffffff8" (binary_expression "uVar2 + (int)lVar9" identifier + (cast_expression "(int)lVar9" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal)) ;) (if_statement "if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }" if (parenthesized_expression "(7 < uVar2)" ( (binary_expression "7 < uVar2" number_literal < identifier) )) (compound_statement "{\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);" do (compound_statement "{\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      }" { (expression_statement "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));" (assignment_expression "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" (pointer_expression "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" * (cast_expression "(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" ( (binary_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3" (parenthesized_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(pcVar7 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar7 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar7 + 8)" ( (binary_expression "pcVar7 + 8" identifier + number_literal) ))) & number_literal) )) + (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) = (pointer_expression "*(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" * (cast_expression "(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_228 + ((ulong)uVar3 - lVar9))" ( (binary_expression "(long)&local_228 + ((ulong)uVar3 - lVar9)" (cast_expression "(long)&local_228" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_228" & identifier)) + (parenthesized_expression "((ulong)uVar3 - lVar9)" ( (binary_expression "(ulong)uVar3 - lVar9" (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) - identifier) ))) ))))) ;) (expression_statement "uVar3 = uVar3 + 8;" (assignment_expression "uVar3 = uVar3 + 8" identifier = (binary_expression "uVar3 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) ;) })) }))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);" do (compound_statement "{\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  }" { (expression_statement "(*pcVar15)(local_1e8);" (call_expression "(*pcVar15)(local_1e8)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_1e8)" ( identifier ))) ;) (if_statement "if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" if (parenthesized_expression "((uVar2 & 1) == 0)" ( (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" { (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,local_298)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" else (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" { (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) }))) (if_statement "if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }" if (parenthesized_expression "(uVar2 != (uVar2 / 3) * 3)" ( (binary_expression "uVar2 != (uVar2 / 3) * 3" identifier != (binary_expression "(uVar2 / 3) * 3" (parenthesized_expression "(uVar2 / 3)" ( (binary_expression "uVar2 / 3" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }" { (expression_statement "(*pcVar13)(local_1e8,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_1e8,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,pcVar7,uVar14)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" if (parenthesized_expression "(uVar2 != (uVar2 / 7) * 7)" ( (binary_expression "uVar2 != (uVar2 / 7) * 7" identifier != (binary_expression "(uVar2 / 7) * 7" (parenthesized_expression "(uVar2 / 7)" ( (binary_expression "uVar2 / 7" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" { (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" if (parenthesized_expression "((uVar2 & 1) == 0)" ( (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" { (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" else (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" { (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,local_298)" ( identifier , identifier , identifier ))) ;) }))) (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_1e8,local_268)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_290 != uVar2)" ( (binary_expression "local_290 != uVar2" identifier != identifier) )) ;) (expression_statement "pcVar19 = pcVar19 + uVar14 + 1;" (assignment_expression "pcVar19 = pcVar19 + uVar14 + 1" identifier = (binary_expression "pcVar19 + uVar14 + 1" (binary_expression "pcVar19 + uVar14" identifier + identifier) + number_literal)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = 0x15;" (assignment_expression "uVar14 = 0x15" identifier = number_literal) ;) (expression_statement "uVar2 = 0x2a;" (assignment_expression "uVar2 = 0x2a" identifier = number_literal) ;) (if_statement "if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" if (parenthesized_expression "(local_298 == 0x20)" ( (binary_expression "local_298 == 0x20" identifier == number_literal) )) (compound_statement "{\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }" { (expression_statement "uVar2 = 10;" (assignment_expression "uVar2 = 10" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = 0x14;" (assignment_expression "uVar14 = 0x14" identifier = number_literal) ;) (while_statement "while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }" { (expression_statement "iVar17 = (int)uVar14;" (assignment_expression "iVar17 = (int)uVar14" identifier = (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );" (assignment_expression "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" identifier = (cast_expression "(char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" identifier (argument_list "(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" ( identifier , (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14]" (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8" (binary_expression "(uint)local_268[uVar3] << 0x10" (cast_expression "(uint)local_268[uVar3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar3]" identifier [ identifier ])) << number_literal) | (binary_expression "(uint)local_268[uVar2] << 8" (cast_expression "(uint)local_268[uVar2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar2]" identifier [ identifier ])) << number_literal)) | (cast_expression "(uint)local_268[uVar14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar14]" identifier [ identifier ]))) , number_literal ))))) ;) (if_statement "if (iVar17 == 0x1d) break;" if (parenthesized_expression "(iVar17 == 0x1d)" ( (binary_expression "iVar17 == 0x1d" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = iVar17 + 0xbU;" (assignment_expression "uVar2 = iVar17 + 0xbU" identifier = (binary_expression "iVar17 + 0xbU" identifier + number_literal)) ;) (if_statement "if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }" if (parenthesized_expression "(0x1d < iVar17 + 0xbU)" ( (binary_expression "0x1d < iVar17 + 0xbU" number_literal < (binary_expression "iVar17 + 0xbU" identifier + number_literal)) )) (compound_statement "{\n        uVar2 = iVar17 - 0x13;\n      }" { (expression_statement "uVar2 = iVar17 - 0x13;" (assignment_expression "uVar2 = iVar17 - 0x13" identifier = (binary_expression "iVar17 - 0x13" identifier - number_literal)) ;) })) (expression_statement "uVar3 = iVar17 + 1;" (assignment_expression "uVar3 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = iVar17 - 9;" (assignment_expression "uVar1 = iVar17 - 9" identifier = (binary_expression "iVar17 - 9" identifier - number_literal)) ;) (if_statement "if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }" if (parenthesized_expression "(iVar17 + 0x15U < 0x1e)" ( (binary_expression "iVar17 + 0x15U < 0x1e" (binary_expression "iVar17 + 0x15U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        uVar1 = iVar17 + 0x15U;\n      }" { (expression_statement "uVar1 = iVar17 + 0x15U;" (assignment_expression "uVar1 = iVar17 + 0x15U" identifier = (binary_expression "iVar17 + 0x15U" identifier + number_literal)) ;) })) (expression_statement "uVar14 = (ulong)uVar1;" (assignment_expression "uVar14 = (ulong)uVar1" identifier = (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "FUN_001a236a(pcVar19,local_24a,3);" (call_expression "FUN_001a236a(pcVar19,local_24a,3)" identifier (argument_list "(pcVar19,local_24a,3)" ( identifier , identifier , number_literal ))) ;) }) (else_clause "else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" else (compound_statement "{\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" { (while_statement "while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }" { (expression_statement "iVar17 = (int)uVar14;" (assignment_expression "iVar17 = (int)uVar14" identifier = (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );" (assignment_expression "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" identifier = (cast_expression "(char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" identifier (argument_list "(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" ( identifier , (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2]" (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8" (binary_expression "(uint)local_268[uVar3] << 0x10" (cast_expression "(uint)local_268[uVar3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar3]" identifier [ identifier ])) << number_literal) | (binary_expression "(uint)local_268[uVar14] << 8" (cast_expression "(uint)local_268[uVar14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar14]" identifier [ identifier ])) << number_literal)) | (cast_expression "(uint)local_268[uVar2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar2]" identifier [ identifier ]))) , number_literal ))))) ;) (if_statement "if (iVar17 == 0x14) break;" if (parenthesized_expression "(iVar17 == 0x14)" ( (binary_expression "iVar17 == 0x14" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar1 = iVar17 + 0x16U;" (assignment_expression "uVar1 = iVar17 + 0x16U" identifier = (binary_expression "iVar17 + 0x16U" identifier + number_literal)) ;) (if_statement "if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }" if (parenthesized_expression "(0x3e < iVar17 + 0x16U)" ( (binary_expression "0x3e < iVar17 + 0x16U" number_literal < (binary_expression "iVar17 + 0x16U" identifier + number_literal)) )) (compound_statement "{\n        uVar1 = iVar17 - 0x29;\n      }" { (expression_statement "uVar1 = iVar17 - 0x29;" (assignment_expression "uVar1 = iVar17 - 0x29" identifier = (binary_expression "iVar17 - 0x29" identifier - number_literal)) ;) })) (expression_statement "uVar3 = iVar17 + 1;" (assignment_expression "uVar3 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = iVar17 + 0x2bU;" (assignment_expression "uVar2 = iVar17 + 0x2bU" identifier = (binary_expression "iVar17 + 0x2bU" identifier + number_literal)) ;) (if_statement "if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }" if (parenthesized_expression "(0x3e < iVar17 + 0x2bU)" ( (binary_expression "0x3e < iVar17 + 0x2bU" number_literal < (binary_expression "iVar17 + 0x2bU" identifier + number_literal)) )) (compound_statement "{\n        uVar2 = iVar17 - 0x14;\n      }" { (expression_statement "uVar2 = iVar17 - 0x14;" (assignment_expression "uVar2 = iVar17 - 0x14" identifier = (binary_expression "iVar17 - 0x14" identifier - number_literal)) ;) })) (expression_statement "uVar14 = (ulong)uVar1;" (assignment_expression "uVar14 = (ulong)uVar1" identifier = (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "FUN_001a236a(pcVar19,uStack_230._7_1_,2);" (call_expression "FUN_001a236a(pcVar19,uStack_230._7_1_,2)" identifier (argument_list "(pcVar19,uStack_230._7_1_,2)" ( identifier , (field_expression "uStack_230._7_1_" identifier . field_identifier) , number_literal ))) ;) }))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return puVar5;\n  }" { (return_statement "return puVar5;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "char * sha_crypt(char *key_data,char *salt_data)\n\n{\n  anon_union_208_2_947302e2_for_alt_ctx *paVar1;\n  anon_union_208_2_947302e2_for_ctx *paVar2;\n  long lVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char *pcVar9;\n  uchar *__src;\n  char *pcVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  code *pcVar14;\n  code *pcVar15;\n  ulong uVar16;\n  code *pcVar17;\n  undefined8 *puVar18;\n  uint uVar19;\n  undefined8 *puVar20;\n  char *pcVar21;\n  long in_FS_OFFSET;\n  bool bVar22;\n  byte bVar23;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *endp;\n  anon_struct_544_4_e531aae2 L;\n  \n  bVar23 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar7 = strlen(salt_data);\n  uVar19 = (int)sVar7 + 0x58;\n  local_298 = 0x40;\n  if (salt_data[1] != '6') {\n    uVar19 = (int)sVar7 + 0x2d;\n    local_298 = 0x20;\n  }\n  pcVar8 = (char *)xzalloc((ulong)uVar19);\n  *pcVar8 = '$';\n  pcVar8[1] = salt_data[1];\n  pcVar21 = pcVar8 + 3;\n  pcVar8[2] = '$';\n  pcVar10 = salt_data + 3;\n  iVar5 = strncmp(pcVar10,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar5 == 0) {\n    uVar19 = bb_strtou(salt_data + 10,&endp,10);\n    local_290 = 5000;\n    if (*endp == '$') {\n      pcVar10 = endp + 1;\n      uVar6 = 999999999;\n      if (uVar19 < 1000000000) {\n        uVar6 = uVar19;\n      }\n      local_290 = 1000;\n      if (999 < uVar6) {\n        local_290 = uVar6;\n      }\n      iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar21 = pcVar21 + iVar5;\n    }\n  }\n  pcVar9 = strchrnul(pcVar10,0x24);\n  uVar6 = (int)pcVar9 - (int)pcVar10;\n  uVar19 = 0x10;\n  if (uVar6 < 0x11) {\n    uVar19 = uVar6;\n  }\n  __src = (uchar *)xstrndup(pcVar10,uVar19);\n  strcpy(pcVar21,(char *)__src);\n  uVar16 = (ulong)uVar19;\n  pcVar21[uVar16] = '$';\n  sVar7 = strlen(key_data);\n  pcVar10 = xstrdup(key_data);\n  bVar22 = local_298 != 0x20;\n  pcVar14 = sha512_end;\n  if (!bVar22) {\n    pcVar14 = sha1_end;\n  }\n  pcVar15 = md5_hash;\n  if (bVar22) {\n    pcVar15 = sha512_hash;\n  }\n  pcVar17 = sha512_begin;\n  if (!bVar22) {\n    pcVar17 = sha256_begin;\n  }\n  local_294 = (uint)sVar7;\n  paVar2 = &L.ctx;\n  (*pcVar17)(paVar2);\n  uVar13 = sVar7 & 0xffffffff;\n  (*pcVar15)(paVar2,pcVar10);\n  (*pcVar15)(paVar2,__src,uVar16);\n  paVar1 = &L.alt_ctx;\n  (*pcVar17)(paVar1);\n  (*pcVar15)(paVar1,pcVar10,uVar13);\n  (*pcVar15)(paVar1,__src,uVar16);\n  (*pcVar15)(paVar1,pcVar10,uVar13);\n  (*pcVar14)(paVar1,&L);\n  pcVar9 = pcVar10;\n  if (local_298 < local_294) {\n    uVar12 = sVar7 & 0xffffffff;\n    do {\n      (*pcVar15)(&L.ctx,&L,local_298);\n      uVar6 = (int)uVar12 - local_298;\n      uVar12 = (ulong)uVar6;\n    } while (local_298 < uVar6);\n    (*pcVar15)(&L.ctx,&L,uVar6);\n  }\n  else {\n    (*pcVar15)(&L.ctx,&L,uVar13);\n    if (local_294 == 0) {\n      (*pcVar14)(&L.ctx,&L);\n      (*pcVar17)(&L.alt_ctx);\n      (*pcVar14)(&L.alt_ctx,L.temp_result);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar12 = sVar7 & 0xffffffff;\n  do {\n    if ((uVar12 & 1) == 0) {\n      (*pcVar15)(&L.ctx,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(&L.ctx,&L,local_298);\n    }\n    uVar6 = (uint)uVar12 >> 1;\n    uVar12 = (ulong)uVar6;\n  } while (uVar6 != 0);\n  (*pcVar14)(&L.ctx,&L);\n  (*pcVar17)(&L.alt_ctx);\n  do {\n    (*pcVar15)(&L.alt_ctx,pcVar10,uVar13);\n    uVar6 = (int)uVar12 + 1;\n    uVar12 = (ulong)uVar6;\n  } while (uVar6 < local_294);\n  (*pcVar14)(&L.alt_ctx,L.temp_result);\n  if (local_298 <= local_294) {\n    do {\n      *(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n      *(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);\n      lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));\n      puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }\n      pcVar9 = pcVar9 + (int)local_298;\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(pcVar9,L.temp_result,(ulong)local_294);\n  (*pcVar17)(&L.alt_ctx);\n  uVar6 = 0;\n  do {\n    (*pcVar15)(&L.alt_ctx,__src,uVar16);\n    uVar6 = uVar6 + 1;\n  } while (uVar6 < L.alt_result[0] + 0x10);\n  (*pcVar14)(&L.alt_ctx,L.temp_result);\n  if (uVar19 < 8) {\n    if ((uVar19 & 4) == 0) {\n      if (uVar19 != 0) {\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)__src = L.temp_result._0_4_;\n      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);\n    }\n  }\n  else {\n    *(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n    *(undefined8 *)(__src + ((ulong)uVar19 - 8)) =\n         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38);\n    lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8);\n    uVar19 = uVar19 + (int)lVar11 & 0xfffffff8;\n    if (7 < uVar19) {\n      uVar6 = 0;\n      do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);\n    }\n  }\n  uVar19 = 0;\n  paVar2 = &L.ctx;\n  do {\n    (*pcVar17)(paVar2);\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    else {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if (uVar19 != (uVar19 / 3) * 3) {\n      (*pcVar15)(paVar2,__src,uVar16);\n    }\n    if (uVar19 != (uVar19 / 7) * 7) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    (*pcVar14)(paVar2,&L);\n    uVar19 = uVar19 + 1;\n  } while (local_290 != uVar19);\n  pcVar21 = pcVar21 + uVar16 + 1;\n  uVar6 = 0;\n  uVar16 = 0x15;\n  uVar19 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar19 = 10;\n    uVar6 = 0;\n    uVar16 = 0x14;\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4);\n      if (iVar5 == 0x1d) break;\n      uVar19 = iVar5 + 0xbU;\n      if (0x1d < iVar5 + 0xbU) {\n        uVar19 = iVar5 - 0x13;\n      }\n      uVar6 = iVar5 + 1;\n      uVar4 = iVar5 - 9;\n      if (iVar5 + 0x15U < 0x1e) {\n        uVar4 = iVar5 + 0x15U;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)(ushort)L.alt_result._30_2_,3);\n  }\n  else {\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);\n      if (iVar5 == 0x14) break;\n      uVar4 = iVar5 + 0x16U;\n      if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }\n      uVar6 = iVar5 + 1;\n      uVar19 = iVar5 + 0x2bU;\n      if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)L.alt_result[0x3f],2);\n  }\n  free(pcVar10);\n  free(__src);\n  if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar8;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "char * sha_crypt(char *key_data,char *salt_data)\n\n{\n  anon_union_208_2_947302e2_for_alt_ctx *paVar1;\n  anon_union_208_2_947302e2_for_ctx *paVar2;\n  long lVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char *pcVar9;\n  uchar *__src;\n  char *pcVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  code *pcVar14;\n  code *pcVar15;\n  ulong uVar16;\n  code *pcVar17;\n  undefined8 *puVar18;\n  uint uVar19;\n  undefined8 *puVar20;\n  char *pcVar21;\n  long in_FS_OFFSET;\n  bool bVar22;\n  byte bVar23;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *endp;\n  anon_struct_544_4_e531aae2 L;\n  \n  bVar23 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar7 = strlen(salt_data);\n  uVar19 = (int)sVar7 + 0x58;\n  local_298 = 0x40;\n  if (salt_data[1] != '6') {\n    uVar19 = (int)sVar7 + 0x2d;\n    local_298 = 0x20;\n  }\n  pcVar8 = (char *)xzalloc((ulong)uVar19);\n  *pcVar8 = '$';\n  pcVar8[1] = salt_data[1];\n  pcVar21 = pcVar8 + 3;\n  pcVar8[2] = '$';\n  pcVar10 = salt_data + 3;\n  iVar5 = strncmp(pcVar10,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar5 == 0) {\n    uVar19 = bb_strtou(salt_data + 10,&endp,10);\n    local_290 = 5000;\n    if (*endp == '$') {\n      pcVar10 = endp + 1;\n      uVar6 = 999999999;\n      if (uVar19 < 1000000000) {\n        uVar6 = uVar19;\n      }\n      local_290 = 1000;\n      if (999 < uVar6) {\n        local_290 = uVar6;\n      }\n      iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar21 = pcVar21 + iVar5;\n    }\n  }\n  pcVar9 = strchrnul(pcVar10,0x24);\n  uVar6 = (int)pcVar9 - (int)pcVar10;\n  uVar19 = 0x10;\n  if (uVar6 < 0x11) {\n    uVar19 = uVar6;\n  }\n  __src = (uchar *)xstrndup(pcVar10,uVar19);\n  strcpy(pcVar21,(char *)__src);\n  uVar16 = (ulong)uVar19;\n  pcVar21[uVar16] = '$';\n  sVar7 = strlen(key_data);\n  pcVar10 = xstrdup(key_data);\n  bVar22 = local_298 != 0x20;\n  pcVar14 = sha512_end;\n  if (!bVar22) {\n    pcVar14 = sha1_end;\n  }\n  pcVar15 = md5_hash;\n  if (bVar22) {\n    pcVar15 = sha512_hash;\n  }\n  pcVar17 = sha512_begin;\n  if (!bVar22) {\n    pcVar17 = sha256_begin;\n  }\n  local_294 = (uint)sVar7;\n  paVar2 = &L.ctx;\n  (*pcVar17)(paVar2);\n  uVar13 = sVar7 & 0xffffffff;\n  (*pcVar15)(paVar2,pcVar10);\n  (*pcVar15)(paVar2,__src,uVar16);\n  paVar1 = &L.alt_ctx;\n  (*pcVar17)(paVar1);\n  (*pcVar15)(paVar1,pcVar10,uVar13);\n  (*pcVar15)(paVar1,__src,uVar16);\n  (*pcVar15)(paVar1,pcVar10,uVar13);\n  (*pcVar14)(paVar1,&L);\n  pcVar9 = pcVar10;\n  if (local_298 < local_294) {\n    uVar12 = sVar7 & 0xffffffff;\n    do {\n      (*pcVar15)(&L.ctx,&L,local_298);\n      uVar6 = (int)uVar12 - local_298;\n      uVar12 = (ulong)uVar6;\n    } while (local_298 < uVar6);\n    (*pcVar15)(&L.ctx,&L,uVar6);\n  }\n  else {\n    (*pcVar15)(&L.ctx,&L,uVar13);\n    if (local_294 == 0) {\n      (*pcVar14)(&L.ctx,&L);\n      (*pcVar17)(&L.alt_ctx);\n      (*pcVar14)(&L.alt_ctx,L.temp_result);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar12 = sVar7 & 0xffffffff;\n  do {\n    if ((uVar12 & 1) == 0) {\n      (*pcVar15)(&L.ctx,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(&L.ctx,&L,local_298);\n    }\n    uVar6 = (uint)uVar12 >> 1;\n    uVar12 = (ulong)uVar6;\n  } while (uVar6 != 0);\n  (*pcVar14)(&L.ctx,&L);\n  (*pcVar17)(&L.alt_ctx);\n  do {\n    (*pcVar15)(&L.alt_ctx,pcVar10,uVar13);\n    uVar6 = (int)uVar12 + 1;\n    uVar12 = (ulong)uVar6;\n  } while (uVar6 < local_294);\n  (*pcVar14)(&L.alt_ctx,L.temp_result);\n  if (local_298 <= local_294) {\n    do {\n      *(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n      *(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);\n      lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));\n      puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }\n      pcVar9 = pcVar9 + (int)local_298;\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(pcVar9,L.temp_result,(ulong)local_294);\n  (*pcVar17)(&L.alt_ctx);\n  uVar6 = 0;\n  do {\n    (*pcVar15)(&L.alt_ctx,__src,uVar16);\n    uVar6 = uVar6 + 1;\n  } while (uVar6 < L.alt_result[0] + 0x10);\n  (*pcVar14)(&L.alt_ctx,L.temp_result);\n  if (uVar19 < 8) {\n    if ((uVar19 & 4) == 0) {\n      if (uVar19 != 0) {\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)__src = L.temp_result._0_4_;\n      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);\n    }\n  }\n  else {\n    *(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n    *(undefined8 *)(__src + ((ulong)uVar19 - 8)) =\n         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38);\n    lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8);\n    uVar19 = uVar19 + (int)lVar11 & 0xfffffff8;\n    if (7 < uVar19) {\n      uVar6 = 0;\n      do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);\n    }\n  }\n  uVar19 = 0;\n  paVar2 = &L.ctx;\n  do {\n    (*pcVar17)(paVar2);\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    else {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if (uVar19 != (uVar19 / 3) * 3) {\n      (*pcVar15)(paVar2,__src,uVar16);\n    }\n    if (uVar19 != (uVar19 / 7) * 7) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    (*pcVar14)(paVar2,&L);\n    uVar19 = uVar19 + 1;\n  } while (local_290 != uVar19);\n  pcVar21 = pcVar21 + uVar16 + 1;\n  uVar6 = 0;\n  uVar16 = 0x15;\n  uVar19 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar19 = 10;\n    uVar6 = 0;\n    uVar16 = 0x14;\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4);\n      if (iVar5 == 0x1d) break;\n      uVar19 = iVar5 + 0xbU;\n      if (0x1d < iVar5 + 0xbU) {\n        uVar19 = iVar5 - 0x13;\n      }\n      uVar6 = iVar5 + 1;\n      uVar4 = iVar5 - 9;\n      if (iVar5 + 0x15U < 0x1e) {\n        uVar4 = iVar5 + 0x15U;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)(ushort)L.alt_result._30_2_,3);\n  }\n  else {\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);\n      if (iVar5 == 0x14) break;\n      uVar4 = iVar5 + 0x16U;\n      if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }\n      uVar6 = iVar5 + 1;\n      uVar19 = iVar5 + 0x2bU;\n      if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)L.alt_result[0x3f],2);\n  }\n  free(pcVar10);\n  free(__src);\n  if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar8;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (pointer_declarator "* sha_crypt(char *key_data,char *salt_data)" * (function_declarator "sha_crypt(char *key_data,char *salt_data)" identifier (parameter_list "(char *key_data,char *salt_data)" ( (parameter_declaration "char *key_data" primitive_type (pointer_declarator "*key_data" * identifier)) , (parameter_declaration "char *salt_data" primitive_type (pointer_declarator "*salt_data" * identifier)) )))) (compound_statement "{\n  anon_union_208_2_947302e2_for_alt_ctx *paVar1;\n  anon_union_208_2_947302e2_for_ctx *paVar2;\n  long lVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char *pcVar9;\n  uchar *__src;\n  char *pcVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  code *pcVar14;\n  code *pcVar15;\n  ulong uVar16;\n  code *pcVar17;\n  undefined8 *puVar18;\n  uint uVar19;\n  undefined8 *puVar20;\n  char *pcVar21;\n  long in_FS_OFFSET;\n  bool bVar22;\n  byte bVar23;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *endp;\n  anon_struct_544_4_e531aae2 L;\n  \n  bVar23 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar7 = strlen(salt_data);\n  uVar19 = (int)sVar7 + 0x58;\n  local_298 = 0x40;\n  if (salt_data[1] != '6') {\n    uVar19 = (int)sVar7 + 0x2d;\n    local_298 = 0x20;\n  }\n  pcVar8 = (char *)xzalloc((ulong)uVar19);\n  *pcVar8 = '$';\n  pcVar8[1] = salt_data[1];\n  pcVar21 = pcVar8 + 3;\n  pcVar8[2] = '$';\n  pcVar10 = salt_data + 3;\n  iVar5 = strncmp(pcVar10,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar5 == 0) {\n    uVar19 = bb_strtou(salt_data + 10,&endp,10);\n    local_290 = 5000;\n    if (*endp == '$') {\n      pcVar10 = endp + 1;\n      uVar6 = 999999999;\n      if (uVar19 < 1000000000) {\n        uVar6 = uVar19;\n      }\n      local_290 = 1000;\n      if (999 < uVar6) {\n        local_290 = uVar6;\n      }\n      iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar21 = pcVar21 + iVar5;\n    }\n  }\n  pcVar9 = strchrnul(pcVar10,0x24);\n  uVar6 = (int)pcVar9 - (int)pcVar10;\n  uVar19 = 0x10;\n  if (uVar6 < 0x11) {\n    uVar19 = uVar6;\n  }\n  __src = (uchar *)xstrndup(pcVar10,uVar19);\n  strcpy(pcVar21,(char *)__src);\n  uVar16 = (ulong)uVar19;\n  pcVar21[uVar16] = '$';\n  sVar7 = strlen(key_data);\n  pcVar10 = xstrdup(key_data);\n  bVar22 = local_298 != 0x20;\n  pcVar14 = sha512_end;\n  if (!bVar22) {\n    pcVar14 = sha1_end;\n  }\n  pcVar15 = md5_hash;\n  if (bVar22) {\n    pcVar15 = sha512_hash;\n  }\n  pcVar17 = sha512_begin;\n  if (!bVar22) {\n    pcVar17 = sha256_begin;\n  }\n  local_294 = (uint)sVar7;\n  paVar2 = &L.ctx;\n  (*pcVar17)(paVar2);\n  uVar13 = sVar7 & 0xffffffff;\n  (*pcVar15)(paVar2,pcVar10);\n  (*pcVar15)(paVar2,__src,uVar16);\n  paVar1 = &L.alt_ctx;\n  (*pcVar17)(paVar1);\n  (*pcVar15)(paVar1,pcVar10,uVar13);\n  (*pcVar15)(paVar1,__src,uVar16);\n  (*pcVar15)(paVar1,pcVar10,uVar13);\n  (*pcVar14)(paVar1,&L);\n  pcVar9 = pcVar10;\n  if (local_298 < local_294) {\n    uVar12 = sVar7 & 0xffffffff;\n    do {\n      (*pcVar15)(&L.ctx,&L,local_298);\n      uVar6 = (int)uVar12 - local_298;\n      uVar12 = (ulong)uVar6;\n    } while (local_298 < uVar6);\n    (*pcVar15)(&L.ctx,&L,uVar6);\n  }\n  else {\n    (*pcVar15)(&L.ctx,&L,uVar13);\n    if (local_294 == 0) {\n      (*pcVar14)(&L.ctx,&L);\n      (*pcVar17)(&L.alt_ctx);\n      (*pcVar14)(&L.alt_ctx,L.temp_result);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar12 = sVar7 & 0xffffffff;\n  do {\n    if ((uVar12 & 1) == 0) {\n      (*pcVar15)(&L.ctx,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(&L.ctx,&L,local_298);\n    }\n    uVar6 = (uint)uVar12 >> 1;\n    uVar12 = (ulong)uVar6;\n  } while (uVar6 != 0);\n  (*pcVar14)(&L.ctx,&L);\n  (*pcVar17)(&L.alt_ctx);\n  do {\n    (*pcVar15)(&L.alt_ctx,pcVar10,uVar13);\n    uVar6 = (int)uVar12 + 1;\n    uVar12 = (ulong)uVar6;\n  } while (uVar6 < local_294);\n  (*pcVar14)(&L.alt_ctx,L.temp_result);\n  if (local_298 <= local_294) {\n    do {\n      *(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n      *(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);\n      lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));\n      puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }\n      pcVar9 = pcVar9 + (int)local_298;\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(pcVar9,L.temp_result,(ulong)local_294);\n  (*pcVar17)(&L.alt_ctx);\n  uVar6 = 0;\n  do {\n    (*pcVar15)(&L.alt_ctx,__src,uVar16);\n    uVar6 = uVar6 + 1;\n  } while (uVar6 < L.alt_result[0] + 0x10);\n  (*pcVar14)(&L.alt_ctx,L.temp_result);\n  if (uVar19 < 8) {\n    if ((uVar19 & 4) == 0) {\n      if (uVar19 != 0) {\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)__src = L.temp_result._0_4_;\n      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);\n    }\n  }\n  else {\n    *(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n    *(undefined8 *)(__src + ((ulong)uVar19 - 8)) =\n         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38);\n    lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8);\n    uVar19 = uVar19 + (int)lVar11 & 0xfffffff8;\n    if (7 < uVar19) {\n      uVar6 = 0;\n      do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);\n    }\n  }\n  uVar19 = 0;\n  paVar2 = &L.ctx;\n  do {\n    (*pcVar17)(paVar2);\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    else {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if (uVar19 != (uVar19 / 3) * 3) {\n      (*pcVar15)(paVar2,__src,uVar16);\n    }\n    if (uVar19 != (uVar19 / 7) * 7) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    (*pcVar14)(paVar2,&L);\n    uVar19 = uVar19 + 1;\n  } while (local_290 != uVar19);\n  pcVar21 = pcVar21 + uVar16 + 1;\n  uVar6 = 0;\n  uVar16 = 0x15;\n  uVar19 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar19 = 10;\n    uVar6 = 0;\n    uVar16 = 0x14;\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4);\n      if (iVar5 == 0x1d) break;\n      uVar19 = iVar5 + 0xbU;\n      if (0x1d < iVar5 + 0xbU) {\n        uVar19 = iVar5 - 0x13;\n      }\n      uVar6 = iVar5 + 1;\n      uVar4 = iVar5 - 9;\n      if (iVar5 + 0x15U < 0x1e) {\n        uVar4 = iVar5 + 0x15U;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)(ushort)L.alt_result._30_2_,3);\n  }\n  else {\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);\n      if (iVar5 == 0x14) break;\n      uVar4 = iVar5 + 0x16U;\n      if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }\n      uVar6 = iVar5 + 1;\n      uVar19 = iVar5 + 0x2bU;\n      if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)L.alt_result[0x3f],2);\n  }\n  free(pcVar10);\n  free(__src);\n  if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar8;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "anon_union_208_2_947302e2_for_alt_ctx *paVar1;" type_identifier (pointer_declarator "*paVar1" * identifier) ;) (declaration "anon_union_208_2_947302e2_for_ctx *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "uchar *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "undefined8 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "undefined8 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "char *pcVar21;" primitive_type (pointer_declarator "*pcVar21" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar22;" primitive_type identifier ;) (declaration "byte bVar23;" type_identifier identifier ;) (declaration "uint local_298;" type_identifier identifier ;) (declaration "uint local_294;" type_identifier identifier ;) (declaration "uint local_290;" type_identifier identifier ;) (declaration "char *endp;" primitive_type (pointer_declarator "*endp" * identifier) ;) (declaration "anon_struct_544_4_e531aae2 L;" type_identifier identifier ;) (expression_statement "bVar23 = 0;" (assignment_expression "bVar23 = 0" identifier = number_literal) ;) (expression_statement "lVar3 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar3 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "sVar7 = strlen(salt_data);" (assignment_expression "sVar7 = strlen(salt_data)" identifier = (call_expression "strlen(salt_data)" identifier (argument_list "(salt_data)" ( identifier )))) ;) (expression_statement "uVar19 = (int)sVar7 + 0x58;" (assignment_expression "uVar19 = (int)sVar7 + 0x58" identifier = (binary_expression "(int)sVar7 + 0x58" (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_298 = 0x40;" (assignment_expression "local_298 = 0x40" identifier = number_literal) ;) (if_statement "if (salt_data[1] != '6') {\n    uVar19 = (int)sVar7 + 0x2d;\n    local_298 = 0x20;\n  }" if (parenthesized_expression "(salt_data[1] != '6')" ( (binary_expression "salt_data[1] != '6'" (subscript_expression "salt_data[1]" identifier [ number_literal ]) != (char_literal "'6'" ' character ')) )) (compound_statement "{\n    uVar19 = (int)sVar7 + 0x2d;\n    local_298 = 0x20;\n  }" { (expression_statement "uVar19 = (int)sVar7 + 0x2d;" (assignment_expression "uVar19 = (int)sVar7 + 0x2d" identifier = (binary_expression "(int)sVar7 + 0x2d" (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_298 = 0x20;" (assignment_expression "local_298 = 0x20" identifier = number_literal) ;) })) (expression_statement "pcVar8 = (char *)xzalloc((ulong)uVar19);" (assignment_expression "pcVar8 = (char *)xzalloc((ulong)uVar19)" identifier = (cast_expression "(char *)xzalloc((ulong)uVar19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xzalloc((ulong)uVar19)" identifier (argument_list "((ulong)uVar19)" ( (cast_expression "(ulong)uVar19" ( (type_descriptor "ulong" type_identifier) ) identifier) ))))) ;) (expression_statement "*pcVar8 = '$';" (assignment_expression "*pcVar8 = '$'" (pointer_expression "*pcVar8" * identifier) = (char_literal "'$'" ' character ')) ;) (expression_statement "pcVar8[1] = salt_data[1];" (assignment_expression "pcVar8[1] = salt_data[1]" (subscript_expression "pcVar8[1]" identifier [ number_literal ]) = (subscript_expression "salt_data[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar21 = pcVar8 + 3;" (assignment_expression "pcVar21 = pcVar8 + 3" identifier = (binary_expression "pcVar8 + 3" identifier + number_literal)) ;) (expression_statement "pcVar8[2] = '$';" (assignment_expression "pcVar8[2] = '$'" (subscript_expression "pcVar8[2]" identifier [ number_literal ]) = (char_literal "'$'" ' character ')) ;) (expression_statement "pcVar10 = salt_data + 3;" (assignment_expression "pcVar10 = salt_data + 3" identifier = (binary_expression "salt_data + 3" identifier + number_literal)) ;) (expression_statement "iVar5 = strncmp(pcVar10,"rounds=%u$",7);" (assignment_expression "iVar5 = strncmp(pcVar10,"rounds=%u$",7)" identifier = (call_expression "strncmp(pcVar10,"rounds=%u$",7)" identifier (argument_list "(pcVar10,"rounds=%u$",7)" ( identifier , (string_literal ""rounds=%u$"" " string_content ") , number_literal )))) ;) (expression_statement "local_290 = 5000;" (assignment_expression "local_290 = 5000" identifier = number_literal) ;) (if_statement "if (iVar5 == 0) {\n    uVar19 = bb_strtou(salt_data + 10,&endp,10);\n    local_290 = 5000;\n    if (*endp == '$') {\n      pcVar10 = endp + 1;\n      uVar6 = 999999999;\n      if (uVar19 < 1000000000) {\n        uVar6 = uVar19;\n      }\n      local_290 = 1000;\n      if (999 < uVar6) {\n        local_290 = uVar6;\n      }\n      iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar21 = pcVar21 + iVar5;\n    }\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar19 = bb_strtou(salt_data + 10,&endp,10);\n    local_290 = 5000;\n    if (*endp == '$') {\n      pcVar10 = endp + 1;\n      uVar6 = 999999999;\n      if (uVar19 < 1000000000) {\n        uVar6 = uVar19;\n      }\n      local_290 = 1000;\n      if (999 < uVar6) {\n        local_290 = uVar6;\n      }\n      iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar21 = pcVar21 + iVar5;\n    }\n  }" { (expression_statement "uVar19 = bb_strtou(salt_data + 10,&endp,10);" (assignment_expression "uVar19 = bb_strtou(salt_data + 10,&endp,10)" identifier = (call_expression "bb_strtou(salt_data + 10,&endp,10)" identifier (argument_list "(salt_data + 10,&endp,10)" ( (binary_expression "salt_data + 10" identifier + number_literal) , (pointer_expression "&endp" & identifier) , number_literal )))) ;) (expression_statement "local_290 = 5000;" (assignment_expression "local_290 = 5000" identifier = number_literal) ;) (if_statement "if (*endp == '$') {\n      pcVar10 = endp + 1;\n      uVar6 = 999999999;\n      if (uVar19 < 1000000000) {\n        uVar6 = uVar19;\n      }\n      local_290 = 1000;\n      if (999 < uVar6) {\n        local_290 = uVar6;\n      }\n      iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar21 = pcVar21 + iVar5;\n    }" if (parenthesized_expression "(*endp == '$')" ( (binary_expression "*endp == '$'" (pointer_expression "*endp" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      pcVar10 = endp + 1;\n      uVar6 = 999999999;\n      if (uVar19 < 1000000000) {\n        uVar6 = uVar19;\n      }\n      local_290 = 1000;\n      if (999 < uVar6) {\n        local_290 = uVar6;\n      }\n      iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar21 = pcVar21 + iVar5;\n    }" { (expression_statement "pcVar10 = endp + 1;" (assignment_expression "pcVar10 = endp + 1" identifier = (binary_expression "endp + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = 999999999;" (assignment_expression "uVar6 = 999999999" identifier = number_literal) ;) (if_statement "if (uVar19 < 1000000000) {\n        uVar6 = uVar19;\n      }" if (parenthesized_expression "(uVar19 < 1000000000)" ( (binary_expression "uVar19 < 1000000000" identifier < number_literal) )) (compound_statement "{\n        uVar6 = uVar19;\n      }" { (expression_statement "uVar6 = uVar19;" (assignment_expression "uVar6 = uVar19" identifier = identifier) ;) })) (expression_statement "local_290 = 1000;" (assignment_expression "local_290 = 1000" identifier = number_literal) ;) (if_statement "if (999 < uVar6) {\n        local_290 = uVar6;\n      }" if (parenthesized_expression "(999 < uVar6)" ( (binary_expression "999 < uVar6" number_literal < identifier) )) (compound_statement "{\n        local_290 = uVar6;\n      }" { (expression_statement "local_290 = uVar6;" (assignment_expression "local_290 = uVar6" identifier = identifier) ;) })) (expression_statement "iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290);" (assignment_expression "iVar5 = __sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290)" identifier = (call_expression "__sprintf_chk(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290)" identifier (argument_list "(pcVar21,1,0xffffffffffffffff,"rounds=%u$",local_290)" ( identifier , number_literal , number_literal , (string_literal ""rounds=%u$"" " string_content ") , identifier )))) ;) (expression_statement "pcVar21 = pcVar21 + iVar5;" (assignment_expression "pcVar21 = pcVar21 + iVar5" identifier = (binary_expression "pcVar21 + iVar5" identifier + identifier)) ;) })) })) (expression_statement "pcVar9 = strchrnul(pcVar10,0x24);" (assignment_expression "pcVar9 = strchrnul(pcVar10,0x24)" identifier = (call_expression "strchrnul(pcVar10,0x24)" identifier (argument_list "(pcVar10,0x24)" ( identifier , number_literal )))) ;) (expression_statement "uVar6 = (int)pcVar9 - (int)pcVar10;" (assignment_expression "uVar6 = (int)pcVar9 - (int)pcVar10" identifier = (binary_expression "(int)pcVar9 - (int)pcVar10" (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar19 = 0x10;" (assignment_expression "uVar19 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar6 < 0x11) {\n    uVar19 = uVar6;\n  }" if (parenthesized_expression "(uVar6 < 0x11)" ( (binary_expression "uVar6 < 0x11" identifier < number_literal) )) (compound_statement "{\n    uVar19 = uVar6;\n  }" { (expression_statement "uVar19 = uVar6;" (assignment_expression "uVar19 = uVar6" identifier = identifier) ;) })) (expression_statement "__src = (uchar *)xstrndup(pcVar10,uVar19);" (assignment_expression "__src = (uchar *)xstrndup(pcVar10,uVar19)" identifier = (cast_expression "(uchar *)xstrndup(pcVar10,uVar19)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xstrndup(pcVar10,uVar19)" identifier (argument_list "(pcVar10,uVar19)" ( identifier , identifier ))))) ;) (expression_statement "strcpy(pcVar21,(char *)__src);" (call_expression "strcpy(pcVar21,(char *)__src)" identifier (argument_list "(pcVar21,(char *)__src)" ( identifier , (cast_expression "(char *)__src" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "uVar16 = (ulong)uVar19;" (assignment_expression "uVar16 = (ulong)uVar19" identifier = (cast_expression "(ulong)uVar19" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pcVar21[uVar16] = '$';" (assignment_expression "pcVar21[uVar16] = '$'" (subscript_expression "pcVar21[uVar16]" identifier [ identifier ]) = (char_literal "'$'" ' character ')) ;) (expression_statement "sVar7 = strlen(key_data);" (assignment_expression "sVar7 = strlen(key_data)" identifier = (call_expression "strlen(key_data)" identifier (argument_list "(key_data)" ( identifier )))) ;) (expression_statement "pcVar10 = xstrdup(key_data);" (assignment_expression "pcVar10 = xstrdup(key_data)" identifier = (call_expression "xstrdup(key_data)" identifier (argument_list "(key_data)" ( identifier )))) ;) (expression_statement "bVar22 = local_298 != 0x20;" (assignment_expression "bVar22 = local_298 != 0x20" identifier = (binary_expression "local_298 != 0x20" identifier != number_literal)) ;) (expression_statement "pcVar14 = sha512_end;" (assignment_expression "pcVar14 = sha512_end" identifier = identifier) ;) (if_statement "if (!bVar22) {\n    pcVar14 = sha1_end;\n  }" if (parenthesized_expression "(!bVar22)" ( (unary_expression "!bVar22" ! identifier) )) (compound_statement "{\n    pcVar14 = sha1_end;\n  }" { (expression_statement "pcVar14 = sha1_end;" (assignment_expression "pcVar14 = sha1_end" identifier = identifier) ;) })) (expression_statement "pcVar15 = md5_hash;" (assignment_expression "pcVar15 = md5_hash" identifier = identifier) ;) (if_statement "if (bVar22) {\n    pcVar15 = sha512_hash;\n  }" if (parenthesized_expression "(bVar22)" ( identifier )) (compound_statement "{\n    pcVar15 = sha512_hash;\n  }" { (expression_statement "pcVar15 = sha512_hash;" (assignment_expression "pcVar15 = sha512_hash" identifier = identifier) ;) })) (expression_statement "pcVar17 = sha512_begin;" (assignment_expression "pcVar17 = sha512_begin" identifier = identifier) ;) (if_statement "if (!bVar22) {\n    pcVar17 = sha256_begin;\n  }" if (parenthesized_expression "(!bVar22)" ( (unary_expression "!bVar22" ! identifier) )) (compound_statement "{\n    pcVar17 = sha256_begin;\n  }" { (expression_statement "pcVar17 = sha256_begin;" (assignment_expression "pcVar17 = sha256_begin" identifier = identifier) ;) })) (expression_statement "local_294 = (uint)sVar7;" (assignment_expression "local_294 = (uint)sVar7" identifier = (cast_expression "(uint)sVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "paVar2 = &L.ctx;" (assignment_expression "paVar2 = &L.ctx" identifier = (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier))) ;) (expression_statement "(*pcVar17)(paVar2);" (call_expression "(*pcVar17)(paVar2)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(paVar2)" ( identifier ))) ;) (expression_statement "uVar13 = sVar7 & 0xffffffff;" (assignment_expression "uVar13 = sVar7 & 0xffffffff" identifier = (binary_expression "sVar7 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "(*pcVar15)(paVar2,pcVar10);" (call_expression "(*pcVar15)(paVar2,pcVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar2,pcVar10)" ( identifier , identifier ))) ;) (expression_statement "(*pcVar15)(paVar2,__src,uVar16);" (call_expression "(*pcVar15)(paVar2,__src,uVar16)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar2,__src,uVar16)" ( identifier , identifier , identifier ))) ;) (expression_statement "paVar1 = &L.alt_ctx;" (assignment_expression "paVar1 = &L.alt_ctx" identifier = (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier))) ;) (expression_statement "(*pcVar17)(paVar1);" (call_expression "(*pcVar17)(paVar1)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(paVar1)" ( identifier ))) ;) (expression_statement "(*pcVar15)(paVar1,pcVar10,uVar13);" (call_expression "(*pcVar15)(paVar1,pcVar10,uVar13)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar1,pcVar10,uVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(paVar1,__src,uVar16);" (call_expression "(*pcVar15)(paVar1,__src,uVar16)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar1,__src,uVar16)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(paVar1,pcVar10,uVar13);" (call_expression "(*pcVar15)(paVar1,pcVar10,uVar13)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar1,pcVar10,uVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar14)(paVar1,&L);" (call_expression "(*pcVar14)(paVar1,&L)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(paVar1,&L)" ( identifier , (pointer_expression "&L" & identifier) ))) ;) (expression_statement "pcVar9 = pcVar10;" (assignment_expression "pcVar9 = pcVar10" identifier = identifier) ;) (if_statement "if (local_298 < local_294) {\n    uVar12 = sVar7 & 0xffffffff;\n    do {\n      (*pcVar15)(&L.ctx,&L,local_298);\n      uVar6 = (int)uVar12 - local_298;\n      uVar12 = (ulong)uVar6;\n    } while (local_298 < uVar6);\n    (*pcVar15)(&L.ctx,&L,uVar6);\n  }\n  else {\n    (*pcVar15)(&L.ctx,&L,uVar13);\n    if (local_294 == 0) {\n      (*pcVar14)(&L.ctx,&L);\n      (*pcVar17)(&L.alt_ctx);\n      (*pcVar14)(&L.alt_ctx,L.temp_result);\n      goto LAB_001a2ffd;\n    }\n  }" if (parenthesized_expression "(local_298 < local_294)" ( (binary_expression "local_298 < local_294" identifier < identifier) )) (compound_statement "{\n    uVar12 = sVar7 & 0xffffffff;\n    do {\n      (*pcVar15)(&L.ctx,&L,local_298);\n      uVar6 = (int)uVar12 - local_298;\n      uVar12 = (ulong)uVar6;\n    } while (local_298 < uVar6);\n    (*pcVar15)(&L.ctx,&L,uVar6);\n  }" { (expression_statement "uVar12 = sVar7 & 0xffffffff;" (assignment_expression "uVar12 = sVar7 & 0xffffffff" identifier = (binary_expression "sVar7 & 0xffffffff" identifier & number_literal)) ;) (do_statement "do {\n      (*pcVar15)(&L.ctx,&L,local_298);\n      uVar6 = (int)uVar12 - local_298;\n      uVar12 = (ulong)uVar6;\n    } while (local_298 < uVar6);" do (compound_statement "{\n      (*pcVar15)(&L.ctx,&L,local_298);\n      uVar6 = (int)uVar12 - local_298;\n      uVar12 = (ulong)uVar6;\n    }" { (expression_statement "(*pcVar15)(&L.ctx,&L,local_298);" (call_expression "(*pcVar15)(&L.ctx,&L,local_298)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(&L.ctx,&L,local_298)" ( (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier)) , (pointer_expression "&L" & identifier) , identifier ))) ;) (expression_statement "uVar6 = (int)uVar12 - local_298;" (assignment_expression "uVar6 = (int)uVar12 - local_298" identifier = (binary_expression "(int)uVar12 - local_298" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "uVar12 = (ulong)uVar6;" (assignment_expression "uVar12 = (ulong)uVar6" identifier = (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(local_298 < uVar6)" ( (binary_expression "local_298 < uVar6" identifier < identifier) )) ;) (expression_statement "(*pcVar15)(&L.ctx,&L,uVar6);" (call_expression "(*pcVar15)(&L.ctx,&L,uVar6)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(&L.ctx,&L,uVar6)" ( (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier)) , (pointer_expression "&L" & identifier) , identifier ))) ;) }) (else_clause "else {\n    (*pcVar15)(&L.ctx,&L,uVar13);\n    if (local_294 == 0) {\n      (*pcVar14)(&L.ctx,&L);\n      (*pcVar17)(&L.alt_ctx);\n      (*pcVar14)(&L.alt_ctx,L.temp_result);\n      goto LAB_001a2ffd;\n    }\n  }" else (compound_statement "{\n    (*pcVar15)(&L.ctx,&L,uVar13);\n    if (local_294 == 0) {\n      (*pcVar14)(&L.ctx,&L);\n      (*pcVar17)(&L.alt_ctx);\n      (*pcVar14)(&L.alt_ctx,L.temp_result);\n      goto LAB_001a2ffd;\n    }\n  }" { (expression_statement "(*pcVar15)(&L.ctx,&L,uVar13);" (call_expression "(*pcVar15)(&L.ctx,&L,uVar13)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(&L.ctx,&L,uVar13)" ( (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier)) , (pointer_expression "&L" & identifier) , identifier ))) ;) (if_statement "if (local_294 == 0) {\n      (*pcVar14)(&L.ctx,&L);\n      (*pcVar17)(&L.alt_ctx);\n      (*pcVar14)(&L.alt_ctx,L.temp_result);\n      goto LAB_001a2ffd;\n    }" if (parenthesized_expression "(local_294 == 0)" ( (binary_expression "local_294 == 0" identifier == number_literal) )) (compound_statement "{\n      (*pcVar14)(&L.ctx,&L);\n      (*pcVar17)(&L.alt_ctx);\n      (*pcVar14)(&L.alt_ctx,L.temp_result);\n      goto LAB_001a2ffd;\n    }" { (expression_statement "(*pcVar14)(&L.ctx,&L);" (call_expression "(*pcVar14)(&L.ctx,&L)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(&L.ctx,&L)" ( (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier)) , (pointer_expression "&L" & identifier) ))) ;) (expression_statement "(*pcVar17)(&L.alt_ctx);" (call_expression "(*pcVar17)(&L.alt_ctx)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(&L.alt_ctx)" ( (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier)) ))) ;) (expression_statement "(*pcVar14)(&L.alt_ctx,L.temp_result);" (call_expression "(*pcVar14)(&L.alt_ctx,L.temp_result)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(&L.alt_ctx,L.temp_result)" ( (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier)) , (field_expression "L.temp_result" identifier . field_identifier) ))) ;) (goto_statement "goto LAB_001a2ffd;" goto statement_identifier ;) })) }))) (expression_statement "uVar12 = sVar7 & 0xffffffff;" (assignment_expression "uVar12 = sVar7 & 0xffffffff" identifier = (binary_expression "sVar7 & 0xffffffff" identifier & number_literal)) ;) (do_statement "do {\n    if ((uVar12 & 1) == 0) {\n      (*pcVar15)(&L.ctx,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(&L.ctx,&L,local_298);\n    }\n    uVar6 = (uint)uVar12 >> 1;\n    uVar12 = (ulong)uVar6;\n  } while (uVar6 != 0);" do (compound_statement "{\n    if ((uVar12 & 1) == 0) {\n      (*pcVar15)(&L.ctx,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(&L.ctx,&L,local_298);\n    }\n    uVar6 = (uint)uVar12 >> 1;\n    uVar12 = (ulong)uVar6;\n  }" { (if_statement "if ((uVar12 & 1) == 0) {\n      (*pcVar15)(&L.ctx,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(&L.ctx,&L,local_298);\n    }" if (parenthesized_expression "((uVar12 & 1) == 0)" ( (binary_expression "(uVar12 & 1) == 0" (parenthesized_expression "(uVar12 & 1)" ( (binary_expression "uVar12 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar15)(&L.ctx,pcVar10,uVar13);\n    }" { (expression_statement "(*pcVar15)(&L.ctx,pcVar10,uVar13);" (call_expression "(*pcVar15)(&L.ctx,pcVar10,uVar13)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(&L.ctx,pcVar10,uVar13)" ( (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier)) , identifier , identifier ))) ;) }) (else_clause "else {\n      (*pcVar15)(&L.ctx,&L,local_298);\n    }" else (compound_statement "{\n      (*pcVar15)(&L.ctx,&L,local_298);\n    }" { (expression_statement "(*pcVar15)(&L.ctx,&L,local_298);" (call_expression "(*pcVar15)(&L.ctx,&L,local_298)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(&L.ctx,&L,local_298)" ( (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier)) , (pointer_expression "&L" & identifier) , identifier ))) ;) }))) (expression_statement "uVar6 = (uint)uVar12 >> 1;" (assignment_expression "uVar6 = (uint)uVar12 >> 1" identifier = (binary_expression "(uint)uVar12 >> 1" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "uVar12 = (ulong)uVar6;" (assignment_expression "uVar12 = (ulong)uVar6" identifier = (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "(*pcVar14)(&L.ctx,&L);" (call_expression "(*pcVar14)(&L.ctx,&L)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(&L.ctx,&L)" ( (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier)) , (pointer_expression "&L" & identifier) ))) ;) (expression_statement "(*pcVar17)(&L.alt_ctx);" (call_expression "(*pcVar17)(&L.alt_ctx)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(&L.alt_ctx)" ( (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier)) ))) ;) (do_statement "do {\n    (*pcVar15)(&L.alt_ctx,pcVar10,uVar13);\n    uVar6 = (int)uVar12 + 1;\n    uVar12 = (ulong)uVar6;\n  } while (uVar6 < local_294);" do (compound_statement "{\n    (*pcVar15)(&L.alt_ctx,pcVar10,uVar13);\n    uVar6 = (int)uVar12 + 1;\n    uVar12 = (ulong)uVar6;\n  }" { (expression_statement "(*pcVar15)(&L.alt_ctx,pcVar10,uVar13);" (call_expression "(*pcVar15)(&L.alt_ctx,pcVar10,uVar13)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(&L.alt_ctx,pcVar10,uVar13)" ( (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier)) , identifier , identifier ))) ;) (expression_statement "uVar6 = (int)uVar12 + 1;" (assignment_expression "uVar6 = (int)uVar12 + 1" identifier = (binary_expression "(int)uVar12 + 1" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar12 = (ulong)uVar6;" (assignment_expression "uVar12 = (ulong)uVar6" identifier = (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar6 < local_294)" ( (binary_expression "uVar6 < local_294" identifier < identifier) )) ;) (expression_statement "(*pcVar14)(&L.alt_ctx,L.temp_result);" (call_expression "(*pcVar14)(&L.alt_ctx,L.temp_result)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(&L.alt_ctx,L.temp_result)" ( (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier)) , (field_expression "L.temp_result" identifier . field_identifier) ))) ;) (if_statement "if (local_298 <= local_294) {\n    do {\n      *(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n      *(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);\n      lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));\n      puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }\n      pcVar9 = pcVar9 + (int)local_298;\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }" if (parenthesized_expression "(local_298 <= local_294)" ( (binary_expression "local_298 <= local_294" identifier <= identifier) )) (compound_statement "{\n    do {\n      *(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n      *(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);\n      lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));\n      puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }\n      pcVar9 = pcVar9 + (int)local_298;\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }" { (do_statement "do {\n      *(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n      *(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);\n      lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));\n      puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }\n      pcVar9 = pcVar9 + (int)local_298;\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);" do (compound_statement "{\n      *(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n      *(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);\n      lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));\n      puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);\n      for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }\n      pcVar9 = pcVar9 + (int)local_298;\n      local_294 = local_294 - local_298;\n    }" { (expression_statement "*(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);" (assignment_expression "*(ulong *)pcVar9 = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_)" (pointer_expression "*(ulong *)pcVar9" * (cast_expression "(ulong *)pcVar9" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_)" identifier (argument_list "(L.temp_result._4_4_,L.temp_result._0_4_)" ( (field_expression "L.temp_result._4_4_" (field_expression "L.temp_result" identifier . field_identifier) . field_identifier) , (field_expression "L.temp_result._0_4_" (field_expression "L.temp_result" identifier . field_identifier) . field_identifier) )))) ;) (expression_statement "*(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38);" (assignment_expression "*(undefined8 *)(pcVar9 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38)" (pointer_expression "*(undefined8 *)(pcVar9 + ((ulong)local_298 - 8))" * (cast_expression "(undefined8 *)(pcVar9 + ((ulong)local_298 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + ((ulong)local_298 - 8))" ( (binary_expression "pcVar9 + ((ulong)local_298 - 8)" identifier + (parenthesized_expression "((ulong)local_298 - 8)" ( (binary_expression "(ulong)local_298 - 8" (cast_expression "(ulong)local_298" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38)" * (cast_expression "(undefined8 *)(L.alt_result + (ulong)local_298 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(L.alt_result + (ulong)local_298 + 0x38)" ( (binary_expression "L.alt_result + (ulong)local_298 + 0x38" (binary_expression "L.alt_result + (ulong)local_298" (field_expression "L.alt_result" identifier . field_identifier) + (cast_expression "(ulong)local_298" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (expression_statement "lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);" (assignment_expression "lVar11 = (long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)pcVar9 - (long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8)" (cast_expression "(long)pcVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((ulong)(pcVar9 + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(pcVar9 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar9 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar9 + 8)" ( (binary_expression "pcVar9 + 8" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11));" (assignment_expression "puVar18 = (undefined8 *)((long)&L + (0x40 - lVar11))" identifier = (cast_expression "(undefined8 *)((long)&L + (0x40 - lVar11))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&L + (0x40 - lVar11))" ( (binary_expression "(long)&L + (0x40 - lVar11)" (cast_expression "(long)&L" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&L" & identifier)) + (parenthesized_expression "(0x40 - lVar11)" ( (binary_expression "0x40 - lVar11" number_literal - identifier) ))) )))) ;) (expression_statement "puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8);" (assignment_expression "puVar20 = (undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)(pcVar9 + 8) & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(pcVar9 + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(pcVar9 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar9 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar9 + 8)" ( (binary_expression "pcVar9 + 8" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar12 = (ulong)((int)lVar11 + local_298 >> 3); uVar12 != 0; uVar12 = uVar12 - 1) {\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }" for ( (assignment_expression "uVar12 = (ulong)((int)lVar11 + local_298 >> 3)" identifier = (call_expression "(ulong)((int)lVar11 + local_298 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)lVar11 + local_298 >> 3)" ( (binary_expression "(int)lVar11 + local_298 >> 3" (binary_expression "(int)lVar11 + local_298" (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) >> number_literal) )))) ; (binary_expression "uVar12 != 0" identifier != number_literal) ; (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar20 = *puVar18;\n        puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;\n        puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;\n      }" { (expression_statement "*puVar20 = *puVar18;" (assignment_expression "*puVar20 = *puVar18" (pointer_expression "*puVar20" * identifier) = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar18 = puVar18 + (ulong)bVar23 * -2 + 1;" (assignment_expression "puVar18 = puVar18 + (ulong)bVar23 * -2 + 1" identifier = (binary_expression "puVar18 + (ulong)bVar23 * -2 + 1" (binary_expression "puVar18 + (ulong)bVar23 * -2" identifier + (binary_expression "(ulong)bVar23 * -2" (cast_expression "(ulong)bVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar20 = puVar20 + (ulong)bVar23 * -2 + 1;" (assignment_expression "puVar20 = puVar20 + (ulong)bVar23 * -2 + 1" identifier = (binary_expression "puVar20 + (ulong)bVar23 * -2 + 1" (binary_expression "puVar20 + (ulong)bVar23 * -2" identifier + (binary_expression "(ulong)bVar23 * -2" (cast_expression "(ulong)bVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "pcVar9 = pcVar9 + (int)local_298;" (assignment_expression "pcVar9 = pcVar9 + (int)local_298" identifier = (binary_expression "pcVar9 + (int)local_298" identifier + (cast_expression "(int)local_298" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_294 = local_294 - local_298;" (assignment_expression "local_294 = local_294 - local_298" identifier = (binary_expression "local_294 - local_298" identifier - identifier)) ;) }) while (parenthesized_expression "(local_298 <= local_294)" ( (binary_expression "local_298 <= local_294" identifier <= identifier) )) ;) })) (labeled_statement "LAB_001a2ffd:\n  memcpy(pcVar9,L.temp_result,(ulong)local_294);" statement_identifier : (expression_statement "memcpy(pcVar9,L.temp_result,(ulong)local_294);" (call_expression "memcpy(pcVar9,L.temp_result,(ulong)local_294)" identifier (argument_list "(pcVar9,L.temp_result,(ulong)local_294)" ( identifier , (field_expression "L.temp_result" identifier . field_identifier) , (cast_expression "(ulong)local_294" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;)) (expression_statement "(*pcVar17)(&L.alt_ctx);" (call_expression "(*pcVar17)(&L.alt_ctx)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(&L.alt_ctx)" ( (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier)) ))) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    (*pcVar15)(&L.alt_ctx,__src,uVar16);\n    uVar6 = uVar6 + 1;\n  } while (uVar6 < L.alt_result[0] + 0x10);" do (compound_statement "{\n    (*pcVar15)(&L.alt_ctx,__src,uVar16);\n    uVar6 = uVar6 + 1;\n  }" { (expression_statement "(*pcVar15)(&L.alt_ctx,__src,uVar16);" (call_expression "(*pcVar15)(&L.alt_ctx,__src,uVar16)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(&L.alt_ctx,__src,uVar16)" ( (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier)) , identifier , identifier ))) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 < L.alt_result[0] + 0x10)" ( (binary_expression "uVar6 < L.alt_result[0] + 0x10" identifier < (binary_expression "L.alt_result[0] + 0x10" (subscript_expression "L.alt_result[0]" (field_expression "L.alt_result" identifier . field_identifier) [ number_literal ]) + number_literal)) )) ;) (expression_statement "(*pcVar14)(&L.alt_ctx,L.temp_result);" (call_expression "(*pcVar14)(&L.alt_ctx,L.temp_result)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(&L.alt_ctx,L.temp_result)" ( (pointer_expression "&L.alt_ctx" & (field_expression "L.alt_ctx" identifier . field_identifier)) , (field_expression "L.temp_result" identifier . field_identifier) ))) ;) (if_statement "if (uVar19 < 8) {\n    if ((uVar19 & 4) == 0) {\n      if (uVar19 != 0) {\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)__src = L.temp_result._0_4_;\n      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);\n    }\n  }\n  else {\n    *(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n    *(undefined8 *)(__src + ((ulong)uVar19 - 8)) =\n         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38);\n    lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8);\n    uVar19 = uVar19 + (int)lVar11 & 0xfffffff8;\n    if (7 < uVar19) {\n      uVar6 = 0;\n      do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);\n    }\n  }" if (parenthesized_expression "(uVar19 < 8)" ( (binary_expression "uVar19 < 8" identifier < number_literal) )) (compound_statement "{\n    if ((uVar19 & 4) == 0) {\n      if (uVar19 != 0) {\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)__src = L.temp_result._0_4_;\n      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);\n    }\n  }" { (if_statement "if ((uVar19 & 4) == 0) {\n      if (uVar19 != 0) {\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)__src = L.temp_result._0_4_;\n      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);\n    }" if (parenthesized_expression "((uVar19 & 4) == 0)" ( (binary_expression "(uVar19 & 4) == 0" (parenthesized_expression "(uVar19 & 4)" ( (binary_expression "uVar19 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar19 != 0) {\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }\n    }" { (if_statement "if (uVar19 != 0) {\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n        *__src = L.temp_result[0];\n        if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }\n      }" { (expression_statement "*__src = L.temp_result[0];" (assignment_expression "*__src = L.temp_result[0]" (pointer_expression "*__src" * identifier) = (subscript_expression "L.temp_result[0]" (field_expression "L.temp_result" identifier . field_identifier) [ number_literal ])) ;) (if_statement "if ((uVar19 & 2) != 0) {\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }" if (parenthesized_expression "((uVar19 & 2) != 0)" ( (binary_expression "(uVar19 & 2) != 0" (parenthesized_expression "(uVar19 & 2)" ( (binary_expression "uVar19 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);\n        }" { (expression_statement "*(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e);" (assignment_expression "*(undefined2 *)(__src + ((ulong)uVar19 - 2)) =\n               *(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e)" (pointer_expression "*(undefined2 *)(__src + ((ulong)uVar19 - 2))" * (cast_expression "(undefined2 *)(__src + ((ulong)uVar19 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__src + ((ulong)uVar19 - 2))" ( (binary_expression "__src + ((ulong)uVar19 - 2)" identifier + (parenthesized_expression "((ulong)uVar19 - 2)" ( (binary_expression "(ulong)uVar19 - 2" (cast_expression "(ulong)uVar19" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e)" * (cast_expression "(undefined2 *)(L.alt_result + (ulong)uVar19 + 0x3e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(L.alt_result + (ulong)uVar19 + 0x3e)" ( (binary_expression "L.alt_result + (ulong)uVar19 + 0x3e" (binary_expression "L.alt_result + (ulong)uVar19" (field_expression "L.alt_result" identifier . field_identifier) + (cast_expression "(ulong)uVar19" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) })) })) }) (else_clause "else {\n      *(undefined4 *)__src = L.temp_result._0_4_;\n      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);\n    }" else (compound_statement "{\n      *(undefined4 *)__src = L.temp_result._0_4_;\n      *(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);\n    }" { (expression_statement "*(undefined4 *)__src = L.temp_result._0_4_;" (assignment_expression "*(undefined4 *)__src = L.temp_result._0_4_" (pointer_expression "*(undefined4 *)__src" * (cast_expression "(undefined4 *)__src" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (field_expression "L.temp_result._0_4_" (field_expression "L.temp_result" identifier . field_identifier) . field_identifier)) ;) (expression_statement "*(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c);" (assignment_expression "*(undefined4 *)(__src + ((ulong)uVar19 - 4)) =\n           *(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c)" (pointer_expression "*(undefined4 *)(__src + ((ulong)uVar19 - 4))" * (cast_expression "(undefined4 *)(__src + ((ulong)uVar19 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__src + ((ulong)uVar19 - 4))" ( (binary_expression "__src + ((ulong)uVar19 - 4)" identifier + (parenthesized_expression "((ulong)uVar19 - 4)" ( (binary_expression "(ulong)uVar19 - 4" (cast_expression "(ulong)uVar19" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c)" * (cast_expression "(undefined4 *)(L.alt_result + (ulong)uVar19 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(L.alt_result + (ulong)uVar19 + 0x3c)" ( (binary_expression "L.alt_result + (ulong)uVar19 + 0x3c" (binary_expression "L.alt_result + (ulong)uVar19" (field_expression "L.alt_result" identifier . field_identifier) + (cast_expression "(ulong)uVar19" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    *(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n    *(undefined8 *)(__src + ((ulong)uVar19 - 8)) =\n         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38);\n    lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8);\n    uVar19 = uVar19 + (int)lVar11 & 0xfffffff8;\n    if (7 < uVar19) {\n      uVar6 = 0;\n      do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);\n    }\n  }" else (compound_statement "{\n    *(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);\n    *(undefined8 *)(__src + ((ulong)uVar19 - 8)) =\n         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38);\n    lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8);\n    uVar19 = uVar19 + (int)lVar11 & 0xfffffff8;\n    if (7 < uVar19) {\n      uVar6 = 0;\n      do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);\n    }\n  }" { (expression_statement "*(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_);" (assignment_expression "*(ulong *)__src = CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_)" (pointer_expression "*(ulong *)__src" * (cast_expression "(ulong *)__src" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(L.temp_result._4_4_,L.temp_result._0_4_)" identifier (argument_list "(L.temp_result._4_4_,L.temp_result._0_4_)" ( (field_expression "L.temp_result._4_4_" (field_expression "L.temp_result" identifier . field_identifier) . field_identifier) , (field_expression "L.temp_result._0_4_" (field_expression "L.temp_result" identifier . field_identifier) . field_identifier) )))) ;) (expression_statement "*(undefined8 *)(__src + ((ulong)uVar19 - 8)) =\n         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38);" (assignment_expression "*(undefined8 *)(__src + ((ulong)uVar19 - 8)) =\n         *(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38)" (pointer_expression "*(undefined8 *)(__src + ((ulong)uVar19 - 8))" * (cast_expression "(undefined8 *)(__src + ((ulong)uVar19 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__src + ((ulong)uVar19 - 8))" ( (binary_expression "__src + ((ulong)uVar19 - 8)" identifier + (parenthesized_expression "((ulong)uVar19 - 8)" ( (binary_expression "(ulong)uVar19 - 8" (cast_expression "(ulong)uVar19" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38)" * (cast_expression "(undefined8 *)(L.alt_result + (ulong)uVar19 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(L.alt_result + (ulong)uVar19 + 0x38)" ( (binary_expression "L.alt_result + (ulong)uVar19 + 0x38" (binary_expression "L.alt_result + (ulong)uVar19" (field_expression "L.alt_result" identifier . field_identifier) + (cast_expression "(ulong)uVar19" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (expression_statement "lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8);" (assignment_expression "lVar11 = (long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)__src - ((ulong)(__src + 8) & 0xfffffffffffffff8)" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((ulong)(__src + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(__src + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(__src + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(__src + 8)" ( (binary_expression "__src + 8" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar19 = uVar19 + (int)lVar11 & 0xfffffff8;" (assignment_expression "uVar19 = uVar19 + (int)lVar11 & 0xfffffff8" identifier = (binary_expression "uVar19 + (int)lVar11 & 0xfffffff8" (binary_expression "uVar19 + (int)lVar11" identifier + (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal)) ;) (if_statement "if (7 < uVar19) {\n      uVar6 = 0;\n      do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);\n    }" if (parenthesized_expression "(7 < uVar19)" ( (binary_expression "7 < uVar19" number_literal < identifier) )) (compound_statement "{\n      uVar6 = 0;\n      do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      } while (uVar6 < uVar19);" do (compound_statement "{\n        *(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));\n        uVar6 = uVar6 + 8;\n      }" { (expression_statement "*(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11));" (assignment_expression "*(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6) =\n             *(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11))" (pointer_expression "*(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6)" * (cast_expression "(undefined8 *)(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6)" ( (binary_expression "((ulong)(__src + 8) & 0xfffffffffffffff8) + (ulong)uVar6" (parenthesized_expression "((ulong)(__src + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(__src + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(__src + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(__src + 8)" ( (binary_expression "__src + 8" identifier + number_literal) ))) & number_literal) )) + (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) = (pointer_expression "*(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11))" * (cast_expression "(undefined8 *)(L.temp_result + ((ulong)uVar6 - lVar11))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(L.temp_result + ((ulong)uVar6 - lVar11))" ( (binary_expression "L.temp_result + ((ulong)uVar6 - lVar11)" (field_expression "L.temp_result" identifier . field_identifier) + (parenthesized_expression "((ulong)uVar6 - lVar11)" ( (binary_expression "(ulong)uVar6 - lVar11" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) - identifier) ))) ))))) ;) (expression_statement "uVar6 = uVar6 + 8;" (assignment_expression "uVar6 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 < uVar19)" ( (binary_expression "uVar6 < uVar19" identifier < identifier) )) ;) })) }))) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "paVar2 = &L.ctx;" (assignment_expression "paVar2 = &L.ctx" identifier = (pointer_expression "&L.ctx" & (field_expression "L.ctx" identifier . field_identifier))) ;) (do_statement "do {\n    (*pcVar17)(paVar2);\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    else {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if (uVar19 != (uVar19 / 3) * 3) {\n      (*pcVar15)(paVar2,__src,uVar16);\n    }\n    if (uVar19 != (uVar19 / 7) * 7) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    (*pcVar14)(paVar2,&L);\n    uVar19 = uVar19 + 1;\n  } while (local_290 != uVar19);" do (compound_statement "{\n    (*pcVar17)(paVar2);\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    else {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if (uVar19 != (uVar19 / 3) * 3) {\n      (*pcVar15)(paVar2,__src,uVar16);\n    }\n    if (uVar19 != (uVar19 / 7) * 7) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    (*pcVar14)(paVar2,&L);\n    uVar19 = uVar19 + 1;\n  }" { (expression_statement "(*pcVar17)(paVar2);" (call_expression "(*pcVar17)(paVar2)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(paVar2)" ( identifier ))) ;) (if_statement "if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,&L,local_298);\n    }\n    else {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }" if (parenthesized_expression "((uVar19 & 1) == 0)" ( (binary_expression "(uVar19 & 1) == 0" (parenthesized_expression "(uVar19 & 1)" ( (binary_expression "uVar19 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar15)(paVar2,&L,local_298);\n    }" { (expression_statement "(*pcVar15)(paVar2,&L,local_298);" (call_expression "(*pcVar15)(paVar2,&L,local_298)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar2,&L,local_298)" ( identifier , (pointer_expression "&L" & identifier) , identifier ))) ;) }) (else_clause "else {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }" else (compound_statement "{\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }" { (expression_statement "(*pcVar15)(paVar2,pcVar10,uVar13);" (call_expression "(*pcVar15)(paVar2,pcVar10,uVar13)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar2,pcVar10,uVar13)" ( identifier , identifier , identifier ))) ;) }))) (if_statement "if (uVar19 != (uVar19 / 3) * 3) {\n      (*pcVar15)(paVar2,__src,uVar16);\n    }" if (parenthesized_expression "(uVar19 != (uVar19 / 3) * 3)" ( (binary_expression "uVar19 != (uVar19 / 3) * 3" identifier != (binary_expression "(uVar19 / 3) * 3" (parenthesized_expression "(uVar19 / 3)" ( (binary_expression "uVar19 / 3" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n      (*pcVar15)(paVar2,__src,uVar16);\n    }" { (expression_statement "(*pcVar15)(paVar2,__src,uVar16);" (call_expression "(*pcVar15)(paVar2,__src,uVar16)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar2,__src,uVar16)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (uVar19 != (uVar19 / 7) * 7) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }" if (parenthesized_expression "(uVar19 != (uVar19 / 7) * 7)" ( (binary_expression "uVar19 != (uVar19 / 7) * 7" identifier != (binary_expression "(uVar19 / 7) * 7" (parenthesized_expression "(uVar19 / 7)" ( (binary_expression "uVar19 / 7" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }" { (expression_statement "(*pcVar15)(paVar2,pcVar10,uVar13);" (call_expression "(*pcVar15)(paVar2,pcVar10,uVar13)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar2,pcVar10,uVar13)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((uVar19 & 1) == 0) {\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }\n    else {\n      (*pcVar15)(paVar2,&L,local_298);\n    }" if (parenthesized_expression "((uVar19 & 1) == 0)" ( (binary_expression "(uVar19 & 1) == 0" (parenthesized_expression "(uVar19 & 1)" ( (binary_expression "uVar19 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar15)(paVar2,pcVar10,uVar13);\n    }" { (expression_statement "(*pcVar15)(paVar2,pcVar10,uVar13);" (call_expression "(*pcVar15)(paVar2,pcVar10,uVar13)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar2,pcVar10,uVar13)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (*pcVar15)(paVar2,&L,local_298);\n    }" else (compound_statement "{\n      (*pcVar15)(paVar2,&L,local_298);\n    }" { (expression_statement "(*pcVar15)(paVar2,&L,local_298);" (call_expression "(*pcVar15)(paVar2,&L,local_298)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(paVar2,&L,local_298)" ( identifier , (pointer_expression "&L" & identifier) , identifier ))) ;) }))) (expression_statement "(*pcVar14)(paVar2,&L);" (call_expression "(*pcVar14)(paVar2,&L)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(paVar2,&L)" ( identifier , (pointer_expression "&L" & identifier) ))) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_290 != uVar19)" ( (binary_expression "local_290 != uVar19" identifier != identifier) )) ;) (expression_statement "pcVar21 = pcVar21 + uVar16 + 1;" (assignment_expression "pcVar21 = pcVar21 + uVar16 + 1" identifier = (binary_expression "pcVar21 + uVar16 + 1" (binary_expression "pcVar21 + uVar16" identifier + identifier) + number_literal)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x15;" (assignment_expression "uVar16 = 0x15" identifier = number_literal) ;) (expression_statement "uVar19 = 0x2a;" (assignment_expression "uVar19 = 0x2a" identifier = number_literal) ;) (if_statement "if (local_298 == 0x20) {\n    uVar19 = 10;\n    uVar6 = 0;\n    uVar16 = 0x14;\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4);\n      if (iVar5 == 0x1d) break;\n      uVar19 = iVar5 + 0xbU;\n      if (0x1d < iVar5 + 0xbU) {\n        uVar19 = iVar5 - 0x13;\n      }\n      uVar6 = iVar5 + 1;\n      uVar4 = iVar5 - 9;\n      if (iVar5 + 0x15U < 0x1e) {\n        uVar4 = iVar5 + 0x15U;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)(ushort)L.alt_result._30_2_,3);\n  }\n  else {\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);\n      if (iVar5 == 0x14) break;\n      uVar4 = iVar5 + 0x16U;\n      if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }\n      uVar6 = iVar5 + 1;\n      uVar19 = iVar5 + 0x2bU;\n      if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)L.alt_result[0x3f],2);\n  }" if (parenthesized_expression "(local_298 == 0x20)" ( (binary_expression "local_298 == 0x20" identifier == number_literal) )) (compound_statement "{\n    uVar19 = 10;\n    uVar6 = 0;\n    uVar16 = 0x14;\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4);\n      if (iVar5 == 0x1d) break;\n      uVar19 = iVar5 + 0xbU;\n      if (0x1d < iVar5 + 0xbU) {\n        uVar19 = iVar5 - 0x13;\n      }\n      uVar6 = iVar5 + 1;\n      uVar4 = iVar5 - 9;\n      if (iVar5 + 0x15U < 0x1e) {\n        uVar4 = iVar5 + 0x15U;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)(ushort)L.alt_result._30_2_,3);\n  }" { (expression_statement "uVar19 = 10;" (assignment_expression "uVar19 = 10" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x14;" (assignment_expression "uVar16 = 0x14" identifier = number_literal) ;) (while_statement "while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4);\n      if (iVar5 == 0x1d) break;\n      uVar19 = iVar5 + 0xbU;\n      if (0x1d < iVar5 + 0xbU) {\n        uVar19 = iVar5 - 0x13;\n      }\n      uVar6 = iVar5 + 1;\n      uVar4 = iVar5 - 9;\n      if (iVar5 + 0x15U < 0x1e) {\n        uVar4 = iVar5 + 0x15U;\n      }\n      uVar16 = (ulong)uVar4;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4);\n      if (iVar5 == 0x1d) break;\n      uVar19 = iVar5 + 0xbU;\n      if (0x1d < iVar5 + 0xbU) {\n        uVar19 = iVar5 - 0x13;\n      }\n      uVar6 = iVar5 + 1;\n      uVar4 = iVar5 - 9;\n      if (iVar5 + 0x15U < 0x1e) {\n        uVar4 = iVar5 + 0x15U;\n      }\n      uVar16 = (ulong)uVar4;\n    }" { (expression_statement "iVar5 = (int)uVar16;" (assignment_expression "iVar5 = (int)uVar16" identifier = (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4);" (assignment_expression "pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4)" identifier = (call_expression "to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4)" identifier (argument_list "(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16],4)" ( identifier , (binary_expression "(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8 |\n                             (uint)L.alt_result[uVar16]" (binary_expression "(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar19] << 8" (binary_expression "(uint)L.alt_result[uVar6] << 0x10" (cast_expression "(uint)L.alt_result[uVar6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "L.alt_result[uVar6]" (field_expression "L.alt_result" identifier . field_identifier) [ identifier ])) << number_literal) | (binary_expression "(uint)L.alt_result[uVar19] << 8" (cast_expression "(uint)L.alt_result[uVar19]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "L.alt_result[uVar19]" (field_expression "L.alt_result" identifier . field_identifier) [ identifier ])) << number_literal)) | (cast_expression "(uint)L.alt_result[uVar16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "L.alt_result[uVar16]" (field_expression "L.alt_result" identifier . field_identifier) [ identifier ]))) , number_literal )))) ;) (if_statement "if (iVar5 == 0x1d) break;" if (parenthesized_expression "(iVar5 == 0x1d)" ( (binary_expression "iVar5 == 0x1d" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = iVar5 + 0xbU;" (assignment_expression "uVar19 = iVar5 + 0xbU" identifier = (binary_expression "iVar5 + 0xbU" identifier + number_literal)) ;) (if_statement "if (0x1d < iVar5 + 0xbU) {\n        uVar19 = iVar5 - 0x13;\n      }" if (parenthesized_expression "(0x1d < iVar5 + 0xbU)" ( (binary_expression "0x1d < iVar5 + 0xbU" number_literal < (binary_expression "iVar5 + 0xbU" identifier + number_literal)) )) (compound_statement "{\n        uVar19 = iVar5 - 0x13;\n      }" { (expression_statement "uVar19 = iVar5 - 0x13;" (assignment_expression "uVar19 = iVar5 - 0x13" identifier = (binary_expression "iVar5 - 0x13" identifier - number_literal)) ;) })) (expression_statement "uVar6 = iVar5 + 1;" (assignment_expression "uVar6 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = iVar5 - 9;" (assignment_expression "uVar4 = iVar5 - 9" identifier = (binary_expression "iVar5 - 9" identifier - number_literal)) ;) (if_statement "if (iVar5 + 0x15U < 0x1e) {\n        uVar4 = iVar5 + 0x15U;\n      }" if (parenthesized_expression "(iVar5 + 0x15U < 0x1e)" ( (binary_expression "iVar5 + 0x15U < 0x1e" (binary_expression "iVar5 + 0x15U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        uVar4 = iVar5 + 0x15U;\n      }" { (expression_statement "uVar4 = iVar5 + 0x15U;" (assignment_expression "uVar4 = iVar5 + 0x15U" identifier = (binary_expression "iVar5 + 0x15U" identifier + number_literal)) ;) })) (expression_statement "uVar16 = (ulong)uVar4;" (assignment_expression "uVar16 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "to64(pcVar21,(uint)(ushort)L.alt_result._30_2_,3);" (call_expression "to64(pcVar21,(uint)(ushort)L.alt_result._30_2_,3)" identifier (argument_list "(pcVar21,(uint)(ushort)L.alt_result._30_2_,3)" ( identifier , (cast_expression "(uint)(ushort)L.alt_result._30_2_" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(ushort)L.alt_result._30_2_" ( (type_descriptor "ushort" type_identifier) ) (field_expression "L.alt_result._30_2_" (field_expression "L.alt_result" identifier . field_identifier) . field_identifier))) , number_literal ))) ;) }) (else_clause "else {\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);\n      if (iVar5 == 0x14) break;\n      uVar4 = iVar5 + 0x16U;\n      if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }\n      uVar6 = iVar5 + 1;\n      uVar19 = iVar5 + 0x2bU;\n      if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)L.alt_result[0x3f],2);\n  }" else (compound_statement "{\n    while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);\n      if (iVar5 == 0x14) break;\n      uVar4 = iVar5 + 0x16U;\n      if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }\n      uVar6 = iVar5 + 1;\n      uVar19 = iVar5 + 0x2bU;\n      if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }\n      uVar16 = (ulong)uVar4;\n    }\n    to64(pcVar21,(uint)L.alt_result[0x3f],2);\n  }" { (while_statement "while( true ) {\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);\n      if (iVar5 == 0x14) break;\n      uVar4 = iVar5 + 0x16U;\n      if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }\n      uVar6 = iVar5 + 1;\n      uVar19 = iVar5 + 0x2bU;\n      if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }\n      uVar16 = (ulong)uVar4;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar5 = (int)uVar16;\n      pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);\n      if (iVar5 == 0x14) break;\n      uVar4 = iVar5 + 0x16U;\n      if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }\n      uVar6 = iVar5 + 1;\n      uVar19 = iVar5 + 0x2bU;\n      if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }\n      uVar16 = (ulong)uVar4;\n    }" { (expression_statement "iVar5 = (int)uVar16;" (assignment_expression "iVar5 = (int)uVar16" identifier = (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4);" (assignment_expression "pcVar21 = to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4)" identifier = (call_expression "to64(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4)" identifier (argument_list "(pcVar21,(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19],4)" ( identifier , (binary_expression "(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8 |\n                             (uint)L.alt_result[uVar19]" (binary_expression "(uint)L.alt_result[uVar6] << 0x10 | (uint)L.alt_result[uVar16] << 8" (binary_expression "(uint)L.alt_result[uVar6] << 0x10" (cast_expression "(uint)L.alt_result[uVar6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "L.alt_result[uVar6]" (field_expression "L.alt_result" identifier . field_identifier) [ identifier ])) << number_literal) | (binary_expression "(uint)L.alt_result[uVar16] << 8" (cast_expression "(uint)L.alt_result[uVar16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "L.alt_result[uVar16]" (field_expression "L.alt_result" identifier . field_identifier) [ identifier ])) << number_literal)) | (cast_expression "(uint)L.alt_result[uVar19]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "L.alt_result[uVar19]" (field_expression "L.alt_result" identifier . field_identifier) [ identifier ]))) , number_literal )))) ;) (if_statement "if (iVar5 == 0x14) break;" if (parenthesized_expression "(iVar5 == 0x14)" ( (binary_expression "iVar5 == 0x14" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = iVar5 + 0x16U;" (assignment_expression "uVar4 = iVar5 + 0x16U" identifier = (binary_expression "iVar5 + 0x16U" identifier + number_literal)) ;) (if_statement "if (0x3e < iVar5 + 0x16U) {\n        uVar4 = iVar5 - 0x29;\n      }" if (parenthesized_expression "(0x3e < iVar5 + 0x16U)" ( (binary_expression "0x3e < iVar5 + 0x16U" number_literal < (binary_expression "iVar5 + 0x16U" identifier + number_literal)) )) (compound_statement "{\n        uVar4 = iVar5 - 0x29;\n      }" { (expression_statement "uVar4 = iVar5 - 0x29;" (assignment_expression "uVar4 = iVar5 - 0x29" identifier = (binary_expression "iVar5 - 0x29" identifier - number_literal)) ;) })) (expression_statement "uVar6 = iVar5 + 1;" (assignment_expression "uVar6 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = iVar5 + 0x2bU;" (assignment_expression "uVar19 = iVar5 + 0x2bU" identifier = (binary_expression "iVar5 + 0x2bU" identifier + number_literal)) ;) (if_statement "if (0x3e < iVar5 + 0x2bU) {\n        uVar19 = iVar5 - 0x14;\n      }" if (parenthesized_expression "(0x3e < iVar5 + 0x2bU)" ( (binary_expression "0x3e < iVar5 + 0x2bU" number_literal < (binary_expression "iVar5 + 0x2bU" identifier + number_literal)) )) (compound_statement "{\n        uVar19 = iVar5 - 0x14;\n      }" { (expression_statement "uVar19 = iVar5 - 0x14;" (assignment_expression "uVar19 = iVar5 - 0x14" identifier = (binary_expression "iVar5 - 0x14" identifier - number_literal)) ;) })) (expression_statement "uVar16 = (ulong)uVar4;" (assignment_expression "uVar16 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "to64(pcVar21,(uint)L.alt_result[0x3f],2);" (call_expression "to64(pcVar21,(uint)L.alt_result[0x3f],2)" identifier (argument_list "(pcVar21,(uint)L.alt_result[0x3f],2)" ( identifier , (cast_expression "(uint)L.alt_result[0x3f]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "L.alt_result[0x3f]" (field_expression "L.alt_result" identifier . field_identifier) [ number_literal ])) , number_literal ))) ;) }))) (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) (if_statement "if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar8;\n  }" if (parenthesized_expression "(lVar3 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar3 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return pcVar8;\n  }" { (return_statement "return pcVar8;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined1 * FUN_001a2c74(char *param_1,char *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  size_t sVar4;\n  undefined1 *puVar5;\n  char *pcVar6;\n  char *pcVar7;\n  undefined8 *__ptr;\n  undefined8 *puVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ulong uVar14;\n  code *pcVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  undefined8 *puVar18;\n  char *pcVar19;\n  long in_FS_OFFSET;\n  bool bVar20;\n  byte bVar21;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *local_270;\n  byte local_268 [30];\n  undefined2 local_24a;\n  undefined8 uStack_230;\n  undefined8 local_228;\n  undefined1 local_1e8 [208];\n  undefined1 local_118 [216];\n  long local_40;\n  \n  bVar21 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar4 = strlen(param_2);\n  iVar17 = (int)sVar4 + 0x58;\n  local_298 = 0x40;\n  if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }\n  puVar5 = (undefined1 *)FUN_0010e602(iVar17);\n  *puVar5 = 0x24;\n  puVar5[1] = param_2[1];\n  pcVar19 = puVar5 + 3;\n  puVar5[2] = 0x24;\n  pcVar7 = param_2 + 3;\n  iVar17 = strncmp(pcVar7,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }\n  pcVar6 = strchrnul(pcVar7,0x24);\n  uVar3 = (int)pcVar6 - (int)pcVar7;\n  uVar2 = 0x10;\n  if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }\n  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);\n  strcpy(pcVar19,pcVar7);\n  uVar14 = (ulong)uVar2;\n  pcVar19[uVar14] = '$';\n  sVar4 = strlen(param_1);\n  __ptr = (undefined8 *)FUN_0010e627(param_1);\n  bVar20 = local_298 != 0x20;\n  pcVar12 = FUN_0019cf5c;\n  if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }\n  pcVar13 = FUN_0019ccd2;\n  if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }\n  pcVar15 = FUN_0019cdf9;\n  if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }\n  local_294 = (uint)sVar4;\n  (*pcVar15)(local_1e8);\n  uVar11 = sVar4 & 0xffffffff;\n  (*pcVar13)(local_1e8,__ptr);\n  (*pcVar13)(local_1e8,pcVar7,uVar14);\n  (*pcVar15)(local_118);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar13)(local_118,pcVar7,uVar14);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar12)(local_118,local_268);\n  puVar8 = __ptr;\n  if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar10 = sVar4 & 0xffffffff;\n  do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);\n  (*pcVar12)(local_1e8,local_268);\n  (*pcVar15)(local_118);\n  do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);\n  (*pcVar12)(local_118,&local_228);\n  if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);\n  (*pcVar15)(local_118);\n  uVar3 = 0;\n  do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);\n  (*pcVar12)(local_118,&local_228);\n  if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }\n  uVar2 = 0;\n  do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);\n  pcVar19 = pcVar19 + uVar14 + 1;\n  uVar3 = 0;\n  uVar14 = 0x15;\n  uVar2 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }\n  free(__ptr);\n  free(pcVar7);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "undefined1 * FUN_001a2c74(char *param_1,char *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  size_t sVar4;\n  undefined1 *puVar5;\n  char *pcVar6;\n  char *pcVar7;\n  undefined8 *__ptr;\n  undefined8 *puVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ulong uVar14;\n  code *pcVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  undefined8 *puVar18;\n  char *pcVar19;\n  long in_FS_OFFSET;\n  bool bVar20;\n  byte bVar21;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *local_270;\n  byte local_268 [30];\n  undefined2 local_24a;\n  undefined8 uStack_230;\n  undefined8 local_228;\n  undefined1 local_1e8 [208];\n  undefined1 local_118 [216];\n  long local_40;\n  \n  bVar21 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar4 = strlen(param_2);\n  iVar17 = (int)sVar4 + 0x58;\n  local_298 = 0x40;\n  if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }\n  puVar5 = (undefined1 *)FUN_0010e602(iVar17);\n  *puVar5 = 0x24;\n  puVar5[1] = param_2[1];\n  pcVar19 = puVar5 + 3;\n  puVar5[2] = 0x24;\n  pcVar7 = param_2 + 3;\n  iVar17 = strncmp(pcVar7,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }\n  pcVar6 = strchrnul(pcVar7,0x24);\n  uVar3 = (int)pcVar6 - (int)pcVar7;\n  uVar2 = 0x10;\n  if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }\n  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);\n  strcpy(pcVar19,pcVar7);\n  uVar14 = (ulong)uVar2;\n  pcVar19[uVar14] = '$';\n  sVar4 = strlen(param_1);\n  __ptr = (undefined8 *)FUN_0010e627(param_1);\n  bVar20 = local_298 != 0x20;\n  pcVar12 = FUN_0019cf5c;\n  if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }\n  pcVar13 = FUN_0019ccd2;\n  if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }\n  pcVar15 = FUN_0019cdf9;\n  if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }\n  local_294 = (uint)sVar4;\n  (*pcVar15)(local_1e8);\n  uVar11 = sVar4 & 0xffffffff;\n  (*pcVar13)(local_1e8,__ptr);\n  (*pcVar13)(local_1e8,pcVar7,uVar14);\n  (*pcVar15)(local_118);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar13)(local_118,pcVar7,uVar14);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar12)(local_118,local_268);\n  puVar8 = __ptr;\n  if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar10 = sVar4 & 0xffffffff;\n  do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);\n  (*pcVar12)(local_1e8,local_268);\n  (*pcVar15)(local_118);\n  do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);\n  (*pcVar12)(local_118,&local_228);\n  if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);\n  (*pcVar15)(local_118);\n  uVar3 = 0;\n  do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);\n  (*pcVar12)(local_118,&local_228);\n  if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }\n  uVar2 = 0;\n  do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);\n  pcVar19 = pcVar19 + uVar14 + 1;\n  uVar3 = 0;\n  uVar14 = 0x15;\n  uVar2 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }\n  free(__ptr);\n  free(pcVar7);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }\n                    \n  __stack_chk_fail();\n}" type_identifier (pointer_declarator "* FUN_001a2c74(char *param_1,char *param_2)" * (function_declarator "FUN_001a2c74(char *param_1,char *param_2)" identifier (parameter_list "(char *param_1,char *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  size_t sVar4;\n  undefined1 *puVar5;\n  char *pcVar6;\n  char *pcVar7;\n  undefined8 *__ptr;\n  undefined8 *puVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ulong uVar14;\n  code *pcVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  undefined8 *puVar18;\n  char *pcVar19;\n  long in_FS_OFFSET;\n  bool bVar20;\n  byte bVar21;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *local_270;\n  byte local_268 [30];\n  undefined2 local_24a;\n  undefined8 uStack_230;\n  undefined8 local_228;\n  undefined1 local_1e8 [208];\n  undefined1 local_118 [216];\n  long local_40;\n  \n  bVar21 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar4 = strlen(param_2);\n  iVar17 = (int)sVar4 + 0x58;\n  local_298 = 0x40;\n  if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }\n  puVar5 = (undefined1 *)FUN_0010e602(iVar17);\n  *puVar5 = 0x24;\n  puVar5[1] = param_2[1];\n  pcVar19 = puVar5 + 3;\n  puVar5[2] = 0x24;\n  pcVar7 = param_2 + 3;\n  iVar17 = strncmp(pcVar7,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }\n  pcVar6 = strchrnul(pcVar7,0x24);\n  uVar3 = (int)pcVar6 - (int)pcVar7;\n  uVar2 = 0x10;\n  if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }\n  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);\n  strcpy(pcVar19,pcVar7);\n  uVar14 = (ulong)uVar2;\n  pcVar19[uVar14] = '$';\n  sVar4 = strlen(param_1);\n  __ptr = (undefined8 *)FUN_0010e627(param_1);\n  bVar20 = local_298 != 0x20;\n  pcVar12 = FUN_0019cf5c;\n  if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }\n  pcVar13 = FUN_0019ccd2;\n  if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }\n  pcVar15 = FUN_0019cdf9;\n  if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }\n  local_294 = (uint)sVar4;\n  (*pcVar15)(local_1e8);\n  uVar11 = sVar4 & 0xffffffff;\n  (*pcVar13)(local_1e8,__ptr);\n  (*pcVar13)(local_1e8,pcVar7,uVar14);\n  (*pcVar15)(local_118);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar13)(local_118,pcVar7,uVar14);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar12)(local_118,local_268);\n  puVar8 = __ptr;\n  if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar10 = sVar4 & 0xffffffff;\n  do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);\n  (*pcVar12)(local_1e8,local_268);\n  (*pcVar15)(local_118);\n  do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);\n  (*pcVar12)(local_118,&local_228);\n  if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);\n  (*pcVar15)(local_118);\n  uVar3 = 0;\n  do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);\n  (*pcVar12)(local_118,&local_228);\n  if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }\n  uVar2 = 0;\n  do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);\n  pcVar19 = pcVar19 + uVar14 + 1;\n  uVar3 = 0;\n  uVar14 = 0x15;\n  uVar2 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }\n  free(__ptr);\n  free(pcVar7);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined8 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "undefined8 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "char *pcVar19;" primitive_type (pointer_declarator "*pcVar19" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "uint local_298;" type_identifier identifier ;) (declaration "uint local_294;" type_identifier identifier ;) (declaration "uint local_290;" type_identifier identifier ;) (declaration "char *local_270;" primitive_type (pointer_declarator "*local_270" * identifier) ;) (declaration "byte local_268 [30];" type_identifier (array_declarator "local_268 [30]" identifier [ number_literal ]) ;) (declaration "undefined2 local_24a;" type_identifier identifier ;) (declaration "undefined8 uStack_230;" type_identifier identifier ;) (declaration "undefined8 local_228;" type_identifier identifier ;) (declaration "undefined1 local_1e8 [208];" type_identifier (array_declarator "local_1e8 [208]" identifier [ number_literal ]) ;) (declaration "undefined1 local_118 [216];" type_identifier (array_declarator "local_118 [216]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar17 = (int)sVar4 + 0x58;" (assignment_expression "iVar17 = (int)sVar4 + 0x58" identifier = (binary_expression "(int)sVar4 + 0x58" (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_298 = 0x40;" (assignment_expression "local_298 = 0x40" identifier = number_literal) ;) (if_statement "if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }" if (parenthesized_expression "(param_2[1] != '6')" ( (binary_expression "param_2[1] != '6'" (subscript_expression "param_2[1]" identifier [ number_literal ]) != (char_literal "'6'" ' character ')) )) (compound_statement "{\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }" { (expression_statement "iVar17 = (int)sVar4 + 0x2d;" (assignment_expression "iVar17 = (int)sVar4 + 0x2d" identifier = (binary_expression "(int)sVar4 + 0x2d" (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_298 = 0x20;" (assignment_expression "local_298 = 0x20" identifier = number_literal) ;) })) (expression_statement "puVar5 = (undefined1 *)FUN_0010e602(iVar17);" (assignment_expression "puVar5 = (undefined1 *)FUN_0010e602(iVar17)" identifier = (cast_expression "(undefined1 *)FUN_0010e602(iVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e602(iVar17)" identifier (argument_list "(iVar17)" ( identifier ))))) ;) (expression_statement "*puVar5 = 0x24;" (assignment_expression "*puVar5 = 0x24" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5[1] = param_2[1];" (assignment_expression "puVar5[1] = param_2[1]" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar19 = puVar5 + 3;" (assignment_expression "pcVar19 = puVar5 + 3" identifier = (binary_expression "puVar5 + 3" identifier + number_literal)) ;) (expression_statement "puVar5[2] = 0x24;" (assignment_expression "puVar5[2] = 0x24" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar7 = param_2 + 3;" (assignment_expression "pcVar7 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) (expression_statement "iVar17 = strncmp(pcVar7,"rounds=%u$",7);" (assignment_expression "iVar17 = strncmp(pcVar7,"rounds=%u$",7)" identifier = (call_expression "strncmp(pcVar7,"rounds=%u$",7)" identifier (argument_list "(pcVar7,"rounds=%u$",7)" ( identifier , (string_literal ""rounds=%u$"" " string_content ") , number_literal )))) ;) (expression_statement "local_290 = 5000;" (assignment_expression "local_290 = 5000" identifier = number_literal) ;) (if_statement "if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }" { (expression_statement "uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);" (assignment_expression "uVar2 = FUN_001101c1(param_2 + 10,&local_270,10)" identifier = (call_expression "FUN_001101c1(param_2 + 10,&local_270,10)" identifier (argument_list "(param_2 + 10,&local_270,10)" ( (binary_expression "param_2 + 10" identifier + number_literal) , (pointer_expression "&local_270" & identifier) , number_literal )))) ;) (expression_statement "local_290 = 5000;" (assignment_expression "local_290 = 5000" identifier = number_literal) ;) (if_statement "if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }" if (parenthesized_expression "(*local_270 == '$')" ( (binary_expression "*local_270 == '$'" (pointer_expression "*local_270" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }" { (expression_statement "pcVar7 = local_270 + 1;" (assignment_expression "pcVar7 = local_270 + 1" identifier = (binary_expression "local_270 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = 999999999;" (assignment_expression "uVar3 = 999999999" identifier = number_literal) ;) (if_statement "if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }" if (parenthesized_expression "(uVar2 < 1000000000)" ( (binary_expression "uVar2 < 1000000000" identifier < number_literal) )) (compound_statement "{\n        uVar3 = uVar2;\n      }" { (expression_statement "uVar3 = uVar2;" (assignment_expression "uVar3 = uVar2" identifier = identifier) ;) })) (expression_statement "local_290 = 1000;" (assignment_expression "local_290 = 1000" identifier = number_literal) ;) (if_statement "if (999 < uVar3) {\n        local_290 = uVar3;\n      }" if (parenthesized_expression "(999 < uVar3)" ( (binary_expression "999 < uVar3" number_literal < identifier) )) (compound_statement "{\n        local_290 = uVar3;\n      }" { (expression_statement "local_290 = uVar3;" (assignment_expression "local_290 = uVar3" identifier = identifier) ;) })) (expression_statement "iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);" (assignment_expression "iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" identifier = (call_expression "__sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" identifier (argument_list "(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" ( identifier , number_literal , number_literal , (string_literal ""rounds=%u$"" " string_content ") , identifier )))) ;) (expression_statement "pcVar19 = pcVar19 + iVar17;" (assignment_expression "pcVar19 = pcVar19 + iVar17" identifier = (binary_expression "pcVar19 + iVar17" identifier + identifier)) ;) })) })) (expression_statement "pcVar6 = strchrnul(pcVar7,0x24);" (assignment_expression "pcVar6 = strchrnul(pcVar7,0x24)" identifier = (call_expression "strchrnul(pcVar7,0x24)" identifier (argument_list "(pcVar7,0x24)" ( identifier , number_literal )))) ;) (expression_statement "uVar3 = (int)pcVar6 - (int)pcVar7;" (assignment_expression "uVar3 = (int)pcVar6 - (int)pcVar7" identifier = (binary_expression "(int)pcVar6 - (int)pcVar7" (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = 0x10;" (assignment_expression "uVar2 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }" if (parenthesized_expression "(uVar3 < 0x11)" ( (binary_expression "uVar3 < 0x11" identifier < number_literal) )) (compound_statement "{\n    uVar2 = uVar3;\n  }" { (expression_statement "uVar2 = uVar3;" (assignment_expression "uVar2 = uVar3" identifier = identifier) ;) })) (expression_statement "pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);" (assignment_expression "pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2)" identifier = (cast_expression "(char *)FUN_0010e648(pcVar7,uVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e648(pcVar7,uVar2)" identifier (argument_list "(pcVar7,uVar2)" ( identifier , identifier ))))) ;) (expression_statement "strcpy(pcVar19,pcVar7);" (call_expression "strcpy(pcVar19,pcVar7)" identifier (argument_list "(pcVar19,pcVar7)" ( identifier , identifier ))) ;) (expression_statement "uVar14 = (ulong)uVar2;" (assignment_expression "uVar14 = (ulong)uVar2" identifier = (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pcVar19[uVar14] = '$';" (assignment_expression "pcVar19[uVar14] = '$'" (subscript_expression "pcVar19[uVar14]" identifier [ identifier ]) = (char_literal "'$'" ' character ')) ;) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "__ptr = (undefined8 *)FUN_0010e627(param_1);" (assignment_expression "__ptr = (undefined8 *)FUN_0010e627(param_1)" identifier = (cast_expression "(undefined8 *)FUN_0010e627(param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e627(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "bVar20 = local_298 != 0x20;" (assignment_expression "bVar20 = local_298 != 0x20" identifier = (binary_expression "local_298 != 0x20" identifier != number_literal)) ;) (expression_statement "pcVar12 = FUN_0019cf5c;" (assignment_expression "pcVar12 = FUN_0019cf5c" identifier = identifier) ;) (if_statement "if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n    pcVar12 = FUN_0019cec9;\n  }" { (expression_statement "pcVar12 = FUN_0019cec9;" (assignment_expression "pcVar12 = FUN_0019cec9" identifier = identifier) ;) })) (expression_statement "pcVar13 = FUN_0019ccd2;" (assignment_expression "pcVar13 = FUN_0019ccd2" identifier = identifier) ;) (if_statement "if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }" if (parenthesized_expression "(bVar20)" ( identifier )) (compound_statement "{\n    pcVar13 = FUN_0019ce29;\n  }" { (expression_statement "pcVar13 = FUN_0019ce29;" (assignment_expression "pcVar13 = FUN_0019ce29" identifier = identifier) ;) })) (expression_statement "pcVar15 = FUN_0019cdf9;" (assignment_expression "pcVar15 = FUN_0019cdf9" identifier = identifier) ;) (if_statement "if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n    pcVar15 = FUN_0019cdca;\n  }" { (expression_statement "pcVar15 = FUN_0019cdca;" (assignment_expression "pcVar15 = FUN_0019cdca" identifier = identifier) ;) })) (expression_statement "local_294 = (uint)sVar4;" (assignment_expression "local_294 = (uint)sVar4" identifier = (cast_expression "(uint)sVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "(*pcVar15)(local_1e8);" (call_expression "(*pcVar15)(local_1e8)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_1e8)" ( identifier ))) ;) (expression_statement "uVar11 = sVar4 & 0xffffffff;" (assignment_expression "uVar11 = sVar4 & 0xffffffff" identifier = (binary_expression "sVar4 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "(*pcVar13)(local_1e8,__ptr);" (call_expression "(*pcVar13)(local_1e8,__ptr)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr)" ( identifier , identifier ))) ;) (expression_statement "(*pcVar13)(local_1e8,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_1e8,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,pcVar7,uVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_118)" ( identifier ))) ;) (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar13)(local_118,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_118,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,pcVar7,uVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar12)(local_118,local_268);" (call_expression "(*pcVar12)(local_118,local_268)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_118,local_268)" ( identifier , identifier ))) ;) (expression_statement "puVar8 = __ptr;" (assignment_expression "puVar8 = __ptr" identifier = identifier) ;) (if_statement "if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" if (parenthesized_expression "(local_298 < local_294)" ( (binary_expression "local_298 < local_294" identifier < identifier) )) (compound_statement "{\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }" { (expression_statement "uVar10 = sVar4 & 0xffffffff;" (assignment_expression "uVar10 = sVar4 & 0xffffffff" identifier = (binary_expression "sVar4 & 0xffffffff" identifier & number_literal)) ;) (do_statement "do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);" do (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    }" { (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,local_298)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar3 = (int)uVar10 - local_298;" (assignment_expression "uVar3 = (int)uVar10 - local_298" identifier = (binary_expression "(int)uVar10 - local_298" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(local_298 < uVar3)" ( (binary_expression "local_298 < uVar3" identifier < identifier) )) ;) (expression_statement "(*pcVar13)(local_1e8,local_268,uVar3);" (call_expression "(*pcVar13)(local_1e8,local_268,uVar3)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,uVar3)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" else (compound_statement "{\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" { (expression_statement "(*pcVar13)(local_1e8,local_268,uVar11);" (call_expression "(*pcVar13)(local_1e8,local_268,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,uVar11)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }" if (parenthesized_expression "(local_294 == 0)" ( (binary_expression "local_294 == 0" identifier == number_literal) )) (compound_statement "{\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }" { (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_1e8,local_268)" ( identifier , identifier ))) ;) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_118)" ( identifier ))) ;) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_118,&local_228)" ( identifier , (pointer_expression "&local_228" & identifier) ))) ;) (goto_statement "goto LAB_001a2ffd;" goto statement_identifier ;) })) }))) (expression_statement "uVar10 = sVar4 & 0xffffffff;" (assignment_expression "uVar10 = sVar4 & 0xffffffff" identifier = (binary_expression "sVar4 & 0xffffffff" identifier & number_literal)) ;) (do_statement "do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);" do (compound_statement "{\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  }" { (if_statement "if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" if (parenthesized_expression "((uVar10 & 1) == 0)" ( (binary_expression "(uVar10 & 1) == 0" (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" { (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" else (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" { (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,local_298)" ( identifier , identifier , identifier ))) ;) }))) (expression_statement "uVar3 = (uint)uVar10 >> 1;" (assignment_expression "uVar3 = (uint)uVar10 >> 1" identifier = (binary_expression "(uint)uVar10 >> 1" (cast_expression "(uint)uVar10" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) ;) (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_1e8,local_268)" ( identifier , identifier ))) ;) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_118)" ( identifier ))) ;) (do_statement "do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);" do (compound_statement "{\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  }" { (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar3 = (int)uVar10 + 1;" (assignment_expression "uVar3 = (int)uVar10 + 1" identifier = (binary_expression "(int)uVar10 + 1" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar3 < local_294)" ( (binary_expression "uVar3 < local_294" identifier < identifier) )) ;) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_118,&local_228)" ( identifier , (pointer_expression "&local_228" & identifier) ))) ;) (if_statement "if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }" if (parenthesized_expression "(local_298 <= local_294)" ( (binary_expression "local_298 <= local_294" identifier <= identifier) )) (compound_statement "{\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }" { (do_statement "do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);" do (compound_statement "{\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    }" { (expression_statement "*puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);" (assignment_expression "*puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228)" (pointer_expression "*puVar8" * identifier) = (call_expression "CONCAT44(local_228._4_4_,(undefined4)local_228)" identifier (argument_list "(local_228._4_4_,(undefined4)local_228)" ( (field_expression "local_228._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)local_228" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) ;) (expression_statement "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);" (assignment_expression "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298)" (pointer_expression "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8))" * (cast_expression "(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + ((ulong)local_298 - 8))" ( (binary_expression "(long)puVar8 + ((ulong)local_298 - 8)" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((ulong)local_298 - 8)" ( (binary_expression "(ulong)local_298 - 8" (cast_expression "(ulong)local_298" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)&uStack_230 + (ulong)local_298)" * (cast_expression "(undefined8 *)((long)&uStack_230 + (ulong)local_298)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_230 + (ulong)local_298)" ( (binary_expression "(long)&uStack_230 + (ulong)local_298" (cast_expression "(long)&uStack_230" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_230" & identifier)) + (cast_expression "(ulong)local_298" ( (type_descriptor "ulong" type_identifier) ) identifier)) ))))) ;) (expression_statement "lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar8 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar8 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar16 = (undefined8 *)((long)&local_228 - lVar9);" (assignment_expression "puVar16 = (undefined8 *)((long)&local_228 - lVar9)" identifier = (cast_expression "(undefined8 *)((long)&local_228 - lVar9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_228 - lVar9)" ( (binary_expression "(long)&local_228 - lVar9" (cast_expression "(long)&local_228" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_228" & identifier)) - identifier) )))) ;) (expression_statement "puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar8 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar8 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }" for ( (assignment_expression "uVar10 = (ulong)((int)lVar9 + local_298 >> 3)" identifier = (call_expression "(ulong)((int)lVar9 + local_298 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)lVar9 + local_298 >> 3)" ( (binary_expression "(int)lVar9 + local_298 >> 3" (binary_expression "(int)lVar9 + local_298" (cast_expression "(int)lVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) >> number_literal) )))) ; (binary_expression "uVar10 != 0" identifier != number_literal) ; (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }" { (expression_statement "*puVar18 = *puVar16;" (assignment_expression "*puVar18 = *puVar16" (pointer_expression "*puVar18" * identifier) = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "puVar16 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar16 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar18 = puVar18 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "puVar18 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar18 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);" (assignment_expression "puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298)" identifier = (cast_expression "(undefined8 *)((long)puVar8 + (long)(int)local_298)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + (long)(int)local_298)" ( (binary_expression "(long)puVar8 + (long)(int)local_298" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(long)(int)local_298" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_298" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) (expression_statement "local_294 = local_294 - local_298;" (assignment_expression "local_294 = local_294 - local_298" identifier = (binary_expression "local_294 - local_298" identifier - identifier)) ;) }) while (parenthesized_expression "(local_298 <= local_294)" ( (binary_expression "local_298 <= local_294" identifier <= identifier) )) ;) })) (labeled_statement "LAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);" statement_identifier : (expression_statement "memcpy(puVar8,&local_228,(ulong)local_294);" (call_expression "memcpy(puVar8,&local_228,(ulong)local_294)" identifier (argument_list "(puVar8,&local_228,(ulong)local_294)" ( identifier , (pointer_expression "&local_228" & identifier) , (cast_expression "(ulong)local_294" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;)) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_118)" ( identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);" do (compound_statement "{\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  }" { (expression_statement "(*pcVar13)(local_118,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_118,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_118,pcVar7,uVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < local_268[0] + 0x10)" ( (binary_expression "uVar3 < local_268[0] + 0x10" identifier < (binary_expression "local_268[0] + 0x10" (subscript_expression "local_268[0]" identifier [ number_literal ]) + number_literal)) )) ;) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_118,&local_228)" ( identifier , (pointer_expression "&local_228" & identifier) ))) ;) (if_statement "if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" if (parenthesized_expression "(uVar2 < 8)" ( (binary_expression "uVar2 < 8" identifier < number_literal) )) (compound_statement "{\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }" { (if_statement "if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" if (parenthesized_expression "((uVar2 & 4) == 0)" ( (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" ( (binary_expression "uVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }" { (if_statement "if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }" { (expression_statement "*pcVar7 = (char)local_228;" (assignment_expression "*pcVar7 = (char)local_228" (pointer_expression "*pcVar7" * identifier) = (cast_expression "(char)local_228" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }" if (parenthesized_expression "((uVar2 & 2) != 0)" ( (binary_expression "(uVar2 & 2) != 0" (parenthesized_expression "(uVar2 & 2)" ( (binary_expression "uVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }" { (expression_statement "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);" (assignment_expression "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" (pointer_expression "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2))" * (cast_expression "(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 2))" ( (binary_expression "pcVar7 + ((ulong)uVar2 - 2)" identifier + (parenthesized_expression "((ulong)uVar2 - 2)" ( (binary_expression "(ulong)uVar2 - 2" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" * (cast_expression "(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2 + 6)" ( (binary_expression "(long)&uStack_230 + (ulong)uVar2 + 6" (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_230" & identifier)) + (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) })) })) }) (else_clause "else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" else (compound_statement "{\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" { (expression_statement "*(undefined4 *)pcVar7 = (undefined4)local_228;" (assignment_expression "*(undefined4 *)pcVar7 = (undefined4)local_228" (pointer_expression "*(undefined4 *)pcVar7" * (cast_expression "(undefined4 *)pcVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined4)local_228" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);" (assignment_expression "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" (pointer_expression "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4))" * (cast_expression "(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 4))" ( (binary_expression "pcVar7 + ((ulong)uVar2 - 4)" identifier + (parenthesized_expression "((ulong)uVar2 - 4)" ( (binary_expression "(ulong)uVar2 - 4" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" * (cast_expression "(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2 + 4)" ( (binary_expression "(long)&uStack_230 + (ulong)uVar2 + 4" (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_230" & identifier)) + (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" else (compound_statement "{\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" { (expression_statement "*(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);" (assignment_expression "*(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228)" (pointer_expression "*(ulong *)pcVar7" * (cast_expression "(ulong *)pcVar7" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(local_228._4_4_,(undefined4)local_228)" identifier (argument_list "(local_228._4_4_,(undefined4)local_228)" ( (field_expression "local_228._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)local_228" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) ;) (expression_statement "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;" (assignment_expression "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" (pointer_expression "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8))" * (cast_expression "(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 8))" ( (binary_expression "pcVar7 + ((ulong)uVar2 - 8)" identifier + (parenthesized_expression "((ulong)uVar2 - 8)" ( (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" * (cast_expression "(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2)" ( (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_230" & identifier)) + (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ))))) ;) (expression_statement "lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);" (assignment_expression "lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" (cast_expression "(long)pcVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(pcVar7 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar7 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar7 + 8)" ( (binary_expression "pcVar7 + 8" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;" (assignment_expression "uVar2 = uVar2 + (int)lVar9 & 0xfffffff8" identifier = (binary_expression "uVar2 + (int)lVar9 & 0xfffffff8" (binary_expression "uVar2 + (int)lVar9" identifier + (cast_expression "(int)lVar9" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal)) ;) (if_statement "if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }" if (parenthesized_expression "(7 < uVar2)" ( (binary_expression "7 < uVar2" number_literal < identifier) )) (compound_statement "{\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);" do (compound_statement "{\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      }" { (expression_statement "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));" (assignment_expression "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" (pointer_expression "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" * (cast_expression "(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" ( (binary_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3" (parenthesized_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(pcVar7 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar7 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar7 + 8)" ( (binary_expression "pcVar7 + 8" identifier + number_literal) ))) & number_literal) )) + (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) = (pointer_expression "*(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" * (cast_expression "(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_228 + ((ulong)uVar3 - lVar9))" ( (binary_expression "(long)&local_228 + ((ulong)uVar3 - lVar9)" (cast_expression "(long)&local_228" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_228" & identifier)) + (parenthesized_expression "((ulong)uVar3 - lVar9)" ( (binary_expression "(ulong)uVar3 - lVar9" (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) - identifier) ))) ))))) ;) (expression_statement "uVar3 = uVar3 + 8;" (assignment_expression "uVar3 = uVar3 + 8" identifier = (binary_expression "uVar3 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) ;) })) }))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);" do (compound_statement "{\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  }" { (expression_statement "(*pcVar15)(local_1e8);" (call_expression "(*pcVar15)(local_1e8)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(local_1e8)" ( identifier ))) ;) (if_statement "if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" if (parenthesized_expression "((uVar2 & 1) == 0)" ( (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" { (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,local_298)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" else (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" { (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) }))) (if_statement "if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }" if (parenthesized_expression "(uVar2 != (uVar2 / 3) * 3)" ( (binary_expression "uVar2 != (uVar2 / 3) * 3" identifier != (binary_expression "(uVar2 / 3) * 3" (parenthesized_expression "(uVar2 / 3)" ( (binary_expression "uVar2 / 3" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }" { (expression_statement "(*pcVar13)(local_1e8,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_1e8,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,pcVar7,uVar14)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" if (parenthesized_expression "(uVar2 != (uVar2 / 7) * 7)" ( (binary_expression "uVar2 != (uVar2 / 7) * 7" identifier != (binary_expression "(uVar2 / 7) * 7" (parenthesized_expression "(uVar2 / 7)" ( (binary_expression "uVar2 / 7" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" { (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" if (parenthesized_expression "((uVar2 & 1) == 0)" ( (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" { (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,__ptr,uVar11)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" else (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" { (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(local_1e8,local_268,local_298)" ( identifier , identifier , identifier ))) ;) }))) (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(local_1e8,local_268)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_290 != uVar2)" ( (binary_expression "local_290 != uVar2" identifier != identifier) )) ;) (expression_statement "pcVar19 = pcVar19 + uVar14 + 1;" (assignment_expression "pcVar19 = pcVar19 + uVar14 + 1" identifier = (binary_expression "pcVar19 + uVar14 + 1" (binary_expression "pcVar19 + uVar14" identifier + identifier) + number_literal)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = 0x15;" (assignment_expression "uVar14 = 0x15" identifier = number_literal) ;) (expression_statement "uVar2 = 0x2a;" (assignment_expression "uVar2 = 0x2a" identifier = number_literal) ;) (if_statement "if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" if (parenthesized_expression "(local_298 == 0x20)" ( (binary_expression "local_298 == 0x20" identifier == number_literal) )) (compound_statement "{\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }" { (expression_statement "uVar2 = 10;" (assignment_expression "uVar2 = 10" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = 0x14;" (assignment_expression "uVar14 = 0x14" identifier = number_literal) ;) (while_statement "while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }" { (expression_statement "iVar17 = (int)uVar14;" (assignment_expression "iVar17 = (int)uVar14" identifier = (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );" (assignment_expression "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" identifier = (cast_expression "(char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" identifier (argument_list "(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" ( identifier , (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14]" (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8" (binary_expression "(uint)local_268[uVar3] << 0x10" (cast_expression "(uint)local_268[uVar3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar3]" identifier [ identifier ])) << number_literal) | (binary_expression "(uint)local_268[uVar2] << 8" (cast_expression "(uint)local_268[uVar2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar2]" identifier [ identifier ])) << number_literal)) | (cast_expression "(uint)local_268[uVar14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar14]" identifier [ identifier ]))) , number_literal ))))) ;) (if_statement "if (iVar17 == 0x1d) break;" if (parenthesized_expression "(iVar17 == 0x1d)" ( (binary_expression "iVar17 == 0x1d" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = iVar17 + 0xbU;" (assignment_expression "uVar2 = iVar17 + 0xbU" identifier = (binary_expression "iVar17 + 0xbU" identifier + number_literal)) ;) (if_statement "if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }" if (parenthesized_expression "(0x1d < iVar17 + 0xbU)" ( (binary_expression "0x1d < iVar17 + 0xbU" number_literal < (binary_expression "iVar17 + 0xbU" identifier + number_literal)) )) (compound_statement "{\n        uVar2 = iVar17 - 0x13;\n      }" { (expression_statement "uVar2 = iVar17 - 0x13;" (assignment_expression "uVar2 = iVar17 - 0x13" identifier = (binary_expression "iVar17 - 0x13" identifier - number_literal)) ;) })) (expression_statement "uVar3 = iVar17 + 1;" (assignment_expression "uVar3 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = iVar17 - 9;" (assignment_expression "uVar1 = iVar17 - 9" identifier = (binary_expression "iVar17 - 9" identifier - number_literal)) ;) (if_statement "if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }" if (parenthesized_expression "(iVar17 + 0x15U < 0x1e)" ( (binary_expression "iVar17 + 0x15U < 0x1e" (binary_expression "iVar17 + 0x15U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        uVar1 = iVar17 + 0x15U;\n      }" { (expression_statement "uVar1 = iVar17 + 0x15U;" (assignment_expression "uVar1 = iVar17 + 0x15U" identifier = (binary_expression "iVar17 + 0x15U" identifier + number_literal)) ;) })) (expression_statement "uVar14 = (ulong)uVar1;" (assignment_expression "uVar14 = (ulong)uVar1" identifier = (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "FUN_001a236a(pcVar19,local_24a,3);" (call_expression "FUN_001a236a(pcVar19,local_24a,3)" identifier (argument_list "(pcVar19,local_24a,3)" ( identifier , identifier , number_literal ))) ;) }) (else_clause "else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" else (compound_statement "{\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" { (while_statement "while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }" { (expression_statement "iVar17 = (int)uVar14;" (assignment_expression "iVar17 = (int)uVar14" identifier = (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );" (assignment_expression "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" identifier = (cast_expression "(char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" identifier (argument_list "(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" ( identifier , (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2]" (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8" (binary_expression "(uint)local_268[uVar3] << 0x10" (cast_expression "(uint)local_268[uVar3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar3]" identifier [ identifier ])) << number_literal) | (binary_expression "(uint)local_268[uVar14] << 8" (cast_expression "(uint)local_268[uVar14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar14]" identifier [ identifier ])) << number_literal)) | (cast_expression "(uint)local_268[uVar2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_268[uVar2]" identifier [ identifier ]))) , number_literal ))))) ;) (if_statement "if (iVar17 == 0x14) break;" if (parenthesized_expression "(iVar17 == 0x14)" ( (binary_expression "iVar17 == 0x14" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar1 = iVar17 + 0x16U;" (assignment_expression "uVar1 = iVar17 + 0x16U" identifier = (binary_expression "iVar17 + 0x16U" identifier + number_literal)) ;) (if_statement "if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }" if (parenthesized_expression "(0x3e < iVar17 + 0x16U)" ( (binary_expression "0x3e < iVar17 + 0x16U" number_literal < (binary_expression "iVar17 + 0x16U" identifier + number_literal)) )) (compound_statement "{\n        uVar1 = iVar17 - 0x29;\n      }" { (expression_statement "uVar1 = iVar17 - 0x29;" (assignment_expression "uVar1 = iVar17 - 0x29" identifier = (binary_expression "iVar17 - 0x29" identifier - number_literal)) ;) })) (expression_statement "uVar3 = iVar17 + 1;" (assignment_expression "uVar3 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = iVar17 + 0x2bU;" (assignment_expression "uVar2 = iVar17 + 0x2bU" identifier = (binary_expression "iVar17 + 0x2bU" identifier + number_literal)) ;) (if_statement "if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }" if (parenthesized_expression "(0x3e < iVar17 + 0x2bU)" ( (binary_expression "0x3e < iVar17 + 0x2bU" number_literal < (binary_expression "iVar17 + 0x2bU" identifier + number_literal)) )) (compound_statement "{\n        uVar2 = iVar17 - 0x14;\n      }" { (expression_statement "uVar2 = iVar17 - 0x14;" (assignment_expression "uVar2 = iVar17 - 0x14" identifier = (binary_expression "iVar17 - 0x14" identifier - number_literal)) ;) })) (expression_statement "uVar14 = (ulong)uVar1;" (assignment_expression "uVar14 = (ulong)uVar1" identifier = (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "FUN_001a236a(pcVar19,uStack_230._7_1_,2);" (call_expression "FUN_001a236a(pcVar19,uStack_230._7_1_,2)" identifier (argument_list "(pcVar19,uStack_230._7_1_,2)" ( identifier , (field_expression "uStack_230._7_1_" identifier . field_identifier) , number_literal ))) ;) }))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return puVar5;\n  }" { (return_statement "return puVar5;" return identifier ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (string_literal " string_content ") , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) ))) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) >> LIT) )))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) )) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) ))) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ))))) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) ))) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) ))))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) ))) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression (parenthesized_expression ( (binary_expression IDENT / LIT) )) * LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression (parenthesized_expression ( (binary_expression IDENT / LIT) )) * LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) << LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) << LIT)) | (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) }) (else_clause else (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) << LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) << LIT)) | (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (field_expression IDENT . field_identifier) , LIT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined1 * FUN_001a2c74(char *param_1,char *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  size_t sVar4;\n  undefined1 *puVar5;\n  char *pcVar6;\n  char *pcVar7;\n  undefined8 *__ptr;\n  undefined8 *puVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ulong uVar14;\n  code *pcVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  undefined8 *puVar18;\n  char *pcVar19;\n  long in_FS_OFFSET;\n  bool bVar20;\n  byte bVar21;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *local_270;\n  byte local_268 [30];\n  undefined2 local_24a;\n  undefined8 uStack_230;\n  undefined8 local_228;\n  undefined1 local_1e8 [208];\n  undefined1 local_118 [216];\n  long local_40;\n  \n  bVar21 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar4 = strlen(param_2);\n  iVar17 = (int)sVar4 + 0x58;\n  local_298 = 0x40;\n  if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }\n  puVar5 = (undefined1 *)FUN_0010e602(iVar17);\n  *puVar5 = 0x24;\n  puVar5[1] = param_2[1];\n  pcVar19 = puVar5 + 3;\n  puVar5[2] = 0x24;\n  pcVar7 = param_2 + 3;\n  iVar17 = strncmp(pcVar7,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }\n  pcVar6 = strchrnul(pcVar7,0x24);\n  uVar3 = (int)pcVar6 - (int)pcVar7;\n  uVar2 = 0x10;\n  if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }\n  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);\n  strcpy(pcVar19,pcVar7);\n  uVar14 = (ulong)uVar2;\n  pcVar19[uVar14] = '$';\n  sVar4 = strlen(param_1);\n  __ptr = (undefined8 *)FUN_0010e627(param_1);\n  bVar20 = local_298 != 0x20;\n  pcVar12 = FUN_0019cf5c;\n  if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }\n  pcVar13 = FUN_0019ccd2;\n  if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }\n  pcVar15 = FUN_0019cdf9;\n  if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }\n  local_294 = (uint)sVar4;\n  (*pcVar15)(local_1e8);\n  uVar11 = sVar4 & 0xffffffff;\n  (*pcVar13)(local_1e8,__ptr);\n  (*pcVar13)(local_1e8,pcVar7,uVar14);\n  (*pcVar15)(local_118);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar13)(local_118,pcVar7,uVar14);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar12)(local_118,local_268);\n  puVar8 = __ptr;\n  if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar10 = sVar4 & 0xffffffff;\n  do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);\n  (*pcVar12)(local_1e8,local_268);\n  (*pcVar15)(local_118);\n  do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);\n  (*pcVar12)(local_118,&local_228);\n  if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);\n  (*pcVar15)(local_118);\n  uVar3 = 0;\n  do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);\n  (*pcVar12)(local_118,&local_228);\n  if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }\n  uVar2 = 0;\n  do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);\n  pcVar19 = pcVar19 + uVar14 + 1;\n  uVar3 = 0;\n  uVar14 = 0x15;\n  uVar2 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }\n  free(__ptr);\n  free(pcVar7);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }\n                    \n  __stack_chk_fail();\n}" (type_identifier "undefined1") (pointer_declarator "* FUN_001a2c74(char *param_1,char *param_2)" (* "*") (function_declarator "FUN_001a2c74(char *param_1,char *param_2)" (identifier "FUN_001a2c74") (parameter_list "(char *param_1,char *param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  size_t sVar4;\n  undefined1 *puVar5;\n  char *pcVar6;\n  char *pcVar7;\n  undefined8 *__ptr;\n  undefined8 *puVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ulong uVar14;\n  code *pcVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  undefined8 *puVar18;\n  char *pcVar19;\n  long in_FS_OFFSET;\n  bool bVar20;\n  byte bVar21;\n  uint local_298;\n  uint local_294;\n  uint local_290;\n  char *local_270;\n  byte local_268 [30];\n  undefined2 local_24a;\n  undefined8 uStack_230;\n  undefined8 local_228;\n  undefined1 local_1e8 [208];\n  undefined1 local_118 [216];\n  long local_40;\n  \n  bVar21 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  sVar4 = strlen(param_2);\n  iVar17 = (int)sVar4 + 0x58;\n  local_298 = 0x40;\n  if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }\n  puVar5 = (undefined1 *)FUN_0010e602(iVar17);\n  *puVar5 = 0x24;\n  puVar5[1] = param_2[1];\n  pcVar19 = puVar5 + 3;\n  puVar5[2] = 0x24;\n  pcVar7 = param_2 + 3;\n  iVar17 = strncmp(pcVar7,"rounds=%u$",7);\n  local_290 = 5000;\n  if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }\n  pcVar6 = strchrnul(pcVar7,0x24);\n  uVar3 = (int)pcVar6 - (int)pcVar7;\n  uVar2 = 0x10;\n  if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }\n  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);\n  strcpy(pcVar19,pcVar7);\n  uVar14 = (ulong)uVar2;\n  pcVar19[uVar14] = '$';\n  sVar4 = strlen(param_1);\n  __ptr = (undefined8 *)FUN_0010e627(param_1);\n  bVar20 = local_298 != 0x20;\n  pcVar12 = FUN_0019cf5c;\n  if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }\n  pcVar13 = FUN_0019ccd2;\n  if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }\n  pcVar15 = FUN_0019cdf9;\n  if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }\n  local_294 = (uint)sVar4;\n  (*pcVar15)(local_1e8);\n  uVar11 = sVar4 & 0xffffffff;\n  (*pcVar13)(local_1e8,__ptr);\n  (*pcVar13)(local_1e8,pcVar7,uVar14);\n  (*pcVar15)(local_118);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar13)(local_118,pcVar7,uVar14);\n  (*pcVar13)(local_118,__ptr,uVar11);\n  (*pcVar12)(local_118,local_268);\n  puVar8 = __ptr;\n  if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }\n  uVar10 = sVar4 & 0xffffffff;\n  do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);\n  (*pcVar12)(local_1e8,local_268);\n  (*pcVar15)(local_118);\n  do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);\n  (*pcVar12)(local_118,&local_228);\n  if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }\nLAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);\n  (*pcVar15)(local_118);\n  uVar3 = 0;\n  do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);\n  (*pcVar12)(local_118,&local_228);\n  if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }\n  uVar2 = 0;\n  do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);\n  pcVar19 = pcVar19 + uVar14 + 1;\n  uVar3 = 0;\n  uVar14 = 0x15;\n  uVar2 = 0x2a;\n  if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }\n  free(__ptr);\n  free(pcVar7);\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "undefined8 *__ptr;" (type_identifier "undefined8") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "code *pcVar13;" (type_identifier "code") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "undefined8 *puVar16;" (type_identifier "undefined8") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "undefined8 *puVar18;" (type_identifier "undefined8") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "char *pcVar19;" (primitive_type "char") (pointer_declarator "*pcVar19" (* "*") (identifier "pcVar19")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "bool bVar20;" (primitive_type "bool") (identifier "bVar20") (; ";")) (declaration "byte bVar21;" (type_identifier "byte") (identifier "bVar21") (; ";")) (declaration "uint local_298;" (type_identifier "uint") (identifier "local_298") (; ";")) (declaration "uint local_294;" (type_identifier "uint") (identifier "local_294") (; ";")) (declaration "uint local_290;" (type_identifier "uint") (identifier "local_290") (; ";")) (declaration "char *local_270;" (primitive_type "char") (pointer_declarator "*local_270" (* "*") (identifier "local_270")) (; ";")) (declaration "byte local_268 [30];" (type_identifier "byte") (array_declarator "local_268 [30]" (identifier "local_268") ([ "[") (number_literal "30") (] "]")) (; ";")) (declaration "undefined2 local_24a;" (type_identifier "undefined2") (identifier "local_24a") (; ";")) (declaration "undefined8 uStack_230;" (type_identifier "undefined8") (identifier "uStack_230") (; ";")) (declaration "undefined8 local_228;" (type_identifier "undefined8") (identifier "local_228") (; ";")) (declaration "undefined1 local_1e8 [208];" (type_identifier "undefined1") (array_declarator "local_1e8 [208]" (identifier "local_1e8") ([ "[") (number_literal "208") (] "]")) (; ";")) (declaration "undefined1 local_118 [216];" (type_identifier "undefined1") (array_declarator "local_118 [216]" (identifier "local_118") ([ "[") (number_literal "216") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" (identifier "bVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" (identifier "sVar4") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "iVar17 = (int)sVar4 + 0x58;" (assignment_expression "iVar17 = (int)sVar4 + 0x58" (identifier "iVar17") (= "=") (binary_expression "(int)sVar4 + 0x58" (cast_expression "(int)sVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar4")) (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "local_298 = 0x40;" (assignment_expression "local_298 = 0x40" (identifier "local_298") (= "=") (number_literal "0x40")) (; ";")) (if_statement "if (param_2[1] != '6') {\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }" (if "if") (parenthesized_expression "(param_2[1] != '6')" (( "(") (binary_expression "param_2[1] != '6'" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'6'" (' "'") (character "6") (' "'"))) () ")")) (compound_statement "{\n    iVar17 = (int)sVar4 + 0x2d;\n    local_298 = 0x20;\n  }" ({ "{") (expression_statement "iVar17 = (int)sVar4 + 0x2d;" (assignment_expression "iVar17 = (int)sVar4 + 0x2d" (identifier "iVar17") (= "=") (binary_expression "(int)sVar4 + 0x2d" (cast_expression "(int)sVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar4")) (+ "+") (number_literal "0x2d"))) (; ";")) (expression_statement "local_298 = 0x20;" (assignment_expression "local_298 = 0x20" (identifier "local_298") (= "=") (number_literal "0x20")) (; ";")) (} "}"))) (expression_statement "puVar5 = (undefined1 *)FUN_0010e602(iVar17);" (assignment_expression "puVar5 = (undefined1 *)FUN_0010e602(iVar17)" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)FUN_0010e602(iVar17)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010e602(iVar17)" (identifier "FUN_0010e602") (argument_list "(iVar17)" (( "(") (identifier "iVar17") () ")"))))) (; ";")) (expression_statement "*puVar5 = 0x24;" (assignment_expression "*puVar5 = 0x24" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0x24")) (; ";")) (expression_statement "puVar5[1] = param_2[1];" (assignment_expression "puVar5[1] = param_2[1]" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pcVar19 = puVar5 + 3;" (assignment_expression "pcVar19 = puVar5 + 3" (identifier "pcVar19") (= "=") (binary_expression "puVar5 + 3" (identifier "puVar5") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar5[2] = 0x24;" (assignment_expression "puVar5[2] = 0x24" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x24")) (; ";")) (expression_statement "pcVar7 = param_2 + 3;" (assignment_expression "pcVar7 = param_2 + 3" (identifier "pcVar7") (= "=") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "iVar17 = strncmp(pcVar7,"rounds=%u$",7);" (assignment_expression "iVar17 = strncmp(pcVar7,"rounds=%u$",7)" (identifier "iVar17") (= "=") (call_expression "strncmp(pcVar7,"rounds=%u$",7)" (identifier "strncmp") (argument_list "(pcVar7,"rounds=%u$",7)" (( "(") (identifier "pcVar7") (, ",") (string_literal ""rounds=%u$"" (" """) (string_content "rounds=%u$") (" """)) (, ",") (number_literal "7") () ")")))) (; ";")) (expression_statement "local_290 = 5000;" (assignment_expression "local_290 = 5000" (identifier "local_290") (= "=") (number_literal "5000")) (; ";")) (if_statement "if (iVar17 == 0) {\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);\n    local_290 = 5000;\n    if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }\n  }" ({ "{") (expression_statement "uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);" (assignment_expression "uVar2 = FUN_001101c1(param_2 + 10,&local_270,10)" (identifier "uVar2") (= "=") (call_expression "FUN_001101c1(param_2 + 10,&local_270,10)" (identifier "FUN_001101c1") (argument_list "(param_2 + 10,&local_270,10)" (( "(") (binary_expression "param_2 + 10" (identifier "param_2") (+ "+") (number_literal "10")) (, ",") (pointer_expression "&local_270" (& "&") (identifier "local_270")) (, ",") (number_literal "10") () ")")))) (; ";")) (expression_statement "local_290 = 5000;" (assignment_expression "local_290 = 5000" (identifier "local_290") (= "=") (number_literal "5000")) (; ";")) (if_statement "if (*local_270 == '$') {\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }" (if "if") (parenthesized_expression "(*local_270 == '$')" (( "(") (binary_expression "*local_270 == '$'" (pointer_expression "*local_270" (* "*") (identifier "local_270")) (== "==") (char_literal "'$'" (' "'") (character "$") (' "'"))) () ")")) (compound_statement "{\n      pcVar7 = local_270 + 1;\n      uVar3 = 999999999;\n      if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }\n      local_290 = 1000;\n      if (999 < uVar3) {\n        local_290 = uVar3;\n      }\n      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);\n      pcVar19 = pcVar19 + iVar17;\n    }" ({ "{") (expression_statement "pcVar7 = local_270 + 1;" (assignment_expression "pcVar7 = local_270 + 1" (identifier "pcVar7") (= "=") (binary_expression "local_270 + 1" (identifier "local_270") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = 999999999;" (assignment_expression "uVar3 = 999999999" (identifier "uVar3") (= "=") (number_literal "999999999")) (; ";")) (if_statement "if (uVar2 < 1000000000) {\n        uVar3 = uVar2;\n      }" (if "if") (parenthesized_expression "(uVar2 < 1000000000)" (( "(") (binary_expression "uVar2 < 1000000000" (identifier "uVar2") (< "<") (number_literal "1000000000")) () ")")) (compound_statement "{\n        uVar3 = uVar2;\n      }" ({ "{") (expression_statement "uVar3 = uVar2;" (assignment_expression "uVar3 = uVar2" (identifier "uVar3") (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (expression_statement "local_290 = 1000;" (assignment_expression "local_290 = 1000" (identifier "local_290") (= "=") (number_literal "1000")) (; ";")) (if_statement "if (999 < uVar3) {\n        local_290 = uVar3;\n      }" (if "if") (parenthesized_expression "(999 < uVar3)" (( "(") (binary_expression "999 < uVar3" (number_literal "999") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n        local_290 = uVar3;\n      }" ({ "{") (expression_statement "local_290 = uVar3;" (assignment_expression "local_290 = uVar3" (identifier "local_290") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (expression_statement "iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);" (assignment_expression "iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" (identifier "iVar17") (= "=") (call_expression "__sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" (identifier "__sprintf_chk") (argument_list "(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290)" (( "(") (identifier "pcVar19") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffffffffffff") (, ",") (string_literal ""rounds=%u$"" (" """) (string_content "rounds=%u$") (" """)) (, ",") (identifier "local_290") () ")")))) (; ";")) (expression_statement "pcVar19 = pcVar19 + iVar17;" (assignment_expression "pcVar19 = pcVar19 + iVar17" (identifier "pcVar19") (= "=") (binary_expression "pcVar19 + iVar17" (identifier "pcVar19") (+ "+") (identifier "iVar17"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar6 = strchrnul(pcVar7,0x24);" (assignment_expression "pcVar6 = strchrnul(pcVar7,0x24)" (identifier "pcVar6") (= "=") (call_expression "strchrnul(pcVar7,0x24)" (identifier "strchrnul") (argument_list "(pcVar7,0x24)" (( "(") (identifier "pcVar7") (, ",") (number_literal "0x24") () ")")))) (; ";")) (expression_statement "uVar3 = (int)pcVar6 - (int)pcVar7;" (assignment_expression "uVar3 = (int)pcVar6 - (int)pcVar7" (identifier "uVar3") (= "=") (binary_expression "(int)pcVar6 - (int)pcVar7" (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6")) (- "-") (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")))) (; ";")) (expression_statement "uVar2 = 0x10;" (assignment_expression "uVar2 = 0x10" (identifier "uVar2") (= "=") (number_literal "0x10")) (; ";")) (if_statement "if (uVar3 < 0x11) {\n    uVar2 = uVar3;\n  }" (if "if") (parenthesized_expression "(uVar3 < 0x11)" (( "(") (binary_expression "uVar3 < 0x11" (identifier "uVar3") (< "<") (number_literal "0x11")) () ")")) (compound_statement "{\n    uVar2 = uVar3;\n  }" ({ "{") (expression_statement "uVar2 = uVar3;" (assignment_expression "uVar2 = uVar3" (identifier "uVar2") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (expression_statement "pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);" (assignment_expression "pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2)" (identifier "pcVar7") (= "=") (cast_expression "(char *)FUN_0010e648(pcVar7,uVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010e648(pcVar7,uVar2)" (identifier "FUN_0010e648") (argument_list "(pcVar7,uVar2)" (( "(") (identifier "pcVar7") (, ",") (identifier "uVar2") () ")"))))) (; ";")) (expression_statement "strcpy(pcVar19,pcVar7);" (call_expression "strcpy(pcVar19,pcVar7)" (identifier "strcpy") (argument_list "(pcVar19,pcVar7)" (( "(") (identifier "pcVar19") (, ",") (identifier "pcVar7") () ")"))) (; ";")) (expression_statement "uVar14 = (ulong)uVar2;" (assignment_expression "uVar14 = (ulong)uVar2" (identifier "uVar14") (= "=") (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2"))) (; ";")) (expression_statement "pcVar19[uVar14] = '$';" (assignment_expression "pcVar19[uVar14] = '$'" (subscript_expression "pcVar19[uVar14]" (identifier "pcVar19") ([ "[") (identifier "uVar14") (] "]")) (= "=") (char_literal "'$'" (' "'") (character "$") (' "'"))) (; ";")) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" (identifier "sVar4") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "__ptr = (undefined8 *)FUN_0010e627(param_1);" (assignment_expression "__ptr = (undefined8 *)FUN_0010e627(param_1)" (identifier "__ptr") (= "=") (cast_expression "(undefined8 *)FUN_0010e627(param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010e627(param_1)" (identifier "FUN_0010e627") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (expression_statement "bVar20 = local_298 != 0x20;" (assignment_expression "bVar20 = local_298 != 0x20" (identifier "bVar20") (= "=") (binary_expression "local_298 != 0x20" (identifier "local_298") (!= "!=") (number_literal "0x20"))) (; ";")) (expression_statement "pcVar12 = FUN_0019cf5c;" (assignment_expression "pcVar12 = FUN_0019cf5c" (identifier "pcVar12") (= "=") (identifier "FUN_0019cf5c")) (; ";")) (if_statement "if (!bVar20) {\n    pcVar12 = FUN_0019cec9;\n  }" (if "if") (parenthesized_expression "(!bVar20)" (( "(") (unary_expression "!bVar20" (! "!") (identifier "bVar20")) () ")")) (compound_statement "{\n    pcVar12 = FUN_0019cec9;\n  }" ({ "{") (expression_statement "pcVar12 = FUN_0019cec9;" (assignment_expression "pcVar12 = FUN_0019cec9" (identifier "pcVar12") (= "=") (identifier "FUN_0019cec9")) (; ";")) (} "}"))) (expression_statement "pcVar13 = FUN_0019ccd2;" (assignment_expression "pcVar13 = FUN_0019ccd2" (identifier "pcVar13") (= "=") (identifier "FUN_0019ccd2")) (; ";")) (if_statement "if (bVar20) {\n    pcVar13 = FUN_0019ce29;\n  }" (if "if") (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")")) (compound_statement "{\n    pcVar13 = FUN_0019ce29;\n  }" ({ "{") (expression_statement "pcVar13 = FUN_0019ce29;" (assignment_expression "pcVar13 = FUN_0019ce29" (identifier "pcVar13") (= "=") (identifier "FUN_0019ce29")) (; ";")) (} "}"))) (expression_statement "pcVar15 = FUN_0019cdf9;" (assignment_expression "pcVar15 = FUN_0019cdf9" (identifier "pcVar15") (= "=") (identifier "FUN_0019cdf9")) (; ";")) (if_statement "if (!bVar20) {\n    pcVar15 = FUN_0019cdca;\n  }" (if "if") (parenthesized_expression "(!bVar20)" (( "(") (unary_expression "!bVar20" (! "!") (identifier "bVar20")) () ")")) (compound_statement "{\n    pcVar15 = FUN_0019cdca;\n  }" ({ "{") (expression_statement "pcVar15 = FUN_0019cdca;" (assignment_expression "pcVar15 = FUN_0019cdca" (identifier "pcVar15") (= "=") (identifier "FUN_0019cdca")) (; ";")) (} "}"))) (expression_statement "local_294 = (uint)sVar4;" (assignment_expression "local_294 = (uint)sVar4" (identifier "local_294") (= "=") (cast_expression "(uint)sVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "sVar4"))) (; ";")) (expression_statement "(*pcVar15)(local_1e8);" (call_expression "(*pcVar15)(local_1e8)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(local_1e8)" (( "(") (identifier "local_1e8") () ")"))) (; ";")) (expression_statement "uVar11 = sVar4 & 0xffffffff;" (assignment_expression "uVar11 = sVar4 & 0xffffffff" (identifier "uVar11") (= "=") (binary_expression "sVar4 & 0xffffffff" (identifier "sVar4") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "(*pcVar13)(local_1e8,__ptr);" (call_expression "(*pcVar13)(local_1e8,__ptr)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,__ptr)" (( "(") (identifier "local_1e8") (, ",") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "(*pcVar13)(local_1e8,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_1e8,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,pcVar7,uVar14)" (( "(") (identifier "local_1e8") (, ",") (identifier "pcVar7") (, ",") (identifier "uVar14") () ")"))) (; ";")) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(local_118)" (( "(") (identifier "local_118") () ")"))) (; ";")) (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_118,__ptr,uVar11)" (( "(") (identifier "local_118") (, ",") (identifier "__ptr") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "(*pcVar13)(local_118,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_118,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_118,pcVar7,uVar14)" (( "(") (identifier "local_118") (, ",") (identifier "pcVar7") (, ",") (identifier "uVar14") () ")"))) (; ";")) (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_118,__ptr,uVar11)" (( "(") (identifier "local_118") (, ",") (identifier "__ptr") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "(*pcVar12)(local_118,local_268);" (call_expression "(*pcVar12)(local_118,local_268)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(local_118,local_268)" (( "(") (identifier "local_118") (, ",") (identifier "local_268") () ")"))) (; ";")) (expression_statement "puVar8 = __ptr;" (assignment_expression "puVar8 = __ptr" (identifier "puVar8") (= "=") (identifier "__ptr")) (; ";")) (if_statement "if (local_298 < local_294) {\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }\n  else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" (if "if") (parenthesized_expression "(local_298 < local_294)" (( "(") (binary_expression "local_298 < local_294" (identifier "local_298") (< "<") (identifier "local_294")) () ")")) (compound_statement "{\n    uVar10 = sVar4 & 0xffffffff;\n    do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);\n    (*pcVar13)(local_1e8,local_268,uVar3);\n  }" ({ "{") (expression_statement "uVar10 = sVar4 & 0xffffffff;" (assignment_expression "uVar10 = sVar4 & 0xffffffff" (identifier "uVar10") (= "=") (binary_expression "sVar4 & 0xffffffff" (identifier "sVar4") (& "&") (number_literal "0xffffffff"))) (; ";")) (do_statement "do {\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    } while (local_298 < uVar3);" (do "do") (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n      uVar3 = (int)uVar10 - local_298;\n      uVar10 = (ulong)uVar3;\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,local_268,local_298)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") (, ",") (identifier "local_298") () ")"))) (; ";")) (expression_statement "uVar3 = (int)uVar10 - local_298;" (assignment_expression "uVar3 = (int)uVar10 - local_298" (identifier "uVar3") (= "=") (binary_expression "(int)uVar10 - local_298" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (- "-") (identifier "local_298"))) (; ";")) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" (identifier "uVar10") (= "=") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_298 < uVar3)" (( "(") (binary_expression "local_298 < uVar3" (identifier "local_298") (< "<") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "(*pcVar13)(local_1e8,local_268,uVar3);" (call_expression "(*pcVar13)(local_1e8,local_268,uVar3)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,local_268,uVar3)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") (, ",") (identifier "uVar3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" (else "else") (compound_statement "{\n    (*pcVar13)(local_1e8,local_268,uVar11);\n    if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }\n  }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,local_268,uVar11);" (call_expression "(*pcVar13)(local_1e8,local_268,uVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,local_268,uVar11)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") (, ",") (identifier "uVar11") () ")"))) (; ";")) (if_statement "if (local_294 == 0) {\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }" (if "if") (parenthesized_expression "(local_294 == 0)" (( "(") (binary_expression "local_294 == 0" (identifier "local_294") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar12)(local_1e8,local_268);\n      (*pcVar15)(local_118);\n      (*pcVar12)(local_118,&local_228);\n      goto LAB_001a2ffd;\n    }" ({ "{") (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(local_1e8,local_268)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") () ")"))) (; ";")) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(local_118)" (( "(") (identifier "local_118") () ")"))) (; ";")) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(local_118,&local_228)" (( "(") (identifier "local_118") (, ",") (pointer_expression "&local_228" (& "&") (identifier "local_228")) () ")"))) (; ";")) (goto_statement "goto LAB_001a2ffd;" (goto "goto") (statement_identifier "LAB_001a2ffd") (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar10 = sVar4 & 0xffffffff;" (assignment_expression "uVar10 = sVar4 & 0xffffffff" (identifier "uVar10") (= "=") (binary_expression "sVar4 & 0xffffffff" (identifier "sVar4") (& "&") (number_literal "0xffffffff"))) (; ";")) (do_statement "do {\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 != 0);" (do "do") (compound_statement "{\n    if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    uVar3 = (uint)uVar10 >> 1;\n    uVar10 = (ulong)uVar3;\n  }" ({ "{") (if_statement "if ((uVar10 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" (if "if") (parenthesized_expression "((uVar10 & 1) == 0)" (( "(") (binary_expression "(uVar10 & 1) == 0" (parenthesized_expression "(uVar10 & 1)" (( "(") (binary_expression "uVar10 & 1" (identifier "uVar10") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,__ptr,uVar11)" (( "(") (identifier "local_1e8") (, ",") (identifier "__ptr") (, ",") (identifier "uVar11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,local_268,local_298)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") (, ",") (identifier "local_298") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar3 = (uint)uVar10 >> 1;" (assignment_expression "uVar3 = (uint)uVar10 >> 1" (identifier "uVar3") (= "=") (binary_expression "(uint)uVar10 >> 1" (cast_expression "(uint)uVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" (identifier "uVar10") (= "=") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(local_1e8,local_268)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") () ")"))) (; ";")) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(local_118)" (( "(") (identifier "local_118") () ")"))) (; ";")) (do_statement "do {\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  } while (uVar3 < local_294);" (do "do") (compound_statement "{\n    (*pcVar13)(local_118,__ptr,uVar11);\n    uVar3 = (int)uVar10 + 1;\n    uVar10 = (ulong)uVar3;\n  }" ({ "{") (expression_statement "(*pcVar13)(local_118,__ptr,uVar11);" (call_expression "(*pcVar13)(local_118,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_118,__ptr,uVar11)" (( "(") (identifier "local_118") (, ",") (identifier "__ptr") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "uVar3 = (int)uVar10 + 1;" (assignment_expression "uVar3 = (int)uVar10 + 1" (identifier "uVar3") (= "=") (binary_expression "(int)uVar10 + 1" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = (ulong)uVar3;" (assignment_expression "uVar10 = (ulong)uVar3" (identifier "uVar10") (= "=") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < local_294)" (( "(") (binary_expression "uVar3 < local_294" (identifier "uVar3") (< "<") (identifier "local_294")) () ")")) (; ";")) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(local_118,&local_228)" (( "(") (identifier "local_118") (, ",") (pointer_expression "&local_228" (& "&") (identifier "local_228")) () ")"))) (; ";")) (if_statement "if (local_298 <= local_294) {\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }" (if "if") (parenthesized_expression "(local_298 <= local_294)" (( "(") (binary_expression "local_298 <= local_294" (identifier "local_298") (<= "<=") (identifier "local_294")) () ")")) (compound_statement "{\n    do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);\n  }" ({ "{") (do_statement "do {\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    } while (local_298 <= local_294);" (do "do") (compound_statement "{\n      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);\n      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      puVar16 = (undefined8 *)((long)&local_228 - lVar9);\n      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);\n      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }\n      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);\n      local_294 = local_294 - local_298;\n    }" ({ "{") (expression_statement "*puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);" (assignment_expression "*puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228)" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (call_expression "CONCAT44(local_228._4_4_,(undefined4)local_228)" (identifier "CONCAT44") (argument_list "(local_228._4_4_,(undefined4)local_228)" (( "(") (field_expression "local_228._4_4_" (identifier "local_228") (. ".") (field_identifier "_4_4_")) (, ",") (cast_expression "(undefined4)local_228" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_228")) () ")")))) (; ";")) (expression_statement "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);" (assignment_expression "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =\n           *(undefined8 *)((long)&uStack_230 + (ulong)local_298)" (pointer_expression "*(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8))" (* "*") (cast_expression "(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + ((ulong)local_298 - 8))" (( "(") (binary_expression "(long)puVar8 + ((ulong)local_298 - 8)" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "((ulong)local_298 - 8)" (( "(") (binary_expression "(ulong)local_298 - 8" (cast_expression "(ulong)local_298" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_298")) (- "-") (number_literal "8")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined8 *)((long)&uStack_230 + (ulong)local_298)" (* "*") (cast_expression "(undefined8 *)((long)&uStack_230 + (ulong)local_298)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_230 + (ulong)local_298)" (( "(") (binary_expression "(long)&uStack_230 + (ulong)local_298" (cast_expression "(long)&uStack_230" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_230" (& "&") (identifier "uStack_230"))) (+ "+") (cast_expression "(ulong)local_298" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_298"))) () ")"))))) (; ";")) (expression_statement "lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (identifier "lVar9") (= "=") (binary_expression "(long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (- "-") (cast_expression "(long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(puVar8 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar8 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(puVar8 + 1)" (( "(") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")"))))) (; ";")) (expression_statement "puVar16 = (undefined8 *)((long)&local_228 - lVar9);" (assignment_expression "puVar16 = (undefined8 *)((long)&local_228 - lVar9)" (identifier "puVar16") (= "=") (cast_expression "(undefined8 *)((long)&local_228 - lVar9)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_228 - lVar9)" (( "(") (binary_expression "(long)&local_228 - lVar9" (cast_expression "(long)&local_228" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_228" (& "&") (identifier "local_228"))) (- "-") (identifier "lVar9")) () ")")))) (; ";")) (expression_statement "puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (identifier "puVar18") (= "=") (cast_expression "(undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)(puVar8 + 1) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(puVar8 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar8 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(puVar8 + 1)" (( "(") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")")))) (; ";")) (for_statement "for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }" (for "for") (( "(") (assignment_expression "uVar10 = (ulong)((int)lVar9 + local_298 >> 3)" (identifier "uVar10") (= "=") (call_expression "(ulong)((int)lVar9 + local_298 >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)lVar9 + local_298 >> 3)" (( "(") (binary_expression "(int)lVar9 + local_298 >> 3" (binary_expression "(int)lVar9 + local_298" (cast_expression "(int)lVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar9")) (+ "+") (identifier "local_298")) (>> ">>") (number_literal "3")) () ")")))) (; ";") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar10 = uVar10 - 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *puVar18 = *puVar16;\n        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;\n        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar18 = *puVar16;" (assignment_expression "*puVar18 = *puVar16" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (pointer_expression "*puVar16" (* "*") (identifier "puVar16"))) (; ";")) (expression_statement "puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (ulong)bVar21 * -2 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar16 + (ulong)bVar21 * -2" (identifier "puVar16") (+ "+") (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar18 = puVar18 + (ulong)bVar21 * -2 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar18 + (ulong)bVar21 * -2" (identifier "puVar18") (+ "+") (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);" (assignment_expression "puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298)" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)((long)puVar8 + (long)(int)local_298)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + (long)(int)local_298)" (( "(") (binary_expression "(long)puVar8 + (long)(int)local_298" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (cast_expression "(long)(int)local_298" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_298" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_298")))) () ")")))) (; ";")) (expression_statement "local_294 = local_294 - local_298;" (assignment_expression "local_294 = local_294 - local_298" (identifier "local_294") (= "=") (binary_expression "local_294 - local_298" (identifier "local_294") (- "-") (identifier "local_298"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_298 <= local_294)" (( "(") (binary_expression "local_298 <= local_294" (identifier "local_298") (<= "<=") (identifier "local_294")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_001a2ffd:\n  memcpy(puVar8,&local_228,(ulong)local_294);" (statement_identifier "LAB_001a2ffd") (: ":") (expression_statement "memcpy(puVar8,&local_228,(ulong)local_294);" (call_expression "memcpy(puVar8,&local_228,(ulong)local_294)" (identifier "memcpy") (argument_list "(puVar8,&local_228,(ulong)local_294)" (( "(") (identifier "puVar8") (, ",") (pointer_expression "&local_228" (& "&") (identifier "local_228")) (, ",") (cast_expression "(ulong)local_294" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_294")) () ")"))) (; ";"))) (expression_statement "(*pcVar15)(local_118);" (call_expression "(*pcVar15)(local_118)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(local_118)" (( "(") (identifier "local_118") () ")"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  } while (uVar3 < local_268[0] + 0x10);" (do "do") (compound_statement "{\n    (*pcVar13)(local_118,pcVar7,uVar14);\n    uVar3 = uVar3 + 1;\n  }" ({ "{") (expression_statement "(*pcVar13)(local_118,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_118,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_118,pcVar7,uVar14)" (( "(") (identifier "local_118") (, ",") (identifier "pcVar7") (, ",") (identifier "uVar14") () ")"))) (; ";")) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < local_268[0] + 0x10)" (( "(") (binary_expression "uVar3 < local_268[0] + 0x10" (identifier "uVar3") (< "<") (binary_expression "local_268[0] + 0x10" (subscript_expression "local_268[0]" (identifier "local_268") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "0x10"))) () ")")) (; ";")) (expression_statement "(*pcVar12)(local_118,&local_228);" (call_expression "(*pcVar12)(local_118,&local_228)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(local_118,&local_228)" (( "(") (identifier "local_118") (, ",") (pointer_expression "&local_228" (& "&") (identifier "local_228")) () ")"))) (; ";")) (if_statement "if (uVar2 < 8) {\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }\n  else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" (if "if") (parenthesized_expression "(uVar2 < 8)" (( "(") (binary_expression "uVar2 < 8" (identifier "uVar2") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n    if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }\n  }" ({ "{") (if_statement "if ((uVar2 & 4) == 0) {\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" (if "if") (parenthesized_expression "((uVar2 & 4) == 0)" (( "(") (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" (( "(") (binary_expression "uVar2 & 4" (identifier "uVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }\n    }" ({ "{") (if_statement "if (uVar2 != 0) {\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *pcVar7 = (char)local_228;\n        if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }\n      }" ({ "{") (expression_statement "*pcVar7 = (char)local_228;" (assignment_expression "*pcVar7 = (char)local_228" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (= "=") (cast_expression "(char)local_228" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_228"))) (; ";")) (if_statement "if ((uVar2 & 2) != 0) {\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }" (if "if") (parenthesized_expression "((uVar2 & 2) != 0)" (( "(") (binary_expression "(uVar2 & 2) != 0" (parenthesized_expression "(uVar2 & 2)" (( "(") (binary_expression "uVar2 & 2" (identifier "uVar2") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);\n        }" ({ "{") (expression_statement "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);" (assignment_expression "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =\n               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" (pointer_expression "*(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2))" (* "*") (cast_expression "(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2))" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 2))" (( "(") (binary_expression "pcVar7 + ((ulong)uVar2 - 2)" (identifier "pcVar7") (+ "+") (parenthesized_expression "((ulong)uVar2 - 2)" (( "(") (binary_expression "(ulong)uVar2 - 2" (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2")) (- "-") (number_literal "2")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" (* "*") (cast_expression "(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2 + 6)" (( "(") (binary_expression "(long)&uStack_230 + (ulong)uVar2 + 6" (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_230" (& "&") (identifier "uStack_230"))) (+ "+") (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2"))) (+ "+") (number_literal "6")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" (else "else") (compound_statement "{\n      *(undefined4 *)pcVar7 = (undefined4)local_228;\n      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);\n    }" ({ "{") (expression_statement "*(undefined4 *)pcVar7 = (undefined4)local_228;" (assignment_expression "*(undefined4 *)pcVar7 = (undefined4)local_228" (pointer_expression "*(undefined4 *)pcVar7" (* "*") (cast_expression "(undefined4 *)pcVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar7"))) (= "=") (cast_expression "(undefined4)local_228" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_228"))) (; ";")) (expression_statement "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);" (assignment_expression "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =\n           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" (pointer_expression "*(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4))" (* "*") (cast_expression "(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 4))" (( "(") (binary_expression "pcVar7 + ((ulong)uVar2 - 4)" (identifier "pcVar7") (+ "+") (parenthesized_expression "((ulong)uVar2 - 4)" (( "(") (binary_expression "(ulong)uVar2 - 4" (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2")) (- "-") (number_literal "4")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2 + 4)" (( "(") (binary_expression "(long)&uStack_230 + (ulong)uVar2 + 4" (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_230" (& "&") (identifier "uStack_230"))) (+ "+") (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2"))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" (else "else") (compound_statement "{\n    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);\n    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;\n    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);\n    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;\n    if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }\n  }" ({ "{") (expression_statement "*(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);" (assignment_expression "*(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228)" (pointer_expression "*(ulong *)pcVar7" (* "*") (cast_expression "(ulong *)pcVar7" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar7"))) (= "=") (call_expression "CONCAT44(local_228._4_4_,(undefined4)local_228)" (identifier "CONCAT44") (argument_list "(local_228._4_4_,(undefined4)local_228)" (( "(") (field_expression "local_228._4_4_" (identifier "local_228") (. ".") (field_identifier "_4_4_")) (, ",") (cast_expression "(undefined4)local_228" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_228")) () ")")))) (; ";")) (expression_statement "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)\n    ;" (assignment_expression "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" (pointer_expression "*(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8))" (* "*") (cast_expression "(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + ((ulong)uVar2 - 8))" (( "(") (binary_expression "pcVar7 + ((ulong)uVar2 - 8)" (identifier "pcVar7") (+ "+") (parenthesized_expression "((ulong)uVar2 - 8)" (( "(") (binary_expression "(ulong)uVar2 - 8" (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2")) (- "-") (number_literal "8")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" (* "*") (cast_expression "(undefined8 *)((long)&uStack_230 + (ulong)uVar2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_230 + (ulong)uVar2)" (( "(") (binary_expression "(long)&uStack_230 + (ulong)uVar2" (cast_expression "(long)&uStack_230" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_230" (& "&") (identifier "uStack_230"))) (+ "+") (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2"))) () ")"))))) (; ";")) (expression_statement "lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);" (assignment_expression "lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" (identifier "lVar9") (= "=") (binary_expression "(long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" (cast_expression "(long)pcVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pcVar7")) (- "-") (parenthesized_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(pcVar7 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar7 + 8)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(pcVar7 + 8)" (( "(") (binary_expression "pcVar7 + 8" (identifier "pcVar7") (+ "+") (number_literal "8")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")")))) (; ";")) (expression_statement "uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;" (assignment_expression "uVar2 = uVar2 + (int)lVar9 & 0xfffffff8" (identifier "uVar2") (= "=") (binary_expression "uVar2 + (int)lVar9 & 0xfffffff8" (binary_expression "uVar2 + (int)lVar9" (identifier "uVar2") (+ "+") (cast_expression "(int)lVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar9"))) (& "&") (number_literal "0xfffffff8"))) (; ";")) (if_statement "if (7 < uVar2) {\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }" (if "if") (parenthesized_expression "(7 < uVar2)" (( "(") (binary_expression "7 < uVar2" (number_literal "7") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n      uVar3 = 0;\n      do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);\n    }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      } while (uVar3 < uVar2);" (do "do") (compound_statement "{\n        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));\n        uVar3 = uVar3 + 8;\n      }" ({ "{") (expression_statement "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));" (assignment_expression "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =\n             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" (pointer_expression "*(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" (* "*") (cast_expression "(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3)" (( "(") (binary_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3" (parenthesized_expression "((ulong)(pcVar7 + 8) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(pcVar7 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar7 + 8)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(pcVar7 + 8)" (( "(") (binary_expression "pcVar7 + 8" (identifier "pcVar7") (+ "+") (number_literal "8")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")")) (+ "+") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) () ")")))) (= "=") (pointer_expression "*(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" (* "*") (cast_expression "(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_228 + ((ulong)uVar3 - lVar9))" (( "(") (binary_expression "(long)&local_228 + ((ulong)uVar3 - lVar9)" (cast_expression "(long)&local_228" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_228" (& "&") (identifier "local_228"))) (+ "+") (parenthesized_expression "((ulong)uVar3 - lVar9)" (( "(") (binary_expression "(ulong)uVar3 - lVar9" (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3")) (- "-") (identifier "lVar9")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar3 = uVar3 + 8;" (assignment_expression "uVar3 = uVar3 + 8" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 8" (identifier "uVar3") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < uVar2)" (( "(") (binary_expression "uVar3 < uVar2" (identifier "uVar3") (< "<") (identifier "uVar2")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  } while (local_290 != uVar2);" (do "do") (compound_statement "{\n    (*pcVar15)(local_1e8);\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }\n    if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    (*pcVar12)(local_1e8,local_268);\n    uVar2 = uVar2 + 1;\n  }" ({ "{") (expression_statement "(*pcVar15)(local_1e8);" (call_expression "(*pcVar15)(local_1e8)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(local_1e8)" (( "(") (identifier "local_1e8") () ")"))) (; ";")) (if_statement "if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }\n    else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" (if "if") (parenthesized_expression "((uVar2 & 1) == 0)" (( "(") (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" (( "(") (binary_expression "uVar2 & 1" (identifier "uVar2") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,local_268,local_298)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") (, ",") (identifier "local_298") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,__ptr,uVar11)" (( "(") (identifier "local_1e8") (, ",") (identifier "__ptr") (, ",") (identifier "uVar11") () ")"))) (; ";")) (} "}")))) (if_statement "if (uVar2 != (uVar2 / 3) * 3) {\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }" (if "if") (parenthesized_expression "(uVar2 != (uVar2 / 3) * 3)" (( "(") (binary_expression "uVar2 != (uVar2 / 3) * 3" (identifier "uVar2") (!= "!=") (binary_expression "(uVar2 / 3) * 3" (parenthesized_expression "(uVar2 / 3)" (( "(") (binary_expression "uVar2 / 3" (identifier "uVar2") (/ "/") (number_literal "3")) () ")")) (* "*") (number_literal "3"))) () ")")) (compound_statement "{\n      (*pcVar13)(local_1e8,pcVar7,uVar14);\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,pcVar7,uVar14);" (call_expression "(*pcVar13)(local_1e8,pcVar7,uVar14)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,pcVar7,uVar14)" (( "(") (identifier "local_1e8") (, ",") (identifier "pcVar7") (, ",") (identifier "uVar14") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar2 != (uVar2 / 7) * 7) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" (if "if") (parenthesized_expression "(uVar2 != (uVar2 / 7) * 7)" (( "(") (binary_expression "uVar2 != (uVar2 / 7) * 7" (identifier "uVar2") (!= "!=") (binary_expression "(uVar2 / 7) * 7" (parenthesized_expression "(uVar2 / 7)" (( "(") (binary_expression "uVar2 / 7" (identifier "uVar2") (/ "/") (number_literal "7")) () ")")) (* "*") (number_literal "7"))) () ")")) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,__ptr,uVar11)" (( "(") (identifier "local_1e8") (, ",") (identifier "__ptr") (, ",") (identifier "uVar11") () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar2 & 1) == 0) {\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }\n    else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" (if "if") (parenthesized_expression "((uVar2 & 1) == 0)" (( "(") (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" (( "(") (binary_expression "uVar2 & 1" (identifier "uVar2") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar13)(local_1e8,__ptr,uVar11);\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,__ptr,uVar11);" (call_expression "(*pcVar13)(local_1e8,__ptr,uVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,__ptr,uVar11)" (( "(") (identifier "local_1e8") (, ",") (identifier "__ptr") (, ",") (identifier "uVar11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(local_1e8,local_268,local_298);\n    }" ({ "{") (expression_statement "(*pcVar13)(local_1e8,local_268,local_298);" (call_expression "(*pcVar13)(local_1e8,local_268,local_298)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(local_1e8,local_268,local_298)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") (, ",") (identifier "local_298") () ")"))) (; ";")) (} "}")))) (expression_statement "(*pcVar12)(local_1e8,local_268);" (call_expression "(*pcVar12)(local_1e8,local_268)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(local_1e8,local_268)" (( "(") (identifier "local_1e8") (, ",") (identifier "local_268") () ")"))) (; ";")) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_290 != uVar2)" (( "(") (binary_expression "local_290 != uVar2" (identifier "local_290") (!= "!=") (identifier "uVar2")) () ")")) (; ";")) (expression_statement "pcVar19 = pcVar19 + uVar14 + 1;" (assignment_expression "pcVar19 = pcVar19 + uVar14 + 1" (identifier "pcVar19") (= "=") (binary_expression "pcVar19 + uVar14 + 1" (binary_expression "pcVar19 + uVar14" (identifier "pcVar19") (+ "+") (identifier "uVar14")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = 0x15;" (assignment_expression "uVar14 = 0x15" (identifier "uVar14") (= "=") (number_literal "0x15")) (; ";")) (expression_statement "uVar2 = 0x2a;" (assignment_expression "uVar2 = 0x2a" (identifier "uVar2") (= "=") (number_literal "0x2a")) (; ";")) (if_statement "if (local_298 == 0x20) {\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }\n  else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" (if "if") (parenthesized_expression "(local_298 == 0x20)" (( "(") (binary_expression "local_298 == 0x20" (identifier "local_298") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n    uVar2 = 10;\n    uVar3 = 0;\n    uVar14 = 0x14;\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,local_24a,3);\n  }" ({ "{") (expression_statement "uVar2 = 10;" (assignment_expression "uVar2 = 10" (identifier "uVar2") (= "=") (number_literal "10")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = 0x14;" (assignment_expression "uVar14 = 0x14" (identifier "uVar14") (= "=") (number_literal "0x14")) (; ";")) (while_statement "while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );\n      if (iVar17 == 0x1d) break;\n      uVar2 = iVar17 + 0xbU;\n      if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }\n      uVar3 = iVar17 + 1;\n      uVar1 = iVar17 - 9;\n      if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }\n      uVar14 = (ulong)uVar1;\n    }" ({ "{") (expression_statement "iVar17 = (int)uVar14;" (assignment_expression "iVar17 = (int)uVar14" (identifier "iVar17") (= "=") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    );" (assignment_expression "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" (identifier "pcVar19") (= "=") (cast_expression "(char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" (identifier "FUN_001a236a") (argument_list "(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4\n                                    )" (( "(") (identifier "pcVar19") (, ",") (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14]" (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar2] << 8" (binary_expression "(uint)local_268[uVar3] << 0x10" (cast_expression "(uint)local_268[uVar3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_268[uVar3]" (identifier "local_268") ([ "[") (identifier "uVar3") (] "]"))) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "(uint)local_268[uVar2] << 8" (cast_expression "(uint)local_268[uVar2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_268[uVar2]" (identifier "local_268") ([ "[") (identifier "uVar2") (] "]"))) (<< "<<") (number_literal "8"))) (| "|") (cast_expression "(uint)local_268[uVar14]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_268[uVar14]" (identifier "local_268") ([ "[") (identifier "uVar14") (] "]")))) (, ",") (number_literal "4") () ")"))))) (; ";")) (if_statement "if (iVar17 == 0x1d) break;" (if "if") (parenthesized_expression "(iVar17 == 0x1d)" (( "(") (binary_expression "iVar17 == 0x1d" (identifier "iVar17") (== "==") (number_literal "0x1d")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar2 = iVar17 + 0xbU;" (assignment_expression "uVar2 = iVar17 + 0xbU" (identifier "uVar2") (= "=") (binary_expression "iVar17 + 0xbU" (identifier "iVar17") (+ "+") (number_literal "0xbU"))) (; ";")) (if_statement "if (0x1d < iVar17 + 0xbU) {\n        uVar2 = iVar17 - 0x13;\n      }" (if "if") (parenthesized_expression "(0x1d < iVar17 + 0xbU)" (( "(") (binary_expression "0x1d < iVar17 + 0xbU" (number_literal "0x1d") (< "<") (binary_expression "iVar17 + 0xbU" (identifier "iVar17") (+ "+") (number_literal "0xbU"))) () ")")) (compound_statement "{\n        uVar2 = iVar17 - 0x13;\n      }" ({ "{") (expression_statement "uVar2 = iVar17 - 0x13;" (assignment_expression "uVar2 = iVar17 - 0x13" (identifier "uVar2") (= "=") (binary_expression "iVar17 - 0x13" (identifier "iVar17") (- "-") (number_literal "0x13"))) (; ";")) (} "}"))) (expression_statement "uVar3 = iVar17 + 1;" (assignment_expression "uVar3 = iVar17 + 1" (identifier "uVar3") (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar1 = iVar17 - 9;" (assignment_expression "uVar1 = iVar17 - 9" (identifier "uVar1") (= "=") (binary_expression "iVar17 - 9" (identifier "iVar17") (- "-") (number_literal "9"))) (; ";")) (if_statement "if (iVar17 + 0x15U < 0x1e) {\n        uVar1 = iVar17 + 0x15U;\n      }" (if "if") (parenthesized_expression "(iVar17 + 0x15U < 0x1e)" (( "(") (binary_expression "iVar17 + 0x15U < 0x1e" (binary_expression "iVar17 + 0x15U" (identifier "iVar17") (+ "+") (number_literal "0x15U")) (< "<") (number_literal "0x1e")) () ")")) (compound_statement "{\n        uVar1 = iVar17 + 0x15U;\n      }" ({ "{") (expression_statement "uVar1 = iVar17 + 0x15U;" (assignment_expression "uVar1 = iVar17 + 0x15U" (identifier "uVar1") (= "=") (binary_expression "iVar17 + 0x15U" (identifier "iVar17") (+ "+") (number_literal "0x15U"))) (; ";")) (} "}"))) (expression_statement "uVar14 = (ulong)uVar1;" (assignment_expression "uVar14 = (ulong)uVar1" (identifier "uVar14") (= "=") (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1"))) (; ";")) (} "}"))) (expression_statement "FUN_001a236a(pcVar19,local_24a,3);" (call_expression "FUN_001a236a(pcVar19,local_24a,3)" (identifier "FUN_001a236a") (argument_list "(pcVar19,local_24a,3)" (( "(") (identifier "pcVar19") (, ",") (identifier "local_24a") (, ",") (number_literal "3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" (else "else") (compound_statement "{\n    while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }\n    FUN_001a236a(pcVar19,uStack_230._7_1_,2);\n  }" ({ "{") (while_statement "while( true ) {\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar17 = (int)uVar14;\n      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );\n      if (iVar17 == 0x14) break;\n      uVar1 = iVar17 + 0x16U;\n      if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }\n      uVar3 = iVar17 + 1;\n      uVar2 = iVar17 + 0x2bU;\n      if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }\n      uVar14 = (ulong)uVar1;\n    }" ({ "{") (expression_statement "iVar17 = (int)uVar14;" (assignment_expression "iVar17 = (int)uVar14" (identifier "iVar17") (= "=") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    );" (assignment_expression "pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" (identifier "pcVar19") (= "=") (cast_expression "(char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" (identifier "FUN_001a236a") (argument_list "(pcVar19,(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4\n                                    )" (( "(") (identifier "pcVar19") (, ",") (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2]" (binary_expression "(uint)local_268[uVar3] << 0x10 |\n                                             (uint)local_268[uVar14] << 8" (binary_expression "(uint)local_268[uVar3] << 0x10" (cast_expression "(uint)local_268[uVar3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_268[uVar3]" (identifier "local_268") ([ "[") (identifier "uVar3") (] "]"))) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "(uint)local_268[uVar14] << 8" (cast_expression "(uint)local_268[uVar14]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_268[uVar14]" (identifier "local_268") ([ "[") (identifier "uVar14") (] "]"))) (<< "<<") (number_literal "8"))) (| "|") (cast_expression "(uint)local_268[uVar2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_268[uVar2]" (identifier "local_268") ([ "[") (identifier "uVar2") (] "]")))) (, ",") (number_literal "4") () ")"))))) (; ";")) (if_statement "if (iVar17 == 0x14) break;" (if "if") (parenthesized_expression "(iVar17 == 0x14)" (( "(") (binary_expression "iVar17 == 0x14" (identifier "iVar17") (== "==") (number_literal "0x14")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar1 = iVar17 + 0x16U;" (assignment_expression "uVar1 = iVar17 + 0x16U" (identifier "uVar1") (= "=") (binary_expression "iVar17 + 0x16U" (identifier "iVar17") (+ "+") (number_literal "0x16U"))) (; ";")) (if_statement "if (0x3e < iVar17 + 0x16U) {\n        uVar1 = iVar17 - 0x29;\n      }" (if "if") (parenthesized_expression "(0x3e < iVar17 + 0x16U)" (( "(") (binary_expression "0x3e < iVar17 + 0x16U" (number_literal "0x3e") (< "<") (binary_expression "iVar17 + 0x16U" (identifier "iVar17") (+ "+") (number_literal "0x16U"))) () ")")) (compound_statement "{\n        uVar1 = iVar17 - 0x29;\n      }" ({ "{") (expression_statement "uVar1 = iVar17 - 0x29;" (assignment_expression "uVar1 = iVar17 - 0x29" (identifier "uVar1") (= "=") (binary_expression "iVar17 - 0x29" (identifier "iVar17") (- "-") (number_literal "0x29"))) (; ";")) (} "}"))) (expression_statement "uVar3 = iVar17 + 1;" (assignment_expression "uVar3 = iVar17 + 1" (identifier "uVar3") (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = iVar17 + 0x2bU;" (assignment_expression "uVar2 = iVar17 + 0x2bU" (identifier "uVar2") (= "=") (binary_expression "iVar17 + 0x2bU" (identifier "iVar17") (+ "+") (number_literal "0x2bU"))) (; ";")) (if_statement "if (0x3e < iVar17 + 0x2bU) {\n        uVar2 = iVar17 - 0x14;\n      }" (if "if") (parenthesized_expression "(0x3e < iVar17 + 0x2bU)" (( "(") (binary_expression "0x3e < iVar17 + 0x2bU" (number_literal "0x3e") (< "<") (binary_expression "iVar17 + 0x2bU" (identifier "iVar17") (+ "+") (number_literal "0x2bU"))) () ")")) (compound_statement "{\n        uVar2 = iVar17 - 0x14;\n      }" ({ "{") (expression_statement "uVar2 = iVar17 - 0x14;" (assignment_expression "uVar2 = iVar17 - 0x14" (identifier "uVar2") (= "=") (binary_expression "iVar17 - 0x14" (identifier "iVar17") (- "-") (number_literal "0x14"))) (; ";")) (} "}"))) (expression_statement "uVar14 = (ulong)uVar1;" (assignment_expression "uVar14 = (ulong)uVar1" (identifier "uVar14") (= "=") (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1"))) (; ";")) (} "}"))) (expression_statement "FUN_001a236a(pcVar19,uStack_230._7_1_,2);" (call_expression "FUN_001a236a(pcVar19,uStack_230._7_1_,2)" (identifier "FUN_001a236a") (argument_list "(pcVar19,uStack_230._7_1_,2)" (( "(") (identifier "pcVar19") (, ",") (field_expression "uStack_230._7_1_" (identifier "uStack_230") (. ".") (field_identifier "_7_1_")) (, ",") (number_literal "2") () ")"))) (; ";")) (} "}")))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" (identifier "free") (argument_list "(pcVar7)" (( "(") (identifier "pcVar7") () ")"))) (; ";")) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return puVar5;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return puVar5;\n  }" ({ "{") (return_statement "return puVar5;" (return "return") (identifier "puVar5") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

char * function_1(char *key_data,char *var_5)

{
  type_1 *paVar1;
  type_2 *paVar2;
  long var_33;
  type_3 uVar4;
  int var_7;
  type_3 var_11;
  size_t var_19;
  char *var_4;
  char *var_23;
  type_4 *var_28;
  char *pcVar10;
  long var_24;
  type_5 var_21;
  type_5 uVar13;
  type_6 *pcVar14;
  type_6 *pcVar15;
  type_5 var_30;
  type_6 *pcVar17;
  type_7 *var_25;
  type_3 var_10;
  type_7 *var_26;
  char *var_13;
  long var_1;
  bool bVar22;
  type_8 bVar23;
  type_3 var_18;
  type_3 var_20;
  type_3 var_29;
  char *var_9;
  type_9 L;
  
  bVar23 = 0;
  var_33 = *(long *)(var_1 + 0x28);
  var_19 = var_2(var_5);
  var_10 = (int)var_19 + 0x58;
  var_18 = 0x40;
  if (var_5[1] != '6') {
    var_10 = (int)var_19 + 0x2d;
    var_18 = 0x20;
  }
  var_4 = (char *)var_3((type_5)var_10);
  *var_4 = '$';
  var_4[1] = var_5[1];
  var_13 = var_4 + 3;
  var_4[2] = '$';
  pcVar10 = var_5 + 3;
  var_7 = var_6(pcVar10,"rounds=%u$",7);
  var_29 = 5000;
  if (var_7 == 0) {
    var_10 = var_8(var_5 + 10,&var_9,10);
    var_29 = 5000;
    if (*var_9 == '$') {
      pcVar10 = var_9 + 1;
      var_11 = 999999999;
      if (var_10 < 1000000000) {
        var_11 = var_10;
      }
      var_29 = 1000;
      if (999 < var_11) {
        var_29 = var_11;
      }
      var_7 = var_12(var_13,1,0xffffffffffffffff,"rounds=%u$",var_29);
      var_13 = var_13 + var_7;
    }
  }
  var_23 = var_14(pcVar10,0x24);
  var_11 = (int)var_23 - (int)pcVar10;
  var_10 = 0x10;
  if (var_11 < 0x11) {
    var_10 = var_11;
  }
  var_28 = (type_4 *)var_15(pcVar10,var_10);
  var_16(var_13,(char *)var_28);
  var_30 = (type_5)var_10;
  var_13[var_30] = '$';
  var_19 = var_2(key_data);
  pcVar10 = var_17(key_data);
  bVar22 = var_18 != 0x20;
  pcVar14 = sha512_end;
  if (!bVar22) {
    pcVar14 = sha1_end;
  }
  pcVar15 = md5_hash;
  if (bVar22) {
    pcVar15 = sha512_hash;
  }
  pcVar17 = sha512_begin;
  if (!bVar22) {
    pcVar17 = sha256_begin;
  }
  var_20 = (type_3)var_19;
  paVar2 = &L.ctx;
  (*pcVar17)(paVar2);
  uVar13 = var_19 & 0xffffffff;
  (*pcVar15)(paVar2,pcVar10);
  (*pcVar15)(paVar2,var_28,var_30);
  paVar1 = &L.alt_ctx;
  (*pcVar17)(paVar1);
  (*pcVar15)(paVar1,pcVar10,uVar13);
  (*pcVar15)(paVar1,var_28,var_30);
  (*pcVar15)(paVar1,pcVar10,uVar13);
  (*pcVar14)(paVar1,&L);
  var_23 = pcVar10;
  if (var_18 < var_20) {
    var_21 = var_19 & 0xffffffff;
    do {
      (*pcVar15)(&L.ctx,&L,var_18);
      var_11 = (int)var_21 - var_18;
      var_21 = (type_5)var_11;
    } while (var_18 < var_11);
    (*pcVar15)(&L.ctx,&L,var_11);
  }
  else {
    (*pcVar15)(&L.ctx,&L,uVar13);
    if (var_20 == 0) {
      (*pcVar14)(&L.ctx,&L);
      (*pcVar17)(&L.alt_ctx);
      (*pcVar14)(&L.alt_ctx,L.temp_result);
      goto LAB_001a2ffd;
    }
  }
  var_21 = var_19 & 0xffffffff;
  do {
    if ((var_21 & 1) == 0) {
      (*pcVar15)(&L.ctx,pcVar10,uVar13);
    }
    else {
      (*pcVar15)(&L.ctx,&L,var_18);
    }
    var_11 = (type_3)var_21 >> 1;
    var_21 = (type_5)var_11;
  } while (var_11 != 0);
  (*pcVar14)(&L.ctx,&L);
  (*pcVar17)(&L.alt_ctx);
  do {
    (*pcVar15)(&L.alt_ctx,pcVar10,uVar13);
    var_11 = (int)var_21 + 1;
    var_21 = (type_5)var_11;
  } while (var_11 < var_20);
  (*pcVar14)(&L.alt_ctx,L.temp_result);
  if (var_18 <= var_20) {
    do {
      *(type_5 *)var_23 = var_22(L.temp_result._4_4_,L.temp_result._0_4_);
      *(type_7 *)(var_23 + ((type_5)var_18 - 8)) =
           *(type_7 *)(L.alt_result + (type_5)var_18 + 0x38);
      var_24 = (long)var_23 - (long)((type_5)(var_23 + 8) & 0xfffffffffffffff8);
      var_25 = (type_7 *)((long)&L + (0x40 - var_24));
      var_26 = (type_7 *)((type_5)(var_23 + 8) & 0xfffffffffffffff8);
      for (var_21 = (type_5)((int)var_24 + var_18 >> 3); var_21 != 0; var_21 = var_21 - 1) {
        *var_26 = *var_25;
        var_25 = var_25 + (type_5)bVar23 * -2 + 1;
        var_26 = var_26 + (type_5)bVar23 * -2 + 1;
      }
      var_23 = var_23 + (int)var_18;
      var_20 = var_20 - var_18;
    } while (var_18 <= var_20);
  }
LAB_001a2ffd:
  var_27(var_23,L.temp_result,(type_5)var_20);
  (*pcVar17)(&L.alt_ctx);
  var_11 = 0;
  do {
    (*pcVar15)(&L.alt_ctx,var_28,var_30);
    var_11 = var_11 + 1;
  } while (var_11 < L.alt_result[0] + 0x10);
  (*pcVar14)(&L.alt_ctx,L.temp_result);
  if (var_10 < 8) {
    if ((var_10 & 4) == 0) {
      if (var_10 != 0) {
        *var_28 = L.temp_result[0];
        if ((var_10 & 2) != 0) {
          *(type_10 *)(var_28 + ((type_5)var_10 - 2)) =
               *(type_10 *)(L.alt_result + (type_5)var_10 + 0x3e);
        }
      }
    }
    else {
      *(type_11 *)var_28 = L.temp_result._0_4_;
      *(type_11 *)(var_28 + ((type_5)var_10 - 4)) =
           *(type_11 *)(L.alt_result + (type_5)var_10 + 0x3c);
    }
  }
  else {
    *(type_5 *)var_28 = var_22(L.temp_result._4_4_,L.temp_result._0_4_);
    *(type_7 *)(var_28 + ((type_5)var_10 - 8)) =
         *(type_7 *)(L.alt_result + (type_5)var_10 + 0x38);
    var_24 = (long)var_28 - ((type_5)(var_28 + 8) & 0xfffffffffffffff8);
    var_10 = var_10 + (int)var_24 & 0xfffffff8;
    if (7 < var_10) {
      var_11 = 0;
      do {
        *(type_7 *)(((type_5)(var_28 + 8) & 0xfffffffffffffff8) + (type_5)var_11) =
             *(type_7 *)(L.temp_result + ((type_5)var_11 - var_24));
        var_11 = var_11 + 8;
      } while (var_11 < var_10);
    }
  }
  var_10 = 0;
  paVar2 = &L.ctx;
  do {
    (*pcVar17)(paVar2);
    if ((var_10 & 1) == 0) {
      (*pcVar15)(paVar2,&L,var_18);
    }
    else {
      (*pcVar15)(paVar2,pcVar10,uVar13);
    }
    if (var_10 != (var_10 / 3) * 3) {
      (*pcVar15)(paVar2,var_28,var_30);
    }
    if (var_10 != (var_10 / 7) * 7) {
      (*pcVar15)(paVar2,pcVar10,uVar13);
    }
    if ((var_10 & 1) == 0) {
      (*pcVar15)(paVar2,pcVar10,uVar13);
    }
    else {
      (*pcVar15)(paVar2,&L,var_18);
    }
    (*pcVar14)(paVar2,&L);
    var_10 = var_10 + 1;
  } while (var_29 != var_10);
  var_13 = var_13 + var_30 + 1;
  var_11 = 0;
  var_30 = 0x15;
  var_10 = 0x2a;
  if (var_18 == 0x20) {
    var_10 = 10;
    var_11 = 0;
    var_30 = 0x14;
    while( true ) {
      var_7 = (int)var_30;
      var_13 = var_31(var_13,(type_3)L.alt_result[var_11] << 0x10 | (type_3)L.alt_result[var_10] << 8 |
                             (type_3)L.alt_result[var_30],4);
      if (var_7 == 0x1d) break;
      var_10 = var_7 + 0xbU;
      if (0x1d < var_7 + 0xbU) {
        var_10 = var_7 - 0x13;
      }
      var_11 = var_7 + 1;
      uVar4 = var_7 - 9;
      if (var_7 + 0x15U < 0x1e) {
        uVar4 = var_7 + 0x15U;
      }
      var_30 = (type_5)uVar4;
    }
    var_31(var_13,(type_3)(type_12)L.alt_result._30_2_,3);
  }
  else {
    while( true ) {
      var_7 = (int)var_30;
      var_13 = var_31(var_13,(type_3)L.alt_result[var_11] << 0x10 | (type_3)L.alt_result[var_30] << 8 |
                             (type_3)L.alt_result[var_10],4);
      if (var_7 == 0x14) break;
      uVar4 = var_7 + 0x16U;
      if (0x3e < var_7 + 0x16U) {
        uVar4 = var_7 - 0x29;
      }
      var_11 = var_7 + 1;
      var_10 = var_7 + 0x2bU;
      if (0x3e < var_7 + 0x2bU) {
        var_10 = var_7 - 0x14;
      }
      var_30 = (type_5)uVar4;
    }
    var_31(var_13,(type_3)L.alt_result[0x3f],2);
  }
  var_32(pcVar10);
  var_32(var_28);
  if (var_33 == *(long *)(var_1 + 0x28)) {
    return var_4;
  }
                    /* WARNING: Subroutine does not return */
  var_34();
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (string_literal (string_content)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (char_literal (character)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) (for_statement initializer: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier))) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier)))) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal))))) alternative: (else_clause (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier))) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier)))) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (field_expression argument: (identifier) field: (field_identifier)) (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

undefined1 * MASKED(char *param_1,char *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  size_t sVar4;
  undefined1 *puVar5;
  char *pcVar6;
  char *pcVar7;
  undefined8 *__ptr;
  undefined8 *puVar8;
  long lVar9;
  ulong uVar10;
  ulong uVar11;
  code *pcVar12;
  code *pcVar13;
  ulong uVar14;
  code *pcVar15;
  undefined8 *puVar16;
  int iVar17;
  undefined8 *puVar18;
  char *pcVar19;
  long in_FS_OFFSET;
  bool bVar20;
  byte bVar21;
  uint local_298;
  uint local_294;
  uint local_290;
  char *local_270;
  byte local_268 [30];
  undefined2 local_24a;
  undefined8 uStack_230;
  undefined8 local_228;
  undefined1 local_1e8 [208];
  undefined1 local_118 [216];
  long local_40;
  
  bVar21 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  sVar4 = strlen(param_2);
  iVar17 = (int)sVar4 + 0x58;
  local_298 = 0x40;
  if (param_2[1] != '6') {
    iVar17 = (int)sVar4 + 0x2d;
    local_298 = 0x20;
  }
  puVar5 = (undefined1 *)FUN_0010e602(iVar17);
  *puVar5 = 0x24;
  puVar5[1] = param_2[1];
  pcVar19 = puVar5 + 3;
  puVar5[2] = 0x24;
  pcVar7 = param_2 + 3;
  iVar17 = strncmp(pcVar7,"rounds=%u$",7);
  local_290 = 5000;
  if (iVar17 == 0) {
    uVar2 = FUN_001101c1(param_2 + 10,&local_270,10);
    local_290 = 5000;
    if (*local_270 == '$') {
      pcVar7 = local_270 + 1;
      uVar3 = 999999999;
      if (uVar2 < 1000000000) {
        uVar3 = uVar2;
      }
      local_290 = 1000;
      if (999 < uVar3) {
        local_290 = uVar3;
      }
      iVar17 = __sprintf_chk(pcVar19,1,0xffffffffffffffff,"rounds=%u$",local_290);
      pcVar19 = pcVar19 + iVar17;
    }
  }
  pcVar6 = strchrnul(pcVar7,0x24);
  uVar3 = (int)pcVar6 - (int)pcVar7;
  uVar2 = 0x10;
  if (uVar3 < 0x11) {
    uVar2 = uVar3;
  }
  pcVar7 = (char *)FUN_0010e648(pcVar7,uVar2);
  strcpy(pcVar19,pcVar7);
  uVar14 = (ulong)uVar2;
  pcVar19[uVar14] = '$';
  sVar4 = strlen(param_1);
  __ptr = (undefined8 *)FUN_0010e627(param_1);
  bVar20 = local_298 != 0x20;
  pcVar12 = FUN_0019cf5c;
  if (!bVar20) {
    pcVar12 = FUN_0019cec9;
  }
  pcVar13 = FUN_0019ccd2;
  if (bVar20) {
    pcVar13 = FUN_0019ce29;
  }
  pcVar15 = FUN_0019cdf9;
  if (!bVar20) {
    pcVar15 = FUN_0019cdca;
  }
  local_294 = (uint)sVar4;
  (*pcVar15)(local_1e8);
  uVar11 = sVar4 & 0xffffffff;
  (*pcVar13)(local_1e8,__ptr);
  (*pcVar13)(local_1e8,pcVar7,uVar14);
  (*pcVar15)(local_118);
  (*pcVar13)(local_118,__ptr,uVar11);
  (*pcVar13)(local_118,pcVar7,uVar14);
  (*pcVar13)(local_118,__ptr,uVar11);
  (*pcVar12)(local_118,local_268);
  puVar8 = __ptr;
  if (local_298 < local_294) {
    uVar10 = sVar4 & 0xffffffff;
    do {
      (*pcVar13)(local_1e8,local_268,local_298);
      uVar3 = (int)uVar10 - local_298;
      uVar10 = (ulong)uVar3;
    } while (local_298 < uVar3);
    (*pcVar13)(local_1e8,local_268,uVar3);
  }
  else {
    (*pcVar13)(local_1e8,local_268,uVar11);
    if (local_294 == 0) {
      (*pcVar12)(local_1e8,local_268);
      (*pcVar15)(local_118);
      (*pcVar12)(local_118,&local_228);
      goto LAB_001a2ffd;
    }
  }
  uVar10 = sVar4 & 0xffffffff;
  do {
    if ((uVar10 & 1) == 0) {
      (*pcVar13)(local_1e8,__ptr,uVar11);
    }
    else {
      (*pcVar13)(local_1e8,local_268,local_298);
    }
    uVar3 = (uint)uVar10 >> 1;
    uVar10 = (ulong)uVar3;
  } while (uVar3 != 0);
  (*pcVar12)(local_1e8,local_268);
  (*pcVar15)(local_118);
  do {
    (*pcVar13)(local_118,__ptr,uVar11);
    uVar3 = (int)uVar10 + 1;
    uVar10 = (ulong)uVar3;
  } while (uVar3 < local_294);
  (*pcVar12)(local_118,&local_228);
  if (local_298 <= local_294) {
    do {
      *puVar8 = CONCAT44(local_228._4_4_,(undefined4)local_228);
      *(undefined8 *)((long)puVar8 + ((ulong)local_298 - 8)) =
           *(undefined8 *)((long)&uStack_230 + (ulong)local_298);
      lVar9 = (long)puVar8 - (long)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);
      puVar16 = (undefined8 *)((long)&local_228 - lVar9);
      puVar18 = (undefined8 *)((ulong)(puVar8 + 1) & 0xfffffffffffffff8);
      for (uVar10 = (ulong)((int)lVar9 + local_298 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) {
        *puVar18 = *puVar16;
        puVar16 = puVar16 + (ulong)bVar21 * -2 + 1;
        puVar18 = puVar18 + (ulong)bVar21 * -2 + 1;
      }
      puVar8 = (undefined8 *)((long)puVar8 + (long)(int)local_298);
      local_294 = local_294 - local_298;
    } while (local_298 <= local_294);
  }
LAB_001a2ffd:
  memcpy(puVar8,&local_228,(ulong)local_294);
  (*pcVar15)(local_118);
  uVar3 = 0;
  do {
    (*pcVar13)(local_118,pcVar7,uVar14);
    uVar3 = uVar3 + 1;
  } while (uVar3 < local_268[0] + 0x10);
  (*pcVar12)(local_118,&local_228);
  if (uVar2 < 8) {
    if ((uVar2 & 4) == 0) {
      if (uVar2 != 0) {
        *pcVar7 = (char)local_228;
        if ((uVar2 & 2) != 0) {
          *(undefined2 *)(pcVar7 + ((ulong)uVar2 - 2)) =
               *(undefined2 *)((long)&uStack_230 + (ulong)uVar2 + 6);
        }
      }
    }
    else {
      *(undefined4 *)pcVar7 = (undefined4)local_228;
      *(undefined4 *)(pcVar7 + ((ulong)uVar2 - 4)) =
           *(undefined4 *)((long)&uStack_230 + (ulong)uVar2 + 4);
    }
  }
  else {
    *(ulong *)pcVar7 = CONCAT44(local_228._4_4_,(undefined4)local_228);
    *(undefined8 *)(pcVar7 + ((ulong)uVar2 - 8)) = *(undefined8 *)((long)&uStack_230 + (ulong)uVar2)
    ;
    lVar9 = (long)pcVar7 - ((ulong)(pcVar7 + 8) & 0xfffffffffffffff8);
    uVar2 = uVar2 + (int)lVar9 & 0xfffffff8;
    if (7 < uVar2) {
      uVar3 = 0;
      do {
        *(undefined8 *)(((ulong)(pcVar7 + 8) & 0xfffffffffffffff8) + (ulong)uVar3) =
             *(undefined8 *)((long)&local_228 + ((ulong)uVar3 - lVar9));
        uVar3 = uVar3 + 8;
      } while (uVar3 < uVar2);
    }
  }
  uVar2 = 0;
  do {
    (*pcVar15)(local_1e8);
    if ((uVar2 & 1) == 0) {
      (*pcVar13)(local_1e8,local_268,local_298);
    }
    else {
      (*pcVar13)(local_1e8,__ptr,uVar11);
    }
    if (uVar2 != (uVar2 / 3) * 3) {
      (*pcVar13)(local_1e8,pcVar7,uVar14);
    }
    if (uVar2 != (uVar2 / 7) * 7) {
      (*pcVar13)(local_1e8,__ptr,uVar11);
    }
    if ((uVar2 & 1) == 0) {
      (*pcVar13)(local_1e8,__ptr,uVar11);
    }
    else {
      (*pcVar13)(local_1e8,local_268,local_298);
    }
    (*pcVar12)(local_1e8,local_268);
    uVar2 = uVar2 + 1;
  } while (local_290 != uVar2);
  pcVar19 = pcVar19 + uVar14 + 1;
  uVar3 = 0;
  uVar14 = 0x15;
  uVar2 = 0x2a;
  if (local_298 == 0x20) {
    uVar2 = 10;
    uVar3 = 0;
    uVar14 = 0x14;
    while( true ) {
      iVar17 = (int)uVar14;
      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |
                                             (uint)local_268[uVar2] << 8 | (uint)local_268[uVar14],4
                                    );
      if (iVar17 == 0x1d) break;
      uVar2 = iVar17 + 0xbU;
      if (0x1d < iVar17 + 0xbU) {
        uVar2 = iVar17 - 0x13;
      }
      uVar3 = iVar17 + 1;
      uVar1 = iVar17 - 9;
      if (iVar17 + 0x15U < 0x1e) {
        uVar1 = iVar17 + 0x15U;
      }
      uVar14 = (ulong)uVar1;
    }
    FUN_001a236a(pcVar19,local_24a,3);
  }
  else {
    while( true ) {
      iVar17 = (int)uVar14;
      pcVar19 = (char *)FUN_001a236a(pcVar19,(uint)local_268[uVar3] << 0x10 |
                                             (uint)local_268[uVar14] << 8 | (uint)local_268[uVar2],4
                                    );
      if (iVar17 == 0x14) break;
      uVar1 = iVar17 + 0x16U;
      if (0x3e < iVar17 + 0x16U) {
        uVar1 = iVar17 - 0x29;
      }
      uVar3 = iVar17 + 1;
      uVar2 = iVar17 + 0x2bU;
      if (0x3e < iVar17 + 0x2bU) {
        uVar2 = iVar17 - 0x14;
      }
      uVar14 = (ulong)uVar1;
    }
    FUN_001a236a(pcVar19,uStack_230._7_1_,2);
  }
  free(__ptr);
  free(pcVar7);
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return puVar5;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

