
void sha512_mpint(SHA512_State *s,Bignum b)

{
  int iVar1;
  int iVar2;
  uchar lenbuf [4];
  
  iVar1 = bignum_bitcount((Bignum_conflict)b);
  iVar2 = iVar1 + 8;
  if (iVar2 < 0) {
    iVar2 = iVar1 + 0xf;
  }
  lenbuf = (uchar  [4])(iVar2 >> 3);
  SHA512_Bytes(s,lenbuf,4);
  if (iVar1 < 0) {
                    /* WARNING: Subroutine does not return */
    smemclr(lenbuf,4);
  }
                    /* WARNING: Subroutine does not return */
  bignum_byte((Bignum_conflict)b,(iVar2 >> 3) + -1);
}



char * FUN_0003dff0(undefined4 param_1,undefined4 param_2)

{
  byte bVar1;
  char cVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  undefined1 uVar11;
  char *pcVar6;
  char cVar12;
  int *piVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined *puVar10;
  undefined4 *puVar13;
  int *piVar14;
  undefined4 *puVar15;
  byte *pbVar16;
  byte *pbVar17;
  undefined4 uVar18;
  int *piVar19;
  byte *pbVar20;
  byte *pbVar21;
  byte *pbVar22;
  uint uVar23;
  int *piVar24;
  int iVar25;
  int iVar26;
  int iVar27;
  int iVar28;
  int iVar29;
  int iVar30;
  int iVar31;
  char *pcVar32;
  int iVar33;
  char *pcVar34;
  char *pcVar35;
  char *pcVar36;
  char *pcVar37;
  code *pcVar38;
  code *pcVar39;
  int iStack_f8;
  byte abStack_f4 [64];
  char *pcStack_b4;
  int *piStack_b0;
  int iStack_ac;
  int iStack_a8;
  char *pcStack_a4;
  char *pcStack_a0;
  char *pcStack_9c;
  char *pcStack_98;
  char *pcStack_94;
  int iStack_90;
  code *pcStack_8c;
  undefined *local_78;
  char *local_70;
  char *local_6c;
  int local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined *local_5c;
  int *local_58;
  int local_54;
  int local_28;
  char *local_24;
  
  puVar10 = PTR___stack_chk_guard_0006a594;
  local_24 = *(char **)PTR___stack_chk_guard_0006a594;
  iVar5 = bignum_bitcount(param_2);
  iVar25 = iVar5 + 8;
  if (iVar25 < 0) {
    iVar25 = iVar5 + 0xf;
  }
  local_28 = iVar25 >> 3;
  SHA512_Bytes(param_1,&local_28,4);
  iVar26 = (iVar25 >> 3) + -1;
  iVar25 = iVar26;
  if (-1 < iVar5) {
    do {
      iVar26 = iVar25;
      uVar11 = bignum_byte(param_2,iVar26);
      local_28 = CONCAT13(uVar11,local_28._1_3_);
      SHA512_Bytes(param_1,&local_28,1);
      iVar25 = iVar26 + -1;
    } while (0 < iVar26);
  }
  puVar15 = (undefined4 *)&DAT_00000004;
  piVar14 = &local_28;
  smemclr();
  pcVar6 = *(char **)puVar10;
  if (local_24 == pcVar6) {
    return pcVar6;
  }
  puVar8 = PTR___stack_chk_fail_0006a574;
  (*(code *)PTR___stack_chk_fail_0006a574)();
  local_78 = puVar8 + 0x33f18;
  local_5c = puVar10;
  local_68 = iVar26;
  local_64 = param_1;
  local_60 = param_2;
  local_58 = &local_28;
  local_54 = iVar5;
  iVar5 = bignum_bitcount(piVar14[4]);
  iVar25 = iVar5 + 8;
  if (iVar25 < 0) {
    iVar25 = iVar5 + 0xf;
  }
  iVar33 = iVar25 >> 3;
  iVar5 = bignum_bitcount(piVar14[5]);
  iVar26 = iVar5 + 8;
  if (iVar26 < 0) {
    iVar26 = iVar5 + 0xf;
  }
  iVar31 = iVar26 >> 3;
  iVar5 = bignum_bitcount(piVar14[6]);
  iVar29 = iVar5 + 8;
  if (iVar29 < 0) {
    iVar29 = iVar5 + 0xf;
  }
  iVar30 = iVar29 >> 3;
  iVar5 = bignum_bitcount(piVar14[7]);
  iVar27 = iVar5 + 8;
  if (iVar27 < 0) {
    iVar27 = iVar5 + 0xf;
  }
  iVar28 = iVar27 >> 3;
  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);
  iVar5 = iVar33 + -1;
  local_70 = pcVar35 + iVar28;
  local_6c = (char *)safemalloc(local_70,1);
  *local_6c = (char)(iVar25 >> 0x1b);
  local_6c[1] = (char)(iVar25 >> 0x13);
  pcVar36 = local_6c + 4;
  local_6c[2] = (char)(iVar25 >> 0xb);
  local_6c[3] = (char)iVar33;
  pcVar6 = pcVar36;
  if (iVar33 != 0) {
    do {
      pcVar35 = pcVar6 + 1;
      iVar25 = iVar5 + -1;
      cVar12 = bignum_byte(piVar14[4],iVar5);
      *pcVar6 = cVar12;
      pcVar6 = pcVar35;
      iVar5 = iVar25;
    } while (iVar25 != -1);
    pcVar36 = pcVar36 + iVar33;
    iVar5 = -1;
  }
  pcVar36[3] = (char)iVar31;
  *pcVar36 = (char)(iVar26 >> 0x1b);
  pcVar36[1] = (char)(iVar26 >> 0x13);
  pcVar34 = pcVar36 + 4;
  pcVar36[2] = (char)(iVar26 >> 0xb);
  pcVar6 = (char *)(iVar31 + -1);
  pcVar36 = pcVar34;
  if (iVar31 != 0) {
    do {
      pcVar35 = pcVar36 + 1;
      pcVar37 = pcVar6 + -1;
      cVar12 = bignum_byte(piVar14[5],pcVar6);
      *pcVar36 = cVar12;
      pcVar36 = pcVar35;
      pcVar6 = pcVar37;
    } while (pcVar37 != (char *)0xffffffff);
    pcVar34 = pcVar34 + iVar31;
    pcVar6 = (char *)0xffffffff;
  }
  pcVar34[3] = (char)iVar30;
  *pcVar34 = (char)(iVar29 >> 0x1b);
  pcVar34[1] = (char)(iVar29 >> 0x13);
  pcVar37 = pcVar34 + 4;
  pcVar34[2] = (char)(iVar29 >> 0xb);
  pcVar36 = (char *)(iVar30 + -1);
  pcVar34 = pcVar37;
  if (iVar30 != 0) {
    do {
      pcVar6 = pcVar34 + 1;
      pcVar32 = pcVar36 + -1;
      cVar12 = bignum_byte(piVar14[6],pcVar36);
      *pcVar34 = cVar12;
      pcVar36 = pcVar32;
      pcVar34 = pcVar6;
    } while (pcVar32 != (char *)0xffffffff);
    pcVar37 = pcVar37 + iVar30;
    pcVar36 = (char *)0xffffffff;
  }
  pcVar37[3] = (char)iVar28;
  *pcVar37 = (char)(iVar27 >> 0x1b);
  pcVar37[1] = (char)(iVar27 >> 0x13);
  pcVar34 = pcVar37 + 4;
  pcVar37[2] = (char)(iVar27 >> 0xb);
  iStack_a8 = iVar28 + -1;
  if (iVar28 != 0) {
    pcVar37 = (char *)0xffffffff;
    pcVar32 = pcVar34;
    do {
      pcVar36 = pcVar32 + 1;
      iVar25 = iStack_a8 + -1;
      cVar12 = bignum_byte(piVar14[7],iStack_a8);
      *pcVar32 = cVar12;
      iStack_a8 = iVar25;
      pcVar32 = pcVar36;
    } while (iVar25 != -1);
    pcVar34 = pcVar34 + iVar28;
    iStack_a8 = -1;
  }
  if (pcVar34 == local_6c + (int)local_70) {
    *puVar15 = local_70;
    return local_6c;
  }
  uVar18 = 0x2b0;
  pcVar38 = *(code **)(local_78 + -0x7bb8);
  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);
  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);
  pcVar39 = FUN_0003e3e0;
  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);
  (*pcVar38)();
  piVar7 = *(int **)(pcVar38 + 0x2c1b4);
  pcStack_b4 = (char *)*piVar7;
  puVar15 = puVar13;
  pbVar17 = pbVar16;
  piStack_b0 = piVar14;
  iStack_ac = iVar28;
  pcStack_a4 = pcVar36;
  pcStack_a0 = pcVar34;
  pcStack_9c = pcVar35;
  pcStack_98 = pcVar37;
  pcStack_94 = pcVar6;
  iStack_90 = iVar5;
  pcStack_8c = pcVar39;
  if (0 < (int)local_78) {
    puVar8 = (undefined *)puVar13[5];
    puVar10 = puVar8;
    if ((int)local_78 <= (int)puVar8) {
      puVar10 = local_78;
    }
    if ((int)puVar8 < 0x41) {
      pbVar17 = pbVar20;
      puVar8 = local_78;
      iVar5 = 0;
      do {
        iStack_f8 = iVar5;
        puVar15 = (undefined4 *)(*(code *)*puVar13)();
        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);
        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);
        (*(code *)puVar13[3])(puVar15,abStack_f4);
        if (0 < (int)puVar10) {
          pbVar20 = abStack_f4;
          pbVar21 = pbVar17;
          do {
            pbVar22 = pbVar21 + 1;
            bVar1 = *pbVar20;
            puVar15 = (undefined4 *)(uint)bVar1;
            pbVar20 = pbVar20 + 1;
            *pbVar21 = *pbVar21 ^ bVar1;
            pbVar21 = pbVar22;
          } while (pbVar17 + (int)puVar10 != pbVar22);
        }
        pbVar17 = puVar10 + (int)pbVar17;
        puVar8 = puVar8 + -(int)puVar10;
        if ((int)puVar8 < 1) goto LAB_0003e530;
        puVar9 = (undefined *)puVar13[5];
        puVar10 = puVar9;
        if ((int)puVar8 < (int)puVar9) {
          puVar10 = puVar8;
        }
        iVar5 = iVar5 + 1;
      } while ((int)puVar9 < 0x41);
    }
    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);
    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);
    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);
  }
LAB_0003e530:
  pcVar6 = (char *)*piVar7;
  if (pcStack_b4 == pcVar6) {
    return pcVar6;
  }
  pcVar38 = *(code **)(pcVar38 + 0x2c194);
  (*pcVar38)();
  iVar5 = bignum_bitcount(puVar15[3]);
  iVar25 = iVar5 + 8;
  if (iVar25 < 0) {
    iVar25 = iVar5 + 0xf;
  }
  iVar26 = iVar25 >> 3;
  iVar5 = bignum_bitcount(puVar15[2]);
  iVar33 = iVar5 + 8;
  if (iVar33 < 0) {
    iVar33 = iVar5 + 0xf;
  }
  iVar31 = iVar33 >> 3;
  iVar27 = iVar26 + 0x13 + iVar31;
  iVar5 = iVar26 + -1;
  pcVar35 = (char *)safemalloc(iVar27,1);
  pcVar35[3] = '\a';
  *pcVar35 = '\0';
  iVar29 = *(int *)(pcVar38 + 0x2baec);
  pcVar35[1] = '\0';
  pcVar36 = pcVar35 + 0xf;
  pcVar35[2] = '\0';
  uVar23 = *(uint *)(iVar29 + -0x1ac0);
  cVar12 = *(char *)(iVar29 + -0x1abc);
  cVar2 = *(char *)(iVar29 + -0x1abb);
  cVar3 = *(char *)(iVar29 + -0x1aba);
  pcVar6 = pcVar35 + 4;
  uVar4 = (uint)pcVar6 & 3;
  *(uint *)(pcVar6 + -uVar4) =
       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;
  pcVar6 = pcVar35 + 7;
  uVar4 = (uint)pcVar6 & 3;
  *(uint *)(pcVar6 + -uVar4) =
       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;
  pcVar35[8] = cVar12;
  pcVar35[9] = cVar2;
  pcVar35[10] = cVar3;
  pcVar35[0xb] = (char)(iVar25 >> 0x1b);
  pcVar35[0xc] = (char)(iVar25 >> 0x13);
  pcVar35[0xd] = (char)(iVar25 >> 0xb);
  pcVar35[0xe] = (char)iVar26;
  pcVar6 = pcVar36;
  if (iVar26 != 0) {
    do {
      iVar25 = iVar5 + -1;
      cVar12 = bignum_byte(puVar15[3],iVar5);
      *pcVar6 = cVar12;
      iVar5 = iVar25;
      pcVar6 = pcVar6 + 1;
    } while (iVar25 != -1);
    pcVar36 = pcVar36 + iVar26;
  }
  pcVar36[3] = (char)iVar31;
  *pcVar36 = (char)(iVar33 >> 0x1b);
  pcVar36[1] = (char)(iVar33 >> 0x13);
  pcVar34 = pcVar36 + 4;
  pcVar36[2] = (char)(iVar33 >> 0xb);
  iVar5 = iVar31 + -1;
  pcVar6 = pcVar34;
  if (iVar31 != 0) {
    do {
      iVar25 = iVar5 + -1;
      cVar12 = bignum_byte(puVar15[2],iVar5);
      *pcVar6 = cVar12;
      iVar5 = iVar25;
      pcVar6 = pcVar6 + 1;
    } while (iVar25 != -1);
    pcVar34 = pcVar34 + iVar31;
  }
  if (pcVar34 != pcVar35 + iVar27) {
    piVar19 = (int *)&DAT_00000288;
    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);
    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);
    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);
    (**(code **)(pcVar38 + 0x2befc))();
    iVar5 = *piVar7;
    *piVar19 = 0;
    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {
      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);
      *piVar24 = (int)pcVar6;
      if (-1 < (int)pcVar6) {
        pcVar6 = (char *)(*piVar7 + -4);
        iVar5 = *piVar14 + 4;
        *piVar7 = (int)pcVar6;
        *piVar14 = iVar5;
        iVar25 = *piVar24;
        if (iVar25 <= (int)pcVar6) {
          *piVar19 = iVar5;
          pcVar6 = pcVar6 + -iVar25;
          *piVar14 = iVar5 + iVar25;
          *piVar7 = (int)pcVar6;
        }
      }
      return pcVar6;
    }
    return (char *)(uint)(iVar5 < 4);
  }
  *(int *)pbVar17 = iVar27;
  return pcVar35;
}


lui gp,0x3
addiu gp,gp,0x4040
addu gp,gp,t9
addiu sp,sp,-0x40
lw t9,-0x7e24(gp)
sw s3,0x30(sp)
lw s3,-0x7a9c(gp)
sw gp,0x10(sp)
sw s5,0x38(sp)
sw s2,0x2c(sp)
or s2,a1,zero
sw s1,0x28(sp)
or s1,a0,zero
sw s0,0x24(sp)
or a0,a1,zero
sw ra,0x3c(sp)
sw s4,0x34(sp)
lw v0,0x0(s3)
sw v0,0x1c(sp)
bal 0x000278a8
_nop
addiu s0,v0,0x8
lw gp,0x10(sp)
bgez s0,0x0003e058
_or s5,v0,zero
addiu s0,v0,0xf
lw t9,-0x7da0(gp)
sra s0,s0,0x3
addiu s4,sp,0x18
li a2,0x4
sw s0,0x18(sp)
or a1,s4,zero
bal 0x000429c8
_or a0,s1,zero
addiu s0,s0,-0x1
bgez s5,0x0003e090
_lw gp,0x10(sp)
b 0x0003e0cc
_lw t9,-0x7f88(gp)
or s0,v0,zero
lw t9,-0x7e20(gp)
or a1,s0,zero
bal 0x00027a10
_or a0,s2,zero
li a2,0x1
lw gp,0x10(sp)
or a1,s4,zero
sb v0,0x18(sp)
lw t9,-0x7da0(gp)
bal 0x000429c8
_or a0,s1,zero
addiu v0,s0,-0x1
bgtz s0,0x0003e08c
_lw gp,0x10(sp)
lw t9,-0x7f88(gp)
li a1,0x4
bal 0x000202bc
_or a0,s4,zero
lw v1,0x1c(sp)
lw v0,0x0(s3)
bne v1,v0,0x0003e10c
_lw gp,0x10(sp)
lw ra,0x3c(sp)
lw s5,0x38(sp)
lw s4,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x7abc(gp)
jalr t9
_nop
lui gp,0x3
addiu gp,gp,0x3f18
addu gp,gp,t9
addiu sp,sp,-0x48
lw t9,-0x7e24(gp)
sw s0,0x20(sp)
or s0,a0,zero
sw gp,0x10(sp)
sw s4,0x30(sp)
sw ra,0x44(sp)
sw s8,0x40(sp)
sw s7,0x3c(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
sw a1,0x4c(sp)
bal 0x000278a8
_lw a0,0x10(a0)
addiu s4,v0,0x8
bgez s4,0x0003e178
_lw gp,0x10(sp)
addiu s4,v0,0xf
lw t9,-0x7e24(gp)
sra s4,s4,0x3
bal 0x000278a8
_lw a0,0x14(s0)
addiu s3,v0,0x8
bgez s3,0x0003e198
_lw gp,0x10(sp)
addiu s3,v0,0xf
lw t9,-0x7e24(gp)
sra s3,s3,0x3
bal 0x000278a8
_lw a0,0x18(s0)
addiu s2,v0,0x8
bgez s2,0x0003e1b8
_lw gp,0x10(sp)
addiu s2,v0,0xf
lw t9,-0x7e24(gp)
sra s2,s2,0x3
bal 0x000278a8
_lw a0,0x1c(s0)
addiu s1,v0,0x8
bgez s1,0x0003e1d8
_lw gp,0x10(sp)
addiu s1,v0,0xf
addiu s5,s4,0x10
lw t9,-0x7f6c(gp)
sra s1,s1,0x3
addu s5,s5,s3
li a1,0x1
addu s5,s5,s2
addiu s8,s4,-0x1
addu v0,s5,s1
or a0,v0,zero
bal 0x0001f494
_sw v0,0x18(sp)
sra a1,s4,0x18
or v1,v0,zero
lw gp,0x10(sp)
sw v0,0x1c(sp)
sra a0,s4,0x10
sra v0,s4,0x8
sb a1,0x0(v1)
sb a0,0x1(v1)
addiu s7,v1,0x4
sb v0,0x2(v1)
beq s4,zero,0x0003e264
_sb s4,0x3(v1)
li s6,-0x1
or s5,s7,zero
lw t9,-0x7e20(gp)
addiu s5,s5,0x1
lw a0,0x10(s0)
or a1,s8,zero
bal 0x00027a10
_addiu s8,s8,-0x1
lw gp,0x10(sp)
bne s8,s6,0x0003e23c
_sb v0,-0x1(s5)
addu s7,s7,s4
sra a0,s3,0x18
sb s3,0x3(s7)
sra v1,s3,0x10
sra v0,s3,0x8
sb a0,0x0(s7)
sb v1,0x1(s7)
addiu s4,s7,0x4
sb v0,0x2(s7)
beq s3,zero,0x0003e2bc
_addiu s7,s3,-0x1
li s6,-0x1
or s5,s4,zero
lw t9,-0x7e20(gp)
addiu s5,s5,0x1
lw a0,0x14(s0)
or a1,s7,zero
bal 0x00027a10
_addiu s7,s7,-0x1
lw gp,0x10(sp)
bne s7,s6,0x0003e294
_sb v0,-0x1(s5)
addu s4,s4,s3
sra a0,s2,0x18
sb s2,0x3(s4)
sra v1,s2,0x10
sra v0,s2,0x8
sb a0,0x0(s4)
sb v1,0x1(s4)
addiu s6,s4,0x4
sb v0,0x2(s4)
beq s2,zero,0x0003e314
_addiu s3,s2,-0x1
li s4,-0x1
or s7,s6,zero
lw t9,-0x7e20(gp)
addiu s7,s7,0x1
lw a0,0x18(s0)
or a1,s3,zero
bal 0x00027a10
_addiu s3,s3,-0x1
lw gp,0x10(sp)
bne s3,s4,0x0003e2ec
_sb v0,-0x1(s7)
addu s6,s6,s2
sra a0,s1,0x18
sb s1,0x3(s6)
sra v1,s1,0x10
sra v0,s1,0x8
sb a0,0x0(s6)
sb v1,0x1(s6)
addiu s4,s6,0x4
sb v0,0x2(s6)
beq s1,zero,0x0003e36c
_addiu s2,s1,-0x1
li s6,-0x1
or s3,s4,zero
lw t9,-0x7e20(gp)
addiu s3,s3,0x1
lw a0,0x1c(s0)
or a1,s2,zero
bal 0x00027a10
_addiu s2,s2,-0x1
lw gp,0x10(sp)
bne s2,s6,0x0003e344
_sb v0,-0x1(s3)
addu s4,s4,s1
lw v0,0x1c(sp)
lw v1,0x18(sp)
addu v0,v0,v1
bne s4,v0,0x0003e3bc
_lw v0,0x4c(sp)
lw v1,0x18(sp)
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
sw v1,0x0(v0)
lw v0,0x1c(sp)
jr ra
_addiu sp,sp,0x48
lw a3,-0x7fc8(gp)
li a2,0x2b0
lw a1,-0x7fc8(gp)
lw a0,-0x7fc8(gp)
lw t9,-0x7bb8(gp)
addiu a3,a3,0x7584
addiu a1,a1,0x7480
jalr t9
_addiu a0,a0,0x311c
(translation_unit "char * FUN_0003dff0(undefined4 param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  char cVar2;\n  char cVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 uVar11;\n  char *pcVar6;\n  char cVar12;\n  int *piVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined4 *puVar13;\n  int *piVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  uint uVar23;\n  int *piVar24;\n  int iVar25;\n  int iVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int iVar30;\n  int iVar31;\n  char *pcVar32;\n  int iVar33;\n  char *pcVar34;\n  char *pcVar35;\n  char *pcVar36;\n  char *pcVar37;\n  code *pcVar38;\n  code *pcVar39;\n  int iStack_f8;\n  byte abStack_f4 [64];\n  char *pcStack_b4;\n  int *piStack_b0;\n  int iStack_ac;\n  int iStack_a8;\n  char *pcStack_a4;\n  char *pcStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  char *pcStack_94;\n  int iStack_90;\n  code *pcStack_8c;\n  undefined *local_78;\n  char *local_70;\n  char *local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined *local_5c;\n  int *local_58;\n  int local_54;\n  int local_28;\n  char *local_24;\n  \n  puVar10 = PTR___stack_chk_guard_0006a594;\n  local_24 = *(char **)PTR___stack_chk_guard_0006a594;\n  iVar5 = bignum_bitcount(param_2);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  local_28 = iVar25 >> 3;\n  SHA512_Bytes(param_1,&local_28,4);\n  iVar26 = (iVar25 >> 3) + -1;\n  iVar25 = iVar26;\n  if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }\n  puVar15 = (undefined4 *)&DAT_00000004;\n  piVar14 = &local_28;\n  smemclr();\n  pcVar6 = *(char **)puVar10;\n  if (local_24 == pcVar6) {\n    return pcVar6;\n  }\n  puVar8 = PTR___stack_chk_fail_0006a574;\n  (*(code *)PTR___stack_chk_fail_0006a574)();\n  local_78 = puVar8 + 0x33f18;\n  local_5c = puVar10;\n  local_68 = iVar26;\n  local_64 = param_1;\n  local_60 = param_2;\n  local_58 = &local_28;\n  local_54 = iVar5;\n  iVar5 = bignum_bitcount(piVar14[4]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar33 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(piVar14[5]);\n  iVar26 = iVar5 + 8;\n  if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }\n  iVar31 = iVar26 >> 3;\n  iVar5 = bignum_bitcount(piVar14[6]);\n  iVar29 = iVar5 + 8;\n  if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }\n  iVar30 = iVar29 >> 3;\n  iVar5 = bignum_bitcount(piVar14[7]);\n  iVar27 = iVar5 + 8;\n  if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }\n  iVar28 = iVar27 >> 3;\n  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);\n  iVar5 = iVar33 + -1;\n  local_70 = pcVar35 + iVar28;\n  local_6c = (char *)safemalloc(local_70,1);\n  *local_6c = (char)(iVar25 >> 0x1b);\n  local_6c[1] = (char)(iVar25 >> 0x13);\n  pcVar36 = local_6c + 4;\n  local_6c[2] = (char)(iVar25 >> 0xb);\n  local_6c[3] = (char)iVar33;\n  pcVar6 = pcVar36;\n  if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar26 >> 0x1b);\n  pcVar36[1] = (char)(iVar26 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar26 >> 0xb);\n  pcVar6 = (char *)(iVar31 + -1);\n  pcVar36 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }\n  pcVar34[3] = (char)iVar30;\n  *pcVar34 = (char)(iVar29 >> 0x1b);\n  pcVar34[1] = (char)(iVar29 >> 0x13);\n  pcVar37 = pcVar34 + 4;\n  pcVar34[2] = (char)(iVar29 >> 0xb);\n  pcVar36 = (char *)(iVar30 + -1);\n  pcVar34 = pcVar37;\n  if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }\n  pcVar37[3] = (char)iVar28;\n  *pcVar37 = (char)(iVar27 >> 0x1b);\n  pcVar37[1] = (char)(iVar27 >> 0x13);\n  pcVar34 = pcVar37 + 4;\n  pcVar37[2] = (char)(iVar27 >> 0xb);\n  iStack_a8 = iVar28 + -1;\n  if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }\n  if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }\n  uVar18 = 0x2b0;\n  pcVar38 = *(code **)(local_78 + -0x7bb8);\n  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);\n  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);\n  pcVar39 = FUN_0003e3e0;\n  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);\n  (*pcVar38)();\n  piVar7 = *(int **)(pcVar38 + 0x2c1b4);\n  pcStack_b4 = (char *)*piVar7;\n  puVar15 = puVar13;\n  pbVar17 = pbVar16;\n  piStack_b0 = piVar14;\n  iStack_ac = iVar28;\n  pcStack_a4 = pcVar36;\n  pcStack_a0 = pcVar34;\n  pcStack_9c = pcVar35;\n  pcStack_98 = pcVar37;\n  pcStack_94 = pcVar6;\n  iStack_90 = iVar5;\n  pcStack_8c = pcVar39;\n  if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }\nLAB_0003e530:\n  pcVar6 = (char *)*piVar7;\n  if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }\n  pcVar38 = *(code **)(pcVar38 + 0x2c194);\n  (*pcVar38)();\n  iVar5 = bignum_bitcount(puVar15[3]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar26 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(puVar15[2]);\n  iVar33 = iVar5 + 8;\n  if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }\n  iVar31 = iVar33 >> 3;\n  iVar27 = iVar26 + 0x13 + iVar31;\n  iVar5 = iVar26 + -1;\n  pcVar35 = (char *)safemalloc(iVar27,1);\n  pcVar35[3] = '\a';\n  *pcVar35 = '\0';\n  iVar29 = *(int *)(pcVar38 + 0x2baec);\n  pcVar35[1] = '\0';\n  pcVar36 = pcVar35 + 0xf;\n  pcVar35[2] = '\0';\n  uVar23 = *(uint *)(iVar29 + -0x1ac0);\n  cVar12 = *(char *)(iVar29 + -0x1abc);\n  cVar2 = *(char *)(iVar29 + -0x1abb);\n  cVar3 = *(char *)(iVar29 + -0x1aba);\n  pcVar6 = pcVar35 + 4;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;\n  pcVar6 = pcVar35 + 7;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;\n  pcVar35[8] = cVar12;\n  pcVar35[9] = cVar2;\n  pcVar35[10] = cVar3;\n  pcVar35[0xb] = (char)(iVar25 >> 0x1b);\n  pcVar35[0xc] = (char)(iVar25 >> 0x13);\n  pcVar35[0xd] = (char)(iVar25 >> 0xb);\n  pcVar35[0xe] = (char)iVar26;\n  pcVar6 = pcVar36;\n  if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar33 >> 0x1b);\n  pcVar36[1] = (char)(iVar33 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar33 >> 0xb);\n  iVar5 = iVar31 + -1;\n  pcVar6 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }\n  if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }\n  *(int *)pbVar17 = iVar27;\n  return pcVar35;\n}\n\n" (function_definition "char * FUN_0003dff0(undefined4 param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  char cVar2;\n  char cVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 uVar11;\n  char *pcVar6;\n  char cVar12;\n  int *piVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined4 *puVar13;\n  int *piVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  uint uVar23;\n  int *piVar24;\n  int iVar25;\n  int iVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int iVar30;\n  int iVar31;\n  char *pcVar32;\n  int iVar33;\n  char *pcVar34;\n  char *pcVar35;\n  char *pcVar36;\n  char *pcVar37;\n  code *pcVar38;\n  code *pcVar39;\n  int iStack_f8;\n  byte abStack_f4 [64];\n  char *pcStack_b4;\n  int *piStack_b0;\n  int iStack_ac;\n  int iStack_a8;\n  char *pcStack_a4;\n  char *pcStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  char *pcStack_94;\n  int iStack_90;\n  code *pcStack_8c;\n  undefined *local_78;\n  char *local_70;\n  char *local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined *local_5c;\n  int *local_58;\n  int local_54;\n  int local_28;\n  char *local_24;\n  \n  puVar10 = PTR___stack_chk_guard_0006a594;\n  local_24 = *(char **)PTR___stack_chk_guard_0006a594;\n  iVar5 = bignum_bitcount(param_2);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  local_28 = iVar25 >> 3;\n  SHA512_Bytes(param_1,&local_28,4);\n  iVar26 = (iVar25 >> 3) + -1;\n  iVar25 = iVar26;\n  if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }\n  puVar15 = (undefined4 *)&DAT_00000004;\n  piVar14 = &local_28;\n  smemclr();\n  pcVar6 = *(char **)puVar10;\n  if (local_24 == pcVar6) {\n    return pcVar6;\n  }\n  puVar8 = PTR___stack_chk_fail_0006a574;\n  (*(code *)PTR___stack_chk_fail_0006a574)();\n  local_78 = puVar8 + 0x33f18;\n  local_5c = puVar10;\n  local_68 = iVar26;\n  local_64 = param_1;\n  local_60 = param_2;\n  local_58 = &local_28;\n  local_54 = iVar5;\n  iVar5 = bignum_bitcount(piVar14[4]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar33 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(piVar14[5]);\n  iVar26 = iVar5 + 8;\n  if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }\n  iVar31 = iVar26 >> 3;\n  iVar5 = bignum_bitcount(piVar14[6]);\n  iVar29 = iVar5 + 8;\n  if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }\n  iVar30 = iVar29 >> 3;\n  iVar5 = bignum_bitcount(piVar14[7]);\n  iVar27 = iVar5 + 8;\n  if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }\n  iVar28 = iVar27 >> 3;\n  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);\n  iVar5 = iVar33 + -1;\n  local_70 = pcVar35 + iVar28;\n  local_6c = (char *)safemalloc(local_70,1);\n  *local_6c = (char)(iVar25 >> 0x1b);\n  local_6c[1] = (char)(iVar25 >> 0x13);\n  pcVar36 = local_6c + 4;\n  local_6c[2] = (char)(iVar25 >> 0xb);\n  local_6c[3] = (char)iVar33;\n  pcVar6 = pcVar36;\n  if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar26 >> 0x1b);\n  pcVar36[1] = (char)(iVar26 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar26 >> 0xb);\n  pcVar6 = (char *)(iVar31 + -1);\n  pcVar36 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }\n  pcVar34[3] = (char)iVar30;\n  *pcVar34 = (char)(iVar29 >> 0x1b);\n  pcVar34[1] = (char)(iVar29 >> 0x13);\n  pcVar37 = pcVar34 + 4;\n  pcVar34[2] = (char)(iVar29 >> 0xb);\n  pcVar36 = (char *)(iVar30 + -1);\n  pcVar34 = pcVar37;\n  if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }\n  pcVar37[3] = (char)iVar28;\n  *pcVar37 = (char)(iVar27 >> 0x1b);\n  pcVar37[1] = (char)(iVar27 >> 0x13);\n  pcVar34 = pcVar37 + 4;\n  pcVar37[2] = (char)(iVar27 >> 0xb);\n  iStack_a8 = iVar28 + -1;\n  if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }\n  if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }\n  uVar18 = 0x2b0;\n  pcVar38 = *(code **)(local_78 + -0x7bb8);\n  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);\n  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);\n  pcVar39 = FUN_0003e3e0;\n  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);\n  (*pcVar38)();\n  piVar7 = *(int **)(pcVar38 + 0x2c1b4);\n  pcStack_b4 = (char *)*piVar7;\n  puVar15 = puVar13;\n  pbVar17 = pbVar16;\n  piStack_b0 = piVar14;\n  iStack_ac = iVar28;\n  pcStack_a4 = pcVar36;\n  pcStack_a0 = pcVar34;\n  pcStack_9c = pcVar35;\n  pcStack_98 = pcVar37;\n  pcStack_94 = pcVar6;\n  iStack_90 = iVar5;\n  pcStack_8c = pcVar39;\n  if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }\nLAB_0003e530:\n  pcVar6 = (char *)*piVar7;\n  if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }\n  pcVar38 = *(code **)(pcVar38 + 0x2c194);\n  (*pcVar38)();\n  iVar5 = bignum_bitcount(puVar15[3]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar26 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(puVar15[2]);\n  iVar33 = iVar5 + 8;\n  if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }\n  iVar31 = iVar33 >> 3;\n  iVar27 = iVar26 + 0x13 + iVar31;\n  iVar5 = iVar26 + -1;\n  pcVar35 = (char *)safemalloc(iVar27,1);\n  pcVar35[3] = '\a';\n  *pcVar35 = '\0';\n  iVar29 = *(int *)(pcVar38 + 0x2baec);\n  pcVar35[1] = '\0';\n  pcVar36 = pcVar35 + 0xf;\n  pcVar35[2] = '\0';\n  uVar23 = *(uint *)(iVar29 + -0x1ac0);\n  cVar12 = *(char *)(iVar29 + -0x1abc);\n  cVar2 = *(char *)(iVar29 + -0x1abb);\n  cVar3 = *(char *)(iVar29 + -0x1aba);\n  pcVar6 = pcVar35 + 4;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;\n  pcVar6 = pcVar35 + 7;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;\n  pcVar35[8] = cVar12;\n  pcVar35[9] = cVar2;\n  pcVar35[10] = cVar3;\n  pcVar35[0xb] = (char)(iVar25 >> 0x1b);\n  pcVar35[0xc] = (char)(iVar25 >> 0x13);\n  pcVar35[0xd] = (char)(iVar25 >> 0xb);\n  pcVar35[0xe] = (char)iVar26;\n  pcVar6 = pcVar36;\n  if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar33 >> 0x1b);\n  pcVar36[1] = (char)(iVar33 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar33 >> 0xb);\n  iVar5 = iVar31 + -1;\n  pcVar6 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }\n  if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }\n  *(int *)pbVar17 = iVar27;\n  return pcVar35;\n}" primitive_type (pointer_declarator "* FUN_0003dff0(undefined4 param_1,undefined4 param_2)" * (function_declarator "FUN_0003dff0(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  char cVar2;\n  char cVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 uVar11;\n  char *pcVar6;\n  char cVar12;\n  int *piVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined4 *puVar13;\n  int *piVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  uint uVar23;\n  int *piVar24;\n  int iVar25;\n  int iVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int iVar30;\n  int iVar31;\n  char *pcVar32;\n  int iVar33;\n  char *pcVar34;\n  char *pcVar35;\n  char *pcVar36;\n  char *pcVar37;\n  code *pcVar38;\n  code *pcVar39;\n  int iStack_f8;\n  byte abStack_f4 [64];\n  char *pcStack_b4;\n  int *piStack_b0;\n  int iStack_ac;\n  int iStack_a8;\n  char *pcStack_a4;\n  char *pcStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  char *pcStack_94;\n  int iStack_90;\n  code *pcStack_8c;\n  undefined *local_78;\n  char *local_70;\n  char *local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined *local_5c;\n  int *local_58;\n  int local_54;\n  int local_28;\n  char *local_24;\n  \n  puVar10 = PTR___stack_chk_guard_0006a594;\n  local_24 = *(char **)PTR___stack_chk_guard_0006a594;\n  iVar5 = bignum_bitcount(param_2);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  local_28 = iVar25 >> 3;\n  SHA512_Bytes(param_1,&local_28,4);\n  iVar26 = (iVar25 >> 3) + -1;\n  iVar25 = iVar26;\n  if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }\n  puVar15 = (undefined4 *)&DAT_00000004;\n  piVar14 = &local_28;\n  smemclr();\n  pcVar6 = *(char **)puVar10;\n  if (local_24 == pcVar6) {\n    return pcVar6;\n  }\n  puVar8 = PTR___stack_chk_fail_0006a574;\n  (*(code *)PTR___stack_chk_fail_0006a574)();\n  local_78 = puVar8 + 0x33f18;\n  local_5c = puVar10;\n  local_68 = iVar26;\n  local_64 = param_1;\n  local_60 = param_2;\n  local_58 = &local_28;\n  local_54 = iVar5;\n  iVar5 = bignum_bitcount(piVar14[4]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar33 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(piVar14[5]);\n  iVar26 = iVar5 + 8;\n  if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }\n  iVar31 = iVar26 >> 3;\n  iVar5 = bignum_bitcount(piVar14[6]);\n  iVar29 = iVar5 + 8;\n  if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }\n  iVar30 = iVar29 >> 3;\n  iVar5 = bignum_bitcount(piVar14[7]);\n  iVar27 = iVar5 + 8;\n  if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }\n  iVar28 = iVar27 >> 3;\n  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);\n  iVar5 = iVar33 + -1;\n  local_70 = pcVar35 + iVar28;\n  local_6c = (char *)safemalloc(local_70,1);\n  *local_6c = (char)(iVar25 >> 0x1b);\n  local_6c[1] = (char)(iVar25 >> 0x13);\n  pcVar36 = local_6c + 4;\n  local_6c[2] = (char)(iVar25 >> 0xb);\n  local_6c[3] = (char)iVar33;\n  pcVar6 = pcVar36;\n  if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar26 >> 0x1b);\n  pcVar36[1] = (char)(iVar26 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar26 >> 0xb);\n  pcVar6 = (char *)(iVar31 + -1);\n  pcVar36 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }\n  pcVar34[3] = (char)iVar30;\n  *pcVar34 = (char)(iVar29 >> 0x1b);\n  pcVar34[1] = (char)(iVar29 >> 0x13);\n  pcVar37 = pcVar34 + 4;\n  pcVar34[2] = (char)(iVar29 >> 0xb);\n  pcVar36 = (char *)(iVar30 + -1);\n  pcVar34 = pcVar37;\n  if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }\n  pcVar37[3] = (char)iVar28;\n  *pcVar37 = (char)(iVar27 >> 0x1b);\n  pcVar37[1] = (char)(iVar27 >> 0x13);\n  pcVar34 = pcVar37 + 4;\n  pcVar37[2] = (char)(iVar27 >> 0xb);\n  iStack_a8 = iVar28 + -1;\n  if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }\n  if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }\n  uVar18 = 0x2b0;\n  pcVar38 = *(code **)(local_78 + -0x7bb8);\n  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);\n  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);\n  pcVar39 = FUN_0003e3e0;\n  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);\n  (*pcVar38)();\n  piVar7 = *(int **)(pcVar38 + 0x2c1b4);\n  pcStack_b4 = (char *)*piVar7;\n  puVar15 = puVar13;\n  pbVar17 = pbVar16;\n  piStack_b0 = piVar14;\n  iStack_ac = iVar28;\n  pcStack_a4 = pcVar36;\n  pcStack_a0 = pcVar34;\n  pcStack_9c = pcVar35;\n  pcStack_98 = pcVar37;\n  pcStack_94 = pcVar6;\n  iStack_90 = iVar5;\n  pcStack_8c = pcVar39;\n  if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }\nLAB_0003e530:\n  pcVar6 = (char *)*piVar7;\n  if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }\n  pcVar38 = *(code **)(pcVar38 + 0x2c194);\n  (*pcVar38)();\n  iVar5 = bignum_bitcount(puVar15[3]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar26 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(puVar15[2]);\n  iVar33 = iVar5 + 8;\n  if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }\n  iVar31 = iVar33 >> 3;\n  iVar27 = iVar26 + 0x13 + iVar31;\n  iVar5 = iVar26 + -1;\n  pcVar35 = (char *)safemalloc(iVar27,1);\n  pcVar35[3] = '\a';\n  *pcVar35 = '\0';\n  iVar29 = *(int *)(pcVar38 + 0x2baec);\n  pcVar35[1] = '\0';\n  pcVar36 = pcVar35 + 0xf;\n  pcVar35[2] = '\0';\n  uVar23 = *(uint *)(iVar29 + -0x1ac0);\n  cVar12 = *(char *)(iVar29 + -0x1abc);\n  cVar2 = *(char *)(iVar29 + -0x1abb);\n  cVar3 = *(char *)(iVar29 + -0x1aba);\n  pcVar6 = pcVar35 + 4;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;\n  pcVar6 = pcVar35 + 7;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;\n  pcVar35[8] = cVar12;\n  pcVar35[9] = cVar2;\n  pcVar35[10] = cVar3;\n  pcVar35[0xb] = (char)(iVar25 >> 0x1b);\n  pcVar35[0xc] = (char)(iVar25 >> 0x13);\n  pcVar35[0xd] = (char)(iVar25 >> 0xb);\n  pcVar35[0xe] = (char)iVar26;\n  pcVar6 = pcVar36;\n  if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar33 >> 0x1b);\n  pcVar36[1] = (char)(iVar33 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar33 >> 0xb);\n  iVar5 = iVar31 + -1;\n  pcVar6 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }\n  if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }\n  *(int *)pbVar17 = iVar27;\n  return pcVar35;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 uVar11;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "char *pcVar32;" primitive_type (pointer_declarator "*pcVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "char *pcVar34;" primitive_type (pointer_declarator "*pcVar34" * identifier) ;) (declaration "char *pcVar35;" primitive_type (pointer_declarator "*pcVar35" * identifier) ;) (declaration "char *pcVar36;" primitive_type (pointer_declarator "*pcVar36" * identifier) ;) (declaration "char *pcVar37;" primitive_type (pointer_declarator "*pcVar37" * identifier) ;) (declaration "code *pcVar38;" type_identifier (pointer_declarator "*pcVar38" * identifier) ;) (declaration "code *pcVar39;" type_identifier (pointer_declarator "*pcVar39" * identifier) ;) (declaration "int iStack_f8;" primitive_type identifier ;) (declaration "byte abStack_f4 [64];" type_identifier (array_declarator "abStack_f4 [64]" identifier [ number_literal ]) ;) (declaration "char *pcStack_b4;" primitive_type (pointer_declarator "*pcStack_b4" * identifier) ;) (declaration "int *piStack_b0;" primitive_type (pointer_declarator "*piStack_b0" * identifier) ;) (declaration "int iStack_ac;" primitive_type identifier ;) (declaration "int iStack_a8;" primitive_type identifier ;) (declaration "char *pcStack_a4;" primitive_type (pointer_declarator "*pcStack_a4" * identifier) ;) (declaration "char *pcStack_a0;" primitive_type (pointer_declarator "*pcStack_a0" * identifier) ;) (declaration "char *pcStack_9c;" primitive_type (pointer_declarator "*pcStack_9c" * identifier) ;) (declaration "char *pcStack_98;" primitive_type (pointer_declarator "*pcStack_98" * identifier) ;) (declaration "char *pcStack_94;" primitive_type (pointer_declarator "*pcStack_94" * identifier) ;) (declaration "int iStack_90;" primitive_type identifier ;) (declaration "code *pcStack_8c;" type_identifier (pointer_declarator "*pcStack_8c" * identifier) ;) (declaration "undefined *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "char *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "char *local_6c;" primitive_type (pointer_declarator "*local_6c" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "int *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_guard_0006a594;" (assignment_expression "puVar10 = PTR___stack_chk_guard_0006a594" identifier = identifier) ;) (expression_statement "local_24 = *(char **)PTR___stack_chk_guard_0006a594;" (assignment_expression "local_24 = *(char **)PTR___stack_chk_guard_0006a594" identifier = (pointer_expression "*(char **)PTR___stack_chk_guard_0006a594" * (cast_expression "(char **)PTR___stack_chk_guard_0006a594" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar5 = bignum_bitcount(param_2);" (assignment_expression "iVar5 = bignum_bitcount(param_2)" identifier = (call_expression "bignum_bitcount(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" { (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "local_28 = iVar25 >> 3;" (assignment_expression "local_28 = iVar25 >> 3" identifier = (binary_expression "iVar25 >> 3" identifier >> number_literal)) ;) (expression_statement "SHA512_Bytes(param_1,&local_28,4);" (call_expression "SHA512_Bytes(param_1,&local_28,4)" identifier (argument_list "(param_1,&local_28,4)" ( identifier , (pointer_expression "&local_28" & identifier) , number_literal ))) ;) (expression_statement "iVar26 = (iVar25 >> 3) + -1;" (assignment_expression "iVar26 = (iVar25 >> 3) + -1" identifier = (binary_expression "(iVar25 >> 3) + -1" (parenthesized_expression "(iVar25 >> 3)" ( (binary_expression "iVar25 >> 3" identifier >> number_literal) )) + number_literal)) ;) (expression_statement "iVar25 = iVar26;" (assignment_expression "iVar25 = iVar26" identifier = identifier) ;) (if_statement "if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (compound_statement "{\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }" { (do_statement "do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);" do (compound_statement "{\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    }" { (expression_statement "iVar26 = iVar25;" (assignment_expression "iVar26 = iVar25" identifier = identifier) ;) (expression_statement "uVar11 = bignum_byte(param_2,iVar26);" (assignment_expression "uVar11 = bignum_byte(param_2,iVar26)" identifier = (call_expression "bignum_byte(param_2,iVar26)" identifier (argument_list "(param_2,iVar26)" ( identifier , identifier )))) ;) (expression_statement "local_28 = CONCAT13(uVar11,local_28._1_3_);" (assignment_expression "local_28 = CONCAT13(uVar11,local_28._1_3_)" identifier = (call_expression "CONCAT13(uVar11,local_28._1_3_)" identifier (argument_list "(uVar11,local_28._1_3_)" ( identifier , (field_expression "local_28._1_3_" identifier . field_identifier) )))) ;) (expression_statement "SHA512_Bytes(param_1,&local_28,1);" (call_expression "SHA512_Bytes(param_1,&local_28,1)" identifier (argument_list "(param_1,&local_28,1)" ( identifier , (pointer_expression "&local_28" & identifier) , number_literal ))) ;) (expression_statement "iVar25 = iVar26 + -1;" (assignment_expression "iVar25 = iVar26 + -1" identifier = (binary_expression "iVar26 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(0 < iVar26)" ( (binary_expression "0 < iVar26" number_literal < identifier) )) ;) })) (expression_statement "puVar15 = (undefined4 *)&DAT_00000004;" (assignment_expression "puVar15 = (undefined4 *)&DAT_00000004" identifier = (cast_expression "(undefined4 *)&DAT_00000004" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000004" & identifier))) ;) (expression_statement "piVar14 = &local_28;" (assignment_expression "piVar14 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (expression_statement "smemclr();" (call_expression "smemclr()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar6 = *(char **)puVar10;" (assignment_expression "pcVar6 = *(char **)puVar10" identifier = (pointer_expression "*(char **)puVar10" * (cast_expression "(char **)puVar10" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (local_24 == pcVar6) {\n    return pcVar6;\n  }" if (parenthesized_expression "(local_24 == pcVar6)" ( (binary_expression "local_24 == pcVar6" identifier == identifier) )) (compound_statement "{\n    return pcVar6;\n  }" { (return_statement "return pcVar6;" return identifier ;) })) (expression_statement "puVar8 = PTR___stack_chk_fail_0006a574;" (assignment_expression "puVar8 = PTR___stack_chk_fail_0006a574" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0006a574)();" (call_expression "(*(code *)PTR___stack_chk_fail_0006a574)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0006a574)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0006a574" * (cast_expression "(code *)PTR___stack_chk_fail_0006a574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "local_78 = puVar8 + 0x33f18;" (assignment_expression "local_78 = puVar8 + 0x33f18" identifier = (binary_expression "puVar8 + 0x33f18" identifier + number_literal)) ;) (expression_statement "local_5c = puVar10;" (assignment_expression "local_5c = puVar10" identifier = identifier) ;) (expression_statement "local_68 = iVar26;" (assignment_expression "local_68 = iVar26" identifier = identifier) ;) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" identifier = identifier) ;) (expression_statement "local_60 = param_2;" (assignment_expression "local_60 = param_2" identifier = identifier) ;) (expression_statement "local_58 = &local_28;" (assignment_expression "local_58 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (expression_statement "local_54 = iVar5;" (assignment_expression "local_54 = iVar5" identifier = identifier) ;) (expression_statement "iVar5 = bignum_bitcount(piVar14[4]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[4])" identifier = (call_expression "bignum_bitcount(piVar14[4])" identifier (argument_list "(piVar14[4])" ( (subscript_expression "piVar14[4]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" { (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar33 = iVar25 >> 3;" (assignment_expression "iVar33 = iVar25 >> 3" identifier = (binary_expression "iVar25 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar5 = bignum_bitcount(piVar14[5]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[5])" identifier = (call_expression "bignum_bitcount(piVar14[5])" identifier (argument_list "(piVar14[5])" ( (subscript_expression "piVar14[5]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar26 = iVar5 + 8;" (assignment_expression "iVar26 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar26 < 0)" ( (binary_expression "iVar26 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar26 = iVar5 + 0xf;\n  }" { (expression_statement "iVar26 = iVar5 + 0xf;" (assignment_expression "iVar26 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar31 = iVar26 >> 3;" (assignment_expression "iVar31 = iVar26 >> 3" identifier = (binary_expression "iVar26 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar5 = bignum_bitcount(piVar14[6]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[6])" identifier = (call_expression "bignum_bitcount(piVar14[6])" identifier (argument_list "(piVar14[6])" ( (subscript_expression "piVar14[6]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar29 = iVar5 + 8;" (assignment_expression "iVar29 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar29 < 0)" ( (binary_expression "iVar29 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar29 = iVar5 + 0xf;\n  }" { (expression_statement "iVar29 = iVar5 + 0xf;" (assignment_expression "iVar29 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar30 = iVar29 >> 3;" (assignment_expression "iVar30 = iVar29 >> 3" identifier = (binary_expression "iVar29 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar5 = bignum_bitcount(piVar14[7]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[7])" identifier = (call_expression "bignum_bitcount(piVar14[7])" identifier (argument_list "(piVar14[7])" ( (subscript_expression "piVar14[7]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar27 = iVar5 + 8;" (assignment_expression "iVar27 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar27 < 0)" ( (binary_expression "iVar27 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar27 = iVar5 + 0xf;\n  }" { (expression_statement "iVar27 = iVar5 + 0xf;" (assignment_expression "iVar27 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar28 = iVar27 >> 3;" (assignment_expression "iVar28 = iVar27 >> 3" identifier = (binary_expression "iVar27 >> 3" identifier >> number_literal)) ;) (expression_statement "pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);" (assignment_expression "pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30)" identifier = (cast_expression "(char *)(iVar33 + 0x10 + iVar31 + iVar30)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x10 + iVar31 + iVar30)" ( (binary_expression "iVar33 + 0x10 + iVar31 + iVar30" (binary_expression "iVar33 + 0x10 + iVar31" (binary_expression "iVar33 + 0x10" identifier + number_literal) + identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar33 + -1;" (assignment_expression "iVar5 = iVar33 + -1" identifier = (binary_expression "iVar33 + -1" identifier + number_literal)) ;) (expression_statement "local_70 = pcVar35 + iVar28;" (assignment_expression "local_70 = pcVar35 + iVar28" identifier = (binary_expression "pcVar35 + iVar28" identifier + identifier)) ;) (expression_statement "local_6c = (char *)safemalloc(local_70,1);" (assignment_expression "local_6c = (char *)safemalloc(local_70,1)" identifier = (cast_expression "(char *)safemalloc(local_70,1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(local_70,1)" identifier (argument_list "(local_70,1)" ( identifier , number_literal ))))) ;) (expression_statement "*local_6c = (char)(iVar25 >> 0x1b);" (assignment_expression "*local_6c = (char)(iVar25 >> 0x1b)" (pointer_expression "*local_6c" * identifier) = (cast_expression "(char)(iVar25 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0x1b)" ( (binary_expression "iVar25 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "local_6c[1] = (char)(iVar25 >> 0x13);" (assignment_expression "local_6c[1] = (char)(iVar25 >> 0x13)" (subscript_expression "local_6c[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0x13)" ( (binary_expression "iVar25 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar36 = local_6c + 4;" (assignment_expression "pcVar36 = local_6c + 4" identifier = (binary_expression "local_6c + 4" identifier + number_literal)) ;) (expression_statement "local_6c[2] = (char)(iVar25 >> 0xb);" (assignment_expression "local_6c[2] = (char)(iVar25 >> 0xb)" (subscript_expression "local_6c[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0xb)" ( (binary_expression "iVar25 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "local_6c[3] = (char)iVar33;" (assignment_expression "local_6c[3] = (char)iVar33" (subscript_expression "local_6c[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar33" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar6 = pcVar36;" (assignment_expression "pcVar6 = pcVar36" identifier = identifier) ;) (if_statement "if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }" { (do_statement "do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);" do (compound_statement "{\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    }" { (expression_statement "pcVar35 = pcVar6 + 1;" (assignment_expression "pcVar35 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(piVar14[4],iVar5);" (assignment_expression "cVar12 = bignum_byte(piVar14[4],iVar5)" identifier = (call_expression "bignum_byte(piVar14[4],iVar5)" identifier (argument_list "(piVar14[4],iVar5)" ( (subscript_expression "piVar14[4]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" * identifier) = identifier) ;) (expression_statement "pcVar6 = pcVar35;" (assignment_expression "pcVar6 = pcVar35" identifier = identifier) ;) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar25 != -1)" ( (binary_expression "iVar25 != -1" identifier != number_literal) )) ;) (expression_statement "pcVar36 = pcVar36 + iVar33;" (assignment_expression "pcVar36 = pcVar36 + iVar33" identifier = (binary_expression "pcVar36 + iVar33" identifier + identifier)) ;) (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" identifier = number_literal) ;) })) (expression_statement "pcVar36[3] = (char)iVar31;" (assignment_expression "pcVar36[3] = (char)iVar31" (subscript_expression "pcVar36[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar31" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*pcVar36 = (char)(iVar26 >> 0x1b);" (assignment_expression "*pcVar36 = (char)(iVar26 >> 0x1b)" (pointer_expression "*pcVar36" * identifier) = (cast_expression "(char)(iVar26 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar26 >> 0x1b)" ( (binary_expression "iVar26 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar36[1] = (char)(iVar26 >> 0x13);" (assignment_expression "pcVar36[1] = (char)(iVar26 >> 0x13)" (subscript_expression "pcVar36[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar26 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar26 >> 0x13)" ( (binary_expression "iVar26 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar34 = pcVar36 + 4;" (assignment_expression "pcVar34 = pcVar36 + 4" identifier = (binary_expression "pcVar36 + 4" identifier + number_literal)) ;) (expression_statement "pcVar36[2] = (char)(iVar26 >> 0xb);" (assignment_expression "pcVar36[2] = (char)(iVar26 >> 0xb)" (subscript_expression "pcVar36[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar26 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar26 >> 0xb)" ( (binary_expression "iVar26 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "pcVar6 = (char *)(iVar31 + -1);" (assignment_expression "pcVar6 = (char *)(iVar31 + -1)" identifier = (cast_expression "(char *)(iVar31 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar31 + -1)" ( (binary_expression "iVar31 + -1" identifier + number_literal) )))) ;) (expression_statement "pcVar36 = pcVar34;" (assignment_expression "pcVar36 = pcVar34" identifier = identifier) ;) (if_statement "if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }" if (parenthesized_expression "(iVar31 != 0)" ( (binary_expression "iVar31 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }" { (do_statement "do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);" do (compound_statement "{\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    }" { (expression_statement "pcVar35 = pcVar36 + 1;" (assignment_expression "pcVar35 = pcVar36 + 1" identifier = (binary_expression "pcVar36 + 1" identifier + number_literal)) ;) (expression_statement "pcVar37 = pcVar6 + -1;" (assignment_expression "pcVar37 = pcVar6 + -1" identifier = (binary_expression "pcVar6 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(piVar14[5],pcVar6);" (assignment_expression "cVar12 = bignum_byte(piVar14[5],pcVar6)" identifier = (call_expression "bignum_byte(piVar14[5],pcVar6)" identifier (argument_list "(piVar14[5],pcVar6)" ( (subscript_expression "piVar14[5]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar36 = cVar12;" (assignment_expression "*pcVar36 = cVar12" (pointer_expression "*pcVar36" * identifier) = identifier) ;) (expression_statement "pcVar36 = pcVar35;" (assignment_expression "pcVar36 = pcVar35" identifier = identifier) ;) (expression_statement "pcVar6 = pcVar37;" (assignment_expression "pcVar6 = pcVar37" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar37 != (char *)0xffffffff)" ( (binary_expression "pcVar37 != (char *)0xffffffff" identifier != (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pcVar34 = pcVar34 + iVar31;" (assignment_expression "pcVar34 = pcVar34 + iVar31" identifier = (binary_expression "pcVar34 + iVar31" identifier + identifier)) ;) (expression_statement "pcVar6 = (char *)0xffffffff;" (assignment_expression "pcVar6 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar34[3] = (char)iVar30;" (assignment_expression "pcVar34[3] = (char)iVar30" (subscript_expression "pcVar34[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar30" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*pcVar34 = (char)(iVar29 >> 0x1b);" (assignment_expression "*pcVar34 = (char)(iVar29 >> 0x1b)" (pointer_expression "*pcVar34" * identifier) = (cast_expression "(char)(iVar29 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar29 >> 0x1b)" ( (binary_expression "iVar29 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar34[1] = (char)(iVar29 >> 0x13);" (assignment_expression "pcVar34[1] = (char)(iVar29 >> 0x13)" (subscript_expression "pcVar34[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar29 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar29 >> 0x13)" ( (binary_expression "iVar29 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar37 = pcVar34 + 4;" (assignment_expression "pcVar37 = pcVar34 + 4" identifier = (binary_expression "pcVar34 + 4" identifier + number_literal)) ;) (expression_statement "pcVar34[2] = (char)(iVar29 >> 0xb);" (assignment_expression "pcVar34[2] = (char)(iVar29 >> 0xb)" (subscript_expression "pcVar34[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar29 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar29 >> 0xb)" ( (binary_expression "iVar29 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "pcVar36 = (char *)(iVar30 + -1);" (assignment_expression "pcVar36 = (char *)(iVar30 + -1)" identifier = (cast_expression "(char *)(iVar30 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -1)" ( (binary_expression "iVar30 + -1" identifier + number_literal) )))) ;) (expression_statement "pcVar34 = pcVar37;" (assignment_expression "pcVar34 = pcVar37" identifier = identifier) ;) (if_statement "if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }" if (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }" { (do_statement "do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);" do (compound_statement "{\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    }" { (expression_statement "pcVar6 = pcVar34 + 1;" (assignment_expression "pcVar6 = pcVar34 + 1" identifier = (binary_expression "pcVar34 + 1" identifier + number_literal)) ;) (expression_statement "pcVar32 = pcVar36 + -1;" (assignment_expression "pcVar32 = pcVar36 + -1" identifier = (binary_expression "pcVar36 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(piVar14[6],pcVar36);" (assignment_expression "cVar12 = bignum_byte(piVar14[6],pcVar36)" identifier = (call_expression "bignum_byte(piVar14[6],pcVar36)" identifier (argument_list "(piVar14[6],pcVar36)" ( (subscript_expression "piVar14[6]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar34 = cVar12;" (assignment_expression "*pcVar34 = cVar12" (pointer_expression "*pcVar34" * identifier) = identifier) ;) (expression_statement "pcVar36 = pcVar32;" (assignment_expression "pcVar36 = pcVar32" identifier = identifier) ;) (expression_statement "pcVar34 = pcVar6;" (assignment_expression "pcVar34 = pcVar6" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar32 != (char *)0xffffffff)" ( (binary_expression "pcVar32 != (char *)0xffffffff" identifier != (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pcVar37 = pcVar37 + iVar30;" (assignment_expression "pcVar37 = pcVar37 + iVar30" identifier = (binary_expression "pcVar37 + iVar30" identifier + identifier)) ;) (expression_statement "pcVar36 = (char *)0xffffffff;" (assignment_expression "pcVar36 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar37[3] = (char)iVar28;" (assignment_expression "pcVar37[3] = (char)iVar28" (subscript_expression "pcVar37[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar28" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*pcVar37 = (char)(iVar27 >> 0x1b);" (assignment_expression "*pcVar37 = (char)(iVar27 >> 0x1b)" (pointer_expression "*pcVar37" * identifier) = (cast_expression "(char)(iVar27 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar27 >> 0x1b)" ( (binary_expression "iVar27 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar37[1] = (char)(iVar27 >> 0x13);" (assignment_expression "pcVar37[1] = (char)(iVar27 >> 0x13)" (subscript_expression "pcVar37[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar27 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar27 >> 0x13)" ( (binary_expression "iVar27 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar34 = pcVar37 + 4;" (assignment_expression "pcVar34 = pcVar37 + 4" identifier = (binary_expression "pcVar37 + 4" identifier + number_literal)) ;) (expression_statement "pcVar37[2] = (char)(iVar27 >> 0xb);" (assignment_expression "pcVar37[2] = (char)(iVar27 >> 0xb)" (subscript_expression "pcVar37[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar27 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar27 >> 0xb)" ( (binary_expression "iVar27 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "iStack_a8 = iVar28 + -1;" (assignment_expression "iStack_a8 = iVar28 + -1" identifier = (binary_expression "iVar28 + -1" identifier + number_literal)) ;) (if_statement "if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }" { (expression_statement "pcVar37 = (char *)0xffffffff;" (assignment_expression "pcVar37 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar32 = pcVar34;" (assignment_expression "pcVar32 = pcVar34" identifier = identifier) ;) (do_statement "do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);" do (compound_statement "{\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    }" { (expression_statement "pcVar36 = pcVar32 + 1;" (assignment_expression "pcVar36 = pcVar32 + 1" identifier = (binary_expression "pcVar32 + 1" identifier + number_literal)) ;) (expression_statement "iVar25 = iStack_a8 + -1;" (assignment_expression "iVar25 = iStack_a8 + -1" identifier = (binary_expression "iStack_a8 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(piVar14[7],iStack_a8);" (assignment_expression "cVar12 = bignum_byte(piVar14[7],iStack_a8)" identifier = (call_expression "bignum_byte(piVar14[7],iStack_a8)" identifier (argument_list "(piVar14[7],iStack_a8)" ( (subscript_expression "piVar14[7]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar32 = cVar12;" (assignment_expression "*pcVar32 = cVar12" (pointer_expression "*pcVar32" * identifier) = identifier) ;) (expression_statement "iStack_a8 = iVar25;" (assignment_expression "iStack_a8 = iVar25" identifier = identifier) ;) (expression_statement "pcVar32 = pcVar36;" (assignment_expression "pcVar32 = pcVar36" identifier = identifier) ;) }) while (parenthesized_expression "(iVar25 != -1)" ( (binary_expression "iVar25 != -1" identifier != number_literal) )) ;) (expression_statement "pcVar34 = pcVar34 + iVar28;" (assignment_expression "pcVar34 = pcVar34 + iVar28" identifier = (binary_expression "pcVar34 + iVar28" identifier + identifier)) ;) (expression_statement "iStack_a8 = -1;" (assignment_expression "iStack_a8 = -1" identifier = number_literal) ;) })) (if_statement "if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }" if (parenthesized_expression "(pcVar34 == local_6c + (int)local_70)" ( (binary_expression "pcVar34 == local_6c + (int)local_70" identifier == (binary_expression "local_6c + (int)local_70" identifier + (cast_expression "(int)local_70" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n    *puVar15 = local_70;\n    return local_6c;\n  }" { (expression_statement "*puVar15 = local_70;" (assignment_expression "*puVar15 = local_70" (pointer_expression "*puVar15" * identifier) = identifier) ;) (return_statement "return local_6c;" return identifier ;) })) (expression_statement "uVar18 = 0x2b0;" (assignment_expression "uVar18 = 0x2b0" identifier = number_literal) ;) (expression_statement "pcVar38 = *(code **)(local_78 + -0x7bb8);" (assignment_expression "pcVar38 = *(code **)(local_78 + -0x7bb8)" identifier = (pointer_expression "*(code **)(local_78 + -0x7bb8)" * (cast_expression "(code **)(local_78 + -0x7bb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_78 + -0x7bb8)" ( (binary_expression "local_78 + -0x7bb8" identifier + number_literal) ))))) ;) (expression_statement "pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);" (assignment_expression "pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584)" identifier = (cast_expression "(byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x7584)" ( (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x7584" (pointer_expression "*(int *)(local_78 + -0x7fc8)" * (cast_expression "(int *)(local_78 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + -0x7fc8)" ( (binary_expression "local_78 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);" (assignment_expression "pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480)" identifier = (cast_expression "(byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x7480)" ( (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x7480" (pointer_expression "*(int *)(local_78 + -0x7fc8)" * (cast_expression "(int *)(local_78 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + -0x7fc8)" ( (binary_expression "local_78 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pcVar39 = FUN_0003e3e0;" (assignment_expression "pcVar39 = FUN_0003e3e0" identifier = identifier) ;) (expression_statement "puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);" (assignment_expression "puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c)" identifier = (cast_expression "(undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x311c)" ( (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x311c" (pointer_expression "*(int *)(local_78 + -0x7fc8)" * (cast_expression "(int *)(local_78 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + -0x7fc8)" ( (binary_expression "local_78 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar38)();" (call_expression "(*pcVar38)()" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(pcVar38 + 0x2c1b4);" (assignment_expression "piVar7 = *(int **)(pcVar38 + 0x2c1b4)" identifier = (pointer_expression "*(int **)(pcVar38 + 0x2c1b4)" * (cast_expression "(int **)(pcVar38 + 0x2c1b4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x2c1b4)" ( (binary_expression "pcVar38 + 0x2c1b4" identifier + number_literal) ))))) ;) (expression_statement "pcStack_b4 = (char *)*piVar7;" (assignment_expression "pcStack_b4 = (char *)*piVar7" identifier = (cast_expression "(char *)*piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (expression_statement "puVar15 = puVar13;" (assignment_expression "puVar15 = puVar13" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar16;" (assignment_expression "pbVar17 = pbVar16" identifier = identifier) ;) (expression_statement "piStack_b0 = piVar14;" (assignment_expression "piStack_b0 = piVar14" identifier = identifier) ;) (expression_statement "iStack_ac = iVar28;" (assignment_expression "iStack_ac = iVar28" identifier = identifier) ;) (expression_statement "pcStack_a4 = pcVar36;" (assignment_expression "pcStack_a4 = pcVar36" identifier = identifier) ;) (expression_statement "pcStack_a0 = pcVar34;" (assignment_expression "pcStack_a0 = pcVar34" identifier = identifier) ;) (expression_statement "pcStack_9c = pcVar35;" (assignment_expression "pcStack_9c = pcVar35" identifier = identifier) ;) (expression_statement "pcStack_98 = pcVar37;" (assignment_expression "pcStack_98 = pcVar37" identifier = identifier) ;) (expression_statement "pcStack_94 = pcVar6;" (assignment_expression "pcStack_94 = pcVar6" identifier = identifier) ;) (expression_statement "iStack_90 = iVar5;" (assignment_expression "iStack_90 = iVar5" identifier = identifier) ;) (expression_statement "pcStack_8c = pcVar39;" (assignment_expression "pcStack_8c = pcVar39" identifier = identifier) ;) (if_statement "if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }" if (parenthesized_expression "(0 < (int)local_78)" ( (binary_expression "0 < (int)local_78" number_literal < (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }" { (expression_statement "puVar8 = (undefined *)puVar13[5];" (assignment_expression "puVar8 = (undefined *)puVar13[5]" identifier = (cast_expression "(undefined *)puVar13[5]" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) (if_statement "if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }" if (parenthesized_expression "((int)local_78 <= (int)puVar8)" ( (binary_expression "(int)local_78 <= (int)puVar8" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar10 = local_78;\n    }" { (expression_statement "puVar10 = local_78;" (assignment_expression "puVar10 = local_78" identifier = identifier) ;) })) (if_statement "if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }" if (parenthesized_expression "((int)puVar8 < 0x41)" ( (binary_expression "(int)puVar8 < 0x41" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }" { (expression_statement "pbVar17 = pbVar20;" (assignment_expression "pbVar17 = pbVar20" identifier = identifier) ;) (expression_statement "puVar8 = local_78;" (assignment_expression "puVar8 = local_78" identifier = identifier) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);" do (compound_statement "{\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      }" { (expression_statement "iStack_f8 = iVar5;" (assignment_expression "iStack_f8 = iVar5" identifier = identifier) ;) (expression_statement "puVar15 = (undefined4 *)(*(code *)*puVar13)();" (assignment_expression "puVar15 = (undefined4 *)(*(code *)*puVar13)()" identifier = (cast_expression "(undefined4 *)(*(code *)*puVar13)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)*puVar13)()" (parenthesized_expression "(*(code *)*puVar13)" ( (pointer_expression "*(code *)*puVar13" * (cast_expression "(code *)*puVar13" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) )) (argument_list "()" ( ))))) ;) (expression_statement "(*(code *)puVar13[2])(puVar15,pbVar16,uVar18);" (call_expression "(*(code *)puVar13[2])(puVar15,pbVar16,uVar18)" (parenthesized_expression "(*(code *)puVar13[2])" ( (pointer_expression "*(code *)puVar13[2]" * (cast_expression "(code *)puVar13[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[2]" identifier [ number_literal ]))) )) (argument_list "(puVar15,pbVar16,uVar18)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)puVar13[2])(puVar15,&iStack_f8,4);" (call_expression "(*(code *)puVar13[2])(puVar15,&iStack_f8,4)" (parenthesized_expression "(*(code *)puVar13[2])" ( (pointer_expression "*(code *)puVar13[2]" * (cast_expression "(code *)puVar13[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[2]" identifier [ number_literal ]))) )) (argument_list "(puVar15,&iStack_f8,4)" ( identifier , (pointer_expression "&iStack_f8" & identifier) , number_literal ))) ;) (expression_statement "(*(code *)puVar13[3])(puVar15,abStack_f4);" (call_expression "(*(code *)puVar13[3])(puVar15,abStack_f4)" (parenthesized_expression "(*(code *)puVar13[3])" ( (pointer_expression "*(code *)puVar13[3]" * (cast_expression "(code *)puVar13[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[3]" identifier [ number_literal ]))) )) (argument_list "(puVar15,abStack_f4)" ( identifier , identifier ))) ;) (if_statement "if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }" if (parenthesized_expression "(0 < (int)puVar10)" ( (binary_expression "0 < (int)puVar10" number_literal < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }" { (expression_statement "pbVar20 = abStack_f4;" (assignment_expression "pbVar20 = abStack_f4" identifier = identifier) ;) (expression_statement "pbVar21 = pbVar17;" (assignment_expression "pbVar21 = pbVar17" identifier = identifier) ;) (do_statement "do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);" do (compound_statement "{\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          }" { (expression_statement "pbVar22 = pbVar21 + 1;" (assignment_expression "pbVar22 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar20;" (assignment_expression "bVar1 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "puVar15 = (undefined4 *)(uint)bVar1;" (assignment_expression "puVar15 = (undefined4 *)(uint)bVar1" identifier = (cast_expression "(undefined4 *)(uint)bVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar21 = *pbVar21 ^ bVar1;" (assignment_expression "*pbVar21 = *pbVar21 ^ bVar1" (pointer_expression "*pbVar21" * identifier) = (binary_expression "*pbVar21 ^ bVar1" (pointer_expression "*pbVar21" * identifier) ^ identifier)) ;) (expression_statement "pbVar21 = pbVar22;" (assignment_expression "pbVar21 = pbVar22" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar17 + (int)puVar10 != pbVar22)" ( (binary_expression "pbVar17 + (int)puVar10 != pbVar22" (binary_expression "pbVar17 + (int)puVar10" identifier + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) })) (expression_statement "pbVar17 = puVar10 + (int)pbVar17;" (assignment_expression "pbVar17 = puVar10 + (int)pbVar17" identifier = (binary_expression "puVar10 + (int)pbVar17" identifier + (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar8 = puVar8 + -(int)puVar10;" (assignment_expression "puVar8 = puVar8 + -(int)puVar10" identifier = (binary_expression "puVar8 + -(int)puVar10" identifier + (unary_expression "-(int)puVar10" - (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if ((int)puVar8 < 1) goto LAB_0003e530;" if (parenthesized_expression "((int)puVar8 < 1)" ( (binary_expression "(int)puVar8 < 1" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0003e530;" goto statement_identifier ;)) (expression_statement "puVar9 = (undefined *)puVar13[5];" (assignment_expression "puVar9 = (undefined *)puVar13[5]" identifier = (cast_expression "(undefined *)puVar13[5]" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }" if (parenthesized_expression "((int)puVar8 < (int)puVar9)" ( (binary_expression "(int)puVar8 < (int)puVar9" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          puVar10 = puVar8;\n        }" { (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) })) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)puVar9 < 0x41)" ( (binary_expression "(int)puVar9 < 0x41" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) ;) })) (expression_statement "pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);" (assignment_expression "pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" identifier = (cast_expression "(byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" ( (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x7480" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" * (cast_expression "(int *)(pcVar38 + 0x2bc88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2bc88)" ( (binary_expression "pcVar38 + 0x2bc88" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);" (assignment_expression "puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" identifier = (cast_expression "(undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" ( (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x748c" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" * (cast_expression "(int *)(pcVar38 + 0x2bc88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2bc88)" ( (binary_expression "pcVar38 + 0x2bc88" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);" (call_expression "(**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550)" (parenthesized_expression "(**(code **)(pcVar38 + 0x2c098))" ( (pointer_expression "**(code **)(pcVar38 + 0x2c098)" * (pointer_expression "*(code **)(pcVar38 + 0x2c098)" * (cast_expression "(code **)(pcVar38 + 0x2c098)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x2c098)" ( (binary_expression "pcVar38 + 0x2c098" identifier + number_literal) ))))) )) (argument_list "(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550)" ( identifier , identifier , number_literal , (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x7550" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" * (cast_expression "(int *)(pcVar38 + 0x2bc88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2bc88)" ( (binary_expression "pcVar38 + 0x2bc88" identifier + number_literal) )))) + number_literal) ))) ;) })) (labeled_statement "LAB_0003e530:\n  pcVar6 = (char *)*piVar7;" statement_identifier : (expression_statement "pcVar6 = (char *)*piVar7;" (assignment_expression "pcVar6 = (char *)*piVar7" identifier = (cast_expression "(char *)*piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;)) (if_statement "if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }" if (parenthesized_expression "(pcStack_b4 == pcVar6)" ( (binary_expression "pcStack_b4 == pcVar6" identifier == identifier) )) (compound_statement "{\n    return pcVar6;\n  }" { (return_statement "return pcVar6;" return identifier ;) })) (expression_statement "pcVar38 = *(code **)(pcVar38 + 0x2c194);" (assignment_expression "pcVar38 = *(code **)(pcVar38 + 0x2c194)" identifier = (pointer_expression "*(code **)(pcVar38 + 0x2c194)" * (cast_expression "(code **)(pcVar38 + 0x2c194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x2c194)" ( (binary_expression "pcVar38 + 0x2c194" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar38)();" (call_expression "(*pcVar38)()" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = bignum_bitcount(puVar15[3]);" (assignment_expression "iVar5 = bignum_bitcount(puVar15[3])" identifier = (call_expression "bignum_bitcount(puVar15[3])" identifier (argument_list "(puVar15[3])" ( (subscript_expression "puVar15[3]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" { (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar26 = iVar25 >> 3;" (assignment_expression "iVar26 = iVar25 >> 3" identifier = (binary_expression "iVar25 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar5 = bignum_bitcount(puVar15[2]);" (assignment_expression "iVar5 = bignum_bitcount(puVar15[2])" identifier = (call_expression "bignum_bitcount(puVar15[2])" identifier (argument_list "(puVar15[2])" ( (subscript_expression "puVar15[2]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar33 = iVar5 + 8;" (assignment_expression "iVar33 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar33 < 0)" ( (binary_expression "iVar33 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar33 = iVar5 + 0xf;\n  }" { (expression_statement "iVar33 = iVar5 + 0xf;" (assignment_expression "iVar33 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar31 = iVar33 >> 3;" (assignment_expression "iVar31 = iVar33 >> 3" identifier = (binary_expression "iVar33 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar27 = iVar26 + 0x13 + iVar31;" (assignment_expression "iVar27 = iVar26 + 0x13 + iVar31" identifier = (binary_expression "iVar26 + 0x13 + iVar31" (binary_expression "iVar26 + 0x13" identifier + number_literal) + identifier)) ;) (expression_statement "iVar5 = iVar26 + -1;" (assignment_expression "iVar5 = iVar26 + -1" identifier = (binary_expression "iVar26 + -1" identifier + number_literal)) ;) (expression_statement "pcVar35 = (char *)safemalloc(iVar27,1);" (assignment_expression "pcVar35 = (char *)safemalloc(iVar27,1)" identifier = (cast_expression "(char *)safemalloc(iVar27,1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(iVar27,1)" identifier (argument_list "(iVar27,1)" ( identifier , number_literal ))))) ;) (expression_statement "pcVar35[3] = '\a';" (assignment_expression "pcVar35[3] = '\a'" (subscript_expression "pcVar35[3]" identifier [ number_literal ]) = (char_literal "'\a'" ' escape_sequence ')) ;) (expression_statement "*pcVar35 = '\0';" (assignment_expression "*pcVar35 = '\0'" (pointer_expression "*pcVar35" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar29 = *(int *)(pcVar38 + 0x2baec);" (assignment_expression "iVar29 = *(int *)(pcVar38 + 0x2baec)" identifier = (pointer_expression "*(int *)(pcVar38 + 0x2baec)" * (cast_expression "(int *)(pcVar38 + 0x2baec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2baec)" ( (binary_expression "pcVar38 + 0x2baec" identifier + number_literal) ))))) ;) (expression_statement "pcVar35[1] = '\0';" (assignment_expression "pcVar35[1] = '\0'" (subscript_expression "pcVar35[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar36 = pcVar35 + 0xf;" (assignment_expression "pcVar36 = pcVar35 + 0xf" identifier = (binary_expression "pcVar35 + 0xf" identifier + number_literal)) ;) (expression_statement "pcVar35[2] = '\0';" (assignment_expression "pcVar35[2] = '\0'" (subscript_expression "pcVar35[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar23 = *(uint *)(iVar29 + -0x1ac0);" (assignment_expression "uVar23 = *(uint *)(iVar29 + -0x1ac0)" identifier = (pointer_expression "*(uint *)(iVar29 + -0x1ac0)" * (cast_expression "(uint *)(iVar29 + -0x1ac0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + -0x1ac0)" ( (binary_expression "iVar29 + -0x1ac0" identifier + number_literal) ))))) ;) (expression_statement "cVar12 = *(char *)(iVar29 + -0x1abc);" (assignment_expression "cVar12 = *(char *)(iVar29 + -0x1abc)" identifier = (pointer_expression "*(char *)(iVar29 + -0x1abc)" * (cast_expression "(char *)(iVar29 + -0x1abc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + -0x1abc)" ( (binary_expression "iVar29 + -0x1abc" identifier + number_literal) ))))) ;) (expression_statement "cVar2 = *(char *)(iVar29 + -0x1abb);" (assignment_expression "cVar2 = *(char *)(iVar29 + -0x1abb)" identifier = (pointer_expression "*(char *)(iVar29 + -0x1abb)" * (cast_expression "(char *)(iVar29 + -0x1abb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + -0x1abb)" ( (binary_expression "iVar29 + -0x1abb" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *(char *)(iVar29 + -0x1aba);" (assignment_expression "cVar3 = *(char *)(iVar29 + -0x1aba)" identifier = (pointer_expression "*(char *)(iVar29 + -0x1aba)" * (cast_expression "(char *)(iVar29 + -0x1aba)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + -0x1aba)" ( (binary_expression "iVar29 + -0x1aba" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = pcVar35 + 4;" (assignment_expression "pcVar6 = pcVar35 + 4" identifier = (binary_expression "pcVar35 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = (uint)pcVar6 & 3;" (assignment_expression "uVar4 = (uint)pcVar6 & 3" identifier = (binary_expression "(uint)pcVar6 & 3" (cast_expression "(uint)pcVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;" (assignment_expression "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" * (cast_expression "(uint *)(pcVar6 + -uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + -uVar4)" ( (binary_expression "pcVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) = (binary_expression "*(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8" (binary_expression "*(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" * (cast_expression "(uint *)(pcVar6 + -uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + -uVar4)" ( (binary_expression "pcVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) & (binary_expression "-1 << (4 - uVar4) * 8" number_literal << (binary_expression "(4 - uVar4) * 8" (parenthesized_expression "(4 - uVar4)" ( (binary_expression "4 - uVar4" number_literal - identifier) )) * number_literal))) | (binary_expression "uVar23 >> uVar4 * 8" identifier >> (binary_expression "uVar4 * 8" identifier * number_literal)))) ;) (expression_statement "pcVar6 = pcVar35 + 7;" (assignment_expression "pcVar6 = pcVar35 + 7" identifier = (binary_expression "pcVar35 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = (uint)pcVar6 & 3;" (assignment_expression "uVar4 = (uint)pcVar6 & 3" identifier = (binary_expression "(uint)pcVar6 & 3" (cast_expression "(uint)pcVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;" (assignment_expression "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" * (cast_expression "(uint *)(pcVar6 + -uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + -uVar4)" ( (binary_expression "pcVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) = (binary_expression "*(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8" (binary_expression "*(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" * (cast_expression "(uint *)(pcVar6 + -uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + -uVar4)" ( (binary_expression "pcVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) & (binary_expression "0xffffffffU >> (uVar4 + 1) * 8" number_literal >> (binary_expression "(uVar4 + 1) * 8" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar23 << (3 - uVar4) * 8" identifier << (binary_expression "(3 - uVar4) * 8" (parenthesized_expression "(3 - uVar4)" ( (binary_expression "3 - uVar4" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "pcVar35[8] = cVar12;" (assignment_expression "pcVar35[8] = cVar12" (subscript_expression "pcVar35[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar35[9] = cVar2;" (assignment_expression "pcVar35[9] = cVar2" (subscript_expression "pcVar35[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar35[10] = cVar3;" (assignment_expression "pcVar35[10] = cVar3" (subscript_expression "pcVar35[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar35[0xb] = (char)(iVar25 >> 0x1b);" (assignment_expression "pcVar35[0xb] = (char)(iVar25 >> 0x1b)" (subscript_expression "pcVar35[0xb]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0x1b)" ( (binary_expression "iVar25 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar35[0xc] = (char)(iVar25 >> 0x13);" (assignment_expression "pcVar35[0xc] = (char)(iVar25 >> 0x13)" (subscript_expression "pcVar35[0xc]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0x13)" ( (binary_expression "iVar25 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar35[0xd] = (char)(iVar25 >> 0xb);" (assignment_expression "pcVar35[0xd] = (char)(iVar25 >> 0xb)" (subscript_expression "pcVar35[0xd]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0xb)" ( (binary_expression "iVar25 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "pcVar35[0xe] = (char)iVar26;" (assignment_expression "pcVar35[0xe] = (char)iVar26" (subscript_expression "pcVar35[0xe]" identifier [ number_literal ]) = (cast_expression "(char)iVar26" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar6 = pcVar36;" (assignment_expression "pcVar6 = pcVar36" identifier = identifier) ;) (if_statement "if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }" { (do_statement "do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);" do (compound_statement "{\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    }" { (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(puVar15[3],iVar5);" (assignment_expression "cVar12 = bignum_byte(puVar15[3],iVar5)" identifier = (call_expression "bignum_byte(puVar15[3],iVar5)" identifier (argument_list "(puVar15[3],iVar5)" ( (subscript_expression "puVar15[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" * identifier) = identifier) ;) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" identifier = identifier) ;) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar25 != -1)" ( (binary_expression "iVar25 != -1" identifier != number_literal) )) ;) (expression_statement "pcVar36 = pcVar36 + iVar26;" (assignment_expression "pcVar36 = pcVar36 + iVar26" identifier = (binary_expression "pcVar36 + iVar26" identifier + identifier)) ;) })) (expression_statement "pcVar36[3] = (char)iVar31;" (assignment_expression "pcVar36[3] = (char)iVar31" (subscript_expression "pcVar36[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar31" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*pcVar36 = (char)(iVar33 >> 0x1b);" (assignment_expression "*pcVar36 = (char)(iVar33 >> 0x1b)" (pointer_expression "*pcVar36" * identifier) = (cast_expression "(char)(iVar33 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar33 >> 0x1b)" ( (binary_expression "iVar33 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar36[1] = (char)(iVar33 >> 0x13);" (assignment_expression "pcVar36[1] = (char)(iVar33 >> 0x13)" (subscript_expression "pcVar36[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar33 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar33 >> 0x13)" ( (binary_expression "iVar33 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar34 = pcVar36 + 4;" (assignment_expression "pcVar34 = pcVar36 + 4" identifier = (binary_expression "pcVar36 + 4" identifier + number_literal)) ;) (expression_statement "pcVar36[2] = (char)(iVar33 >> 0xb);" (assignment_expression "pcVar36[2] = (char)(iVar33 >> 0xb)" (subscript_expression "pcVar36[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar33 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar33 >> 0xb)" ( (binary_expression "iVar33 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "iVar5 = iVar31 + -1;" (assignment_expression "iVar5 = iVar31 + -1" identifier = (binary_expression "iVar31 + -1" identifier + number_literal)) ;) (expression_statement "pcVar6 = pcVar34;" (assignment_expression "pcVar6 = pcVar34" identifier = identifier) ;) (if_statement "if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }" if (parenthesized_expression "(iVar31 != 0)" ( (binary_expression "iVar31 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }" { (do_statement "do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);" do (compound_statement "{\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    }" { (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(puVar15[2],iVar5);" (assignment_expression "cVar12 = bignum_byte(puVar15[2],iVar5)" identifier = (call_expression "bignum_byte(puVar15[2],iVar5)" identifier (argument_list "(puVar15[2],iVar5)" ( (subscript_expression "puVar15[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" * identifier) = identifier) ;) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" identifier = identifier) ;) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar25 != -1)" ( (binary_expression "iVar25 != -1" identifier != number_literal) )) ;) (expression_statement "pcVar34 = pcVar34 + iVar31;" (assignment_expression "pcVar34 = pcVar34 + iVar31" identifier = (binary_expression "pcVar34 + iVar31" identifier + identifier)) ;) })) (if_statement "if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }" if (parenthesized_expression "(pcVar34 != pcVar35 + iVar27)" ( (binary_expression "pcVar34 != pcVar35 + iVar27" identifier != (binary_expression "pcVar35 + iVar27" identifier + identifier)) )) (compound_statement "{\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }" { (expression_statement "piVar19 = (int *)&DAT_00000288;" (assignment_expression "piVar19 = (int *)&DAT_00000288" identifier = (cast_expression "(int *)&DAT_00000288" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000288" & identifier))) ;) (expression_statement "piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);" (assignment_expression "piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570)" identifier = (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x7570)" ( (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x7570" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" * (cast_expression "(int *)(pcVar38 + 0x2baec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2baec)" ( (binary_expression "pcVar38 + 0x2baec" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);" (assignment_expression "piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480)" identifier = (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x7480)" ( (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x7480" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" * (cast_expression "(int *)(pcVar38 + 0x2baec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2baec)" ( (binary_expression "pcVar38 + 0x2baec" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);" (assignment_expression "piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c)" identifier = (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x311c)" ( (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x311c" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" * (cast_expression "(int *)(pcVar38 + 0x2baec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2baec)" ( (binary_expression "pcVar38 + 0x2baec" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar38 + 0x2befc))();" (call_expression "(**(code **)(pcVar38 + 0x2befc))()" (parenthesized_expression "(**(code **)(pcVar38 + 0x2befc))" ( (pointer_expression "**(code **)(pcVar38 + 0x2befc)" * (pointer_expression "*(code **)(pcVar38 + 0x2befc)" * (cast_expression "(code **)(pcVar38 + 0x2befc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x2befc)" ( (binary_expression "pcVar38 + 0x2befc" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*piVar19 = 0;" (assignment_expression "*piVar19 = 0" (pointer_expression "*piVar19" * identifier) = number_literal) ;) (if_statement "if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }" if (parenthesized_expression "((char *)(uint)(iVar5 < 4) == (char *)0x0)" ( (binary_expression "(char *)(uint)(iVar5 < 4) == (char *)0x0" (cast_expression "(char *)(uint)(iVar5 < 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar5 < 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 < 4)" ( (binary_expression "iVar5 < 4" identifier < number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }" { (expression_statement "pcVar6 = (char *)toint(*(undefined4 *)*piVar14);" (assignment_expression "pcVar6 = (char *)toint(*(undefined4 *)*piVar14)" identifier = (cast_expression "(char *)toint(*(undefined4 *)*piVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "toint(*(undefined4 *)*piVar14)" identifier (argument_list "(*(undefined4 *)*piVar14)" ( (pointer_expression "*(undefined4 *)*piVar14" * (cast_expression "(undefined4 *)*piVar14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) ))))) ;) (expression_statement "*piVar24 = (int)pcVar6;" (assignment_expression "*piVar24 = (int)pcVar6" (pointer_expression "*piVar24" * identifier) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }" if (parenthesized_expression "(-1 < (int)pcVar6)" ( (binary_expression "-1 < (int)pcVar6" number_literal < (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }" { (expression_statement "pcVar6 = (char *)(*piVar7 + -4);" (assignment_expression "pcVar6 = (char *)(*piVar7 + -4)" identifier = (cast_expression "(char *)(*piVar7 + -4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + -4)" ( (binary_expression "*piVar7 + -4" (pointer_expression "*piVar7" * identifier) + number_literal) )))) ;) (expression_statement "iVar5 = *piVar14 + 4;" (assignment_expression "iVar5 = *piVar14 + 4" identifier = (binary_expression "*piVar14 + 4" (pointer_expression "*piVar14" * identifier) + number_literal)) ;) (expression_statement "*piVar7 = (int)pcVar6;" (assignment_expression "*piVar7 = (int)pcVar6" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar14 = iVar5;" (assignment_expression "*piVar14 = iVar5" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "iVar25 = *piVar24;" (assignment_expression "iVar25 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (if_statement "if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }" if (parenthesized_expression "(iVar25 <= (int)pcVar6)" ( (binary_expression "iVar25 <= (int)pcVar6" identifier <= (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }" { (expression_statement "*piVar19 = iVar5;" (assignment_expression "*piVar19 = iVar5" (pointer_expression "*piVar19" * identifier) = identifier) ;) (expression_statement "pcVar6 = pcVar6 + -iVar25;" (assignment_expression "pcVar6 = pcVar6 + -iVar25" identifier = (binary_expression "pcVar6 + -iVar25" identifier + (unary_expression "-iVar25" - identifier))) ;) (expression_statement "*piVar14 = iVar5 + iVar25;" (assignment_expression "*piVar14 = iVar5 + iVar25" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar5 + iVar25" identifier + identifier)) ;) (expression_statement "*piVar7 = (int)pcVar6;" (assignment_expression "*piVar7 = (int)pcVar6" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) })) (return_statement "return pcVar6;" return identifier ;) })) (return_statement "return (char *)(uint)(iVar5 < 4);" return (cast_expression "(char *)(uint)(iVar5 < 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar5 < 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 < 4)" ( (binary_expression "iVar5 < 4" identifier < number_literal) )))) ;) })) (expression_statement "*(int *)pbVar17 = iVar27;" (assignment_expression "*(int *)pbVar17 = iVar27" (pointer_expression "*(int *)pbVar17" * (cast_expression "(int *)pbVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (return_statement "return pcVar35;" return identifier ;) })))
(translation_unit "void sha512_mpint(SHA512_State *s,Bignum b)\n\n{\n  int iVar1;\n  int iVar2;\n  uchar lenbuf [4];\n  \n  iVar1 = bignum_bitcount((Bignum_conflict)b);\n  iVar2 = iVar1 + 8;\n  if (iVar2 < 0) {\n    iVar2 = iVar1 + 0xf;\n  }\n  lenbuf = (uchar  [4])(iVar2 >> 3);\n  SHA512_Bytes(s,lenbuf,4);\n  if (iVar1 < 0) {\n                    /* WARNING: Subroutine does not return */\n    smemclr(lenbuf,4);\n  }\n                    /* WARNING: Subroutine does not return */\n  bignum_byte((Bignum_conflict)b,(iVar2 >> 3) + -1);\n}\n\n" (function_definition "void sha512_mpint(SHA512_State *s,Bignum b)\n\n{\n  int iVar1;\n  int iVar2;\n  uchar lenbuf [4];\n  \n  iVar1 = bignum_bitcount((Bignum_conflict)b);\n  iVar2 = iVar1 + 8;\n  if (iVar2 < 0) {\n    iVar2 = iVar1 + 0xf;\n  }\n  lenbuf = (uchar  [4])(iVar2 >> 3);\n  SHA512_Bytes(s,lenbuf,4);\n  if (iVar1 < 0) {\n                    /* WARNING: Subroutine does not return */\n    smemclr(lenbuf,4);\n  }\n                    /* WARNING: Subroutine does not return */\n  bignum_byte((Bignum_conflict)b,(iVar2 >> 3) + -1);\n}" primitive_type (function_declarator "sha512_mpint(SHA512_State *s,Bignum b)" identifier (parameter_list "(SHA512_State *s,Bignum b)" ( (parameter_declaration "SHA512_State *s" type_identifier (pointer_declarator "*s" * identifier)) , (parameter_declaration "Bignum b" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uchar lenbuf [4];\n  \n  iVar1 = bignum_bitcount((Bignum_conflict)b);\n  iVar2 = iVar1 + 8;\n  if (iVar2 < 0) {\n    iVar2 = iVar1 + 0xf;\n  }\n  lenbuf = (uchar  [4])(iVar2 >> 3);\n  SHA512_Bytes(s,lenbuf,4);\n  if (iVar1 < 0) {\n                    /* WARNING: Subroutine does not return */\n    smemclr(lenbuf,4);\n  }\n                    /* WARNING: Subroutine does not return */\n  bignum_byte((Bignum_conflict)b,(iVar2 >> 3) + -1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uchar lenbuf [4];" type_identifier (array_declarator "lenbuf [4]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = bignum_bitcount((Bignum_conflict)b);" (assignment_expression "iVar1 = bignum_bitcount((Bignum_conflict)b)" identifier = (call_expression "bignum_bitcount((Bignum_conflict)b)" identifier (argument_list "((Bignum_conflict)b)" ( (cast_expression "(Bignum_conflict)b" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) )))) ;) (expression_statement "iVar2 = iVar1 + 8;" (assignment_expression "iVar2 = iVar1 + 8" identifier = (binary_expression "iVar1 + 8" identifier + number_literal)) ;) (if_statement "if (iVar2 < 0) {\n    iVar2 = iVar1 + 0xf;\n  }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar2 = iVar1 + 0xf;\n  }" { (expression_statement "iVar2 = iVar1 + 0xf;" (assignment_expression "iVar2 = iVar1 + 0xf" identifier = (binary_expression "iVar1 + 0xf" identifier + number_literal)) ;) })) (expression_statement "lenbuf = (uchar  [4])(iVar2 >> 3);" (assignment_expression "lenbuf = (uchar  [4])(iVar2 >> 3)" identifier = (call_expression "(uchar  [4])(iVar2 >> 3)" (parenthesized_expression "(uchar  [4])" ( (subscript_expression "uchar  [4]" identifier [ number_literal ]) )) (argument_list "(iVar2 >> 3)" ( (binary_expression "iVar2 >> 3" identifier >> number_literal) )))) ;) (expression_statement "SHA512_Bytes(s,lenbuf,4);" (call_expression "SHA512_Bytes(s,lenbuf,4)" identifier (argument_list "(s,lenbuf,4)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (iVar1 < 0) {\n                    /* WARNING: Subroutine does not return */\n    smemclr(lenbuf,4);\n  }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    smemclr(lenbuf,4);\n  }" { comment (expression_statement "smemclr(lenbuf,4);" (call_expression "smemclr(lenbuf,4)" identifier (argument_list "(lenbuf,4)" ( identifier , number_literal ))) ;) })) comment (expression_statement "bignum_byte((Bignum_conflict)b,(iVar2 >> 3) + -1);" (call_expression "bignum_byte((Bignum_conflict)b,(iVar2 >> 3) + -1)" identifier (argument_list "((Bignum_conflict)b,(iVar2 >> 3) + -1)" ( (cast_expression "(Bignum_conflict)b" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) , (binary_expression "(iVar2 >> 3) + -1" (parenthesized_expression "(iVar2 >> 3)" ( (binary_expression "iVar2 >> 3" identifier >> number_literal) )) + number_literal) ))) ;) })))
(translation_unit "char * FUN_0003dff0(undefined4 param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  char cVar2;\n  char cVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 uVar11;\n  char *pcVar6;\n  char cVar12;\n  int *piVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined4 *puVar13;\n  int *piVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  uint uVar23;\n  int *piVar24;\n  int iVar25;\n  int iVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int iVar30;\n  int iVar31;\n  char *pcVar32;\n  int iVar33;\n  char *pcVar34;\n  char *pcVar35;\n  char *pcVar36;\n  char *pcVar37;\n  code *pcVar38;\n  code *pcVar39;\n  int iStack_f8;\n  byte abStack_f4 [64];\n  char *pcStack_b4;\n  int *piStack_b0;\n  int iStack_ac;\n  int iStack_a8;\n  char *pcStack_a4;\n  char *pcStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  char *pcStack_94;\n  int iStack_90;\n  code *pcStack_8c;\n  undefined *local_78;\n  char *local_70;\n  char *local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined *local_5c;\n  int *local_58;\n  int local_54;\n  int local_28;\n  char *local_24;\n  \n  puVar10 = PTR___stack_chk_guard_0006a594;\n  local_24 = *(char **)PTR___stack_chk_guard_0006a594;\n  iVar5 = bignum_bitcount(param_2);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  local_28 = iVar25 >> 3;\n  SHA512_Bytes(param_1,&local_28,4);\n  iVar26 = (iVar25 >> 3) + -1;\n  iVar25 = iVar26;\n  if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }\n  puVar15 = (undefined4 *)&DAT_00000004;\n  piVar14 = &local_28;\n  smemclr();\n  pcVar6 = *(char **)puVar10;\n  if (local_24 == pcVar6) {\n    return pcVar6;\n  }\n  puVar8 = PTR___stack_chk_fail_0006a574;\n  (*(code *)PTR___stack_chk_fail_0006a574)();\n  local_78 = puVar8 + 0x33f18;\n  local_5c = puVar10;\n  local_68 = iVar26;\n  local_64 = param_1;\n  local_60 = param_2;\n  local_58 = &local_28;\n  local_54 = iVar5;\n  iVar5 = bignum_bitcount(piVar14[4]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar33 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(piVar14[5]);\n  iVar26 = iVar5 + 8;\n  if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }\n  iVar31 = iVar26 >> 3;\n  iVar5 = bignum_bitcount(piVar14[6]);\n  iVar29 = iVar5 + 8;\n  if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }\n  iVar30 = iVar29 >> 3;\n  iVar5 = bignum_bitcount(piVar14[7]);\n  iVar27 = iVar5 + 8;\n  if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }\n  iVar28 = iVar27 >> 3;\n  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);\n  iVar5 = iVar33 + -1;\n  local_70 = pcVar35 + iVar28;\n  local_6c = (char *)safemalloc(local_70,1);\n  *local_6c = (char)(iVar25 >> 0x1b);\n  local_6c[1] = (char)(iVar25 >> 0x13);\n  pcVar36 = local_6c + 4;\n  local_6c[2] = (char)(iVar25 >> 0xb);\n  local_6c[3] = (char)iVar33;\n  pcVar6 = pcVar36;\n  if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar26 >> 0x1b);\n  pcVar36[1] = (char)(iVar26 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar26 >> 0xb);\n  pcVar6 = (char *)(iVar31 + -1);\n  pcVar36 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }\n  pcVar34[3] = (char)iVar30;\n  *pcVar34 = (char)(iVar29 >> 0x1b);\n  pcVar34[1] = (char)(iVar29 >> 0x13);\n  pcVar37 = pcVar34 + 4;\n  pcVar34[2] = (char)(iVar29 >> 0xb);\n  pcVar36 = (char *)(iVar30 + -1);\n  pcVar34 = pcVar37;\n  if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }\n  pcVar37[3] = (char)iVar28;\n  *pcVar37 = (char)(iVar27 >> 0x1b);\n  pcVar37[1] = (char)(iVar27 >> 0x13);\n  pcVar34 = pcVar37 + 4;\n  pcVar37[2] = (char)(iVar27 >> 0xb);\n  iStack_a8 = iVar28 + -1;\n  if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }\n  if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }\n  uVar18 = 0x2b0;\n  pcVar38 = *(code **)(local_78 + -0x7bb8);\n  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);\n  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);\n  pcVar39 = FUN_0003e3e0;\n  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);\n  (*pcVar38)();\n  piVar7 = *(int **)(pcVar38 + 0x2c1b4);\n  pcStack_b4 = (char *)*piVar7;\n  puVar15 = puVar13;\n  pbVar17 = pbVar16;\n  piStack_b0 = piVar14;\n  iStack_ac = iVar28;\n  pcStack_a4 = pcVar36;\n  pcStack_a0 = pcVar34;\n  pcStack_9c = pcVar35;\n  pcStack_98 = pcVar37;\n  pcStack_94 = pcVar6;\n  iStack_90 = iVar5;\n  pcStack_8c = pcVar39;\n  if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }\nLAB_0003e530:\n  pcVar6 = (char *)*piVar7;\n  if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }\n  pcVar38 = *(code **)(pcVar38 + 0x2c194);\n  (*pcVar38)();\n  iVar5 = bignum_bitcount(puVar15[3]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar26 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(puVar15[2]);\n  iVar33 = iVar5 + 8;\n  if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }\n  iVar31 = iVar33 >> 3;\n  iVar27 = iVar26 + 0x13 + iVar31;\n  iVar5 = iVar26 + -1;\n  pcVar35 = (char *)safemalloc(iVar27,1);\n  pcVar35[3] = '\a';\n  *pcVar35 = '\0';\n  iVar29 = *(int *)(pcVar38 + 0x2baec);\n  pcVar35[1] = '\0';\n  pcVar36 = pcVar35 + 0xf;\n  pcVar35[2] = '\0';\n  uVar23 = *(uint *)(iVar29 + -0x1ac0);\n  cVar12 = *(char *)(iVar29 + -0x1abc);\n  cVar2 = *(char *)(iVar29 + -0x1abb);\n  cVar3 = *(char *)(iVar29 + -0x1aba);\n  pcVar6 = pcVar35 + 4;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;\n  pcVar6 = pcVar35 + 7;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;\n  pcVar35[8] = cVar12;\n  pcVar35[9] = cVar2;\n  pcVar35[10] = cVar3;\n  pcVar35[0xb] = (char)(iVar25 >> 0x1b);\n  pcVar35[0xc] = (char)(iVar25 >> 0x13);\n  pcVar35[0xd] = (char)(iVar25 >> 0xb);\n  pcVar35[0xe] = (char)iVar26;\n  pcVar6 = pcVar36;\n  if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar33 >> 0x1b);\n  pcVar36[1] = (char)(iVar33 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar33 >> 0xb);\n  iVar5 = iVar31 + -1;\n  pcVar6 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }\n  if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }\n  *(int *)pbVar17 = iVar27;\n  return pcVar35;\n}\n\n" (function_definition "char * FUN_0003dff0(undefined4 param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  char cVar2;\n  char cVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 uVar11;\n  char *pcVar6;\n  char cVar12;\n  int *piVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined4 *puVar13;\n  int *piVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  uint uVar23;\n  int *piVar24;\n  int iVar25;\n  int iVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int iVar30;\n  int iVar31;\n  char *pcVar32;\n  int iVar33;\n  char *pcVar34;\n  char *pcVar35;\n  char *pcVar36;\n  char *pcVar37;\n  code *pcVar38;\n  code *pcVar39;\n  int iStack_f8;\n  byte abStack_f4 [64];\n  char *pcStack_b4;\n  int *piStack_b0;\n  int iStack_ac;\n  int iStack_a8;\n  char *pcStack_a4;\n  char *pcStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  char *pcStack_94;\n  int iStack_90;\n  code *pcStack_8c;\n  undefined *local_78;\n  char *local_70;\n  char *local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined *local_5c;\n  int *local_58;\n  int local_54;\n  int local_28;\n  char *local_24;\n  \n  puVar10 = PTR___stack_chk_guard_0006a594;\n  local_24 = *(char **)PTR___stack_chk_guard_0006a594;\n  iVar5 = bignum_bitcount(param_2);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  local_28 = iVar25 >> 3;\n  SHA512_Bytes(param_1,&local_28,4);\n  iVar26 = (iVar25 >> 3) + -1;\n  iVar25 = iVar26;\n  if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }\n  puVar15 = (undefined4 *)&DAT_00000004;\n  piVar14 = &local_28;\n  smemclr();\n  pcVar6 = *(char **)puVar10;\n  if (local_24 == pcVar6) {\n    return pcVar6;\n  }\n  puVar8 = PTR___stack_chk_fail_0006a574;\n  (*(code *)PTR___stack_chk_fail_0006a574)();\n  local_78 = puVar8 + 0x33f18;\n  local_5c = puVar10;\n  local_68 = iVar26;\n  local_64 = param_1;\n  local_60 = param_2;\n  local_58 = &local_28;\n  local_54 = iVar5;\n  iVar5 = bignum_bitcount(piVar14[4]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar33 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(piVar14[5]);\n  iVar26 = iVar5 + 8;\n  if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }\n  iVar31 = iVar26 >> 3;\n  iVar5 = bignum_bitcount(piVar14[6]);\n  iVar29 = iVar5 + 8;\n  if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }\n  iVar30 = iVar29 >> 3;\n  iVar5 = bignum_bitcount(piVar14[7]);\n  iVar27 = iVar5 + 8;\n  if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }\n  iVar28 = iVar27 >> 3;\n  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);\n  iVar5 = iVar33 + -1;\n  local_70 = pcVar35 + iVar28;\n  local_6c = (char *)safemalloc(local_70,1);\n  *local_6c = (char)(iVar25 >> 0x1b);\n  local_6c[1] = (char)(iVar25 >> 0x13);\n  pcVar36 = local_6c + 4;\n  local_6c[2] = (char)(iVar25 >> 0xb);\n  local_6c[3] = (char)iVar33;\n  pcVar6 = pcVar36;\n  if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar26 >> 0x1b);\n  pcVar36[1] = (char)(iVar26 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar26 >> 0xb);\n  pcVar6 = (char *)(iVar31 + -1);\n  pcVar36 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }\n  pcVar34[3] = (char)iVar30;\n  *pcVar34 = (char)(iVar29 >> 0x1b);\n  pcVar34[1] = (char)(iVar29 >> 0x13);\n  pcVar37 = pcVar34 + 4;\n  pcVar34[2] = (char)(iVar29 >> 0xb);\n  pcVar36 = (char *)(iVar30 + -1);\n  pcVar34 = pcVar37;\n  if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }\n  pcVar37[3] = (char)iVar28;\n  *pcVar37 = (char)(iVar27 >> 0x1b);\n  pcVar37[1] = (char)(iVar27 >> 0x13);\n  pcVar34 = pcVar37 + 4;\n  pcVar37[2] = (char)(iVar27 >> 0xb);\n  iStack_a8 = iVar28 + -1;\n  if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }\n  if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }\n  uVar18 = 0x2b0;\n  pcVar38 = *(code **)(local_78 + -0x7bb8);\n  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);\n  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);\n  pcVar39 = FUN_0003e3e0;\n  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);\n  (*pcVar38)();\n  piVar7 = *(int **)(pcVar38 + 0x2c1b4);\n  pcStack_b4 = (char *)*piVar7;\n  puVar15 = puVar13;\n  pbVar17 = pbVar16;\n  piStack_b0 = piVar14;\n  iStack_ac = iVar28;\n  pcStack_a4 = pcVar36;\n  pcStack_a0 = pcVar34;\n  pcStack_9c = pcVar35;\n  pcStack_98 = pcVar37;\n  pcStack_94 = pcVar6;\n  iStack_90 = iVar5;\n  pcStack_8c = pcVar39;\n  if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }\nLAB_0003e530:\n  pcVar6 = (char *)*piVar7;\n  if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }\n  pcVar38 = *(code **)(pcVar38 + 0x2c194);\n  (*pcVar38)();\n  iVar5 = bignum_bitcount(puVar15[3]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar26 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(puVar15[2]);\n  iVar33 = iVar5 + 8;\n  if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }\n  iVar31 = iVar33 >> 3;\n  iVar27 = iVar26 + 0x13 + iVar31;\n  iVar5 = iVar26 + -1;\n  pcVar35 = (char *)safemalloc(iVar27,1);\n  pcVar35[3] = '\a';\n  *pcVar35 = '\0';\n  iVar29 = *(int *)(pcVar38 + 0x2baec);\n  pcVar35[1] = '\0';\n  pcVar36 = pcVar35 + 0xf;\n  pcVar35[2] = '\0';\n  uVar23 = *(uint *)(iVar29 + -0x1ac0);\n  cVar12 = *(char *)(iVar29 + -0x1abc);\n  cVar2 = *(char *)(iVar29 + -0x1abb);\n  cVar3 = *(char *)(iVar29 + -0x1aba);\n  pcVar6 = pcVar35 + 4;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;\n  pcVar6 = pcVar35 + 7;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;\n  pcVar35[8] = cVar12;\n  pcVar35[9] = cVar2;\n  pcVar35[10] = cVar3;\n  pcVar35[0xb] = (char)(iVar25 >> 0x1b);\n  pcVar35[0xc] = (char)(iVar25 >> 0x13);\n  pcVar35[0xd] = (char)(iVar25 >> 0xb);\n  pcVar35[0xe] = (char)iVar26;\n  pcVar6 = pcVar36;\n  if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar33 >> 0x1b);\n  pcVar36[1] = (char)(iVar33 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar33 >> 0xb);\n  iVar5 = iVar31 + -1;\n  pcVar6 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }\n  if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }\n  *(int *)pbVar17 = iVar27;\n  return pcVar35;\n}" primitive_type (pointer_declarator "* FUN_0003dff0(undefined4 param_1,undefined4 param_2)" * (function_declarator "FUN_0003dff0(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  char cVar2;\n  char cVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 uVar11;\n  char *pcVar6;\n  char cVar12;\n  int *piVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined4 *puVar13;\n  int *piVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  uint uVar23;\n  int *piVar24;\n  int iVar25;\n  int iVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int iVar30;\n  int iVar31;\n  char *pcVar32;\n  int iVar33;\n  char *pcVar34;\n  char *pcVar35;\n  char *pcVar36;\n  char *pcVar37;\n  code *pcVar38;\n  code *pcVar39;\n  int iStack_f8;\n  byte abStack_f4 [64];\n  char *pcStack_b4;\n  int *piStack_b0;\n  int iStack_ac;\n  int iStack_a8;\n  char *pcStack_a4;\n  char *pcStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  char *pcStack_94;\n  int iStack_90;\n  code *pcStack_8c;\n  undefined *local_78;\n  char *local_70;\n  char *local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined *local_5c;\n  int *local_58;\n  int local_54;\n  int local_28;\n  char *local_24;\n  \n  puVar10 = PTR___stack_chk_guard_0006a594;\n  local_24 = *(char **)PTR___stack_chk_guard_0006a594;\n  iVar5 = bignum_bitcount(param_2);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  local_28 = iVar25 >> 3;\n  SHA512_Bytes(param_1,&local_28,4);\n  iVar26 = (iVar25 >> 3) + -1;\n  iVar25 = iVar26;\n  if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }\n  puVar15 = (undefined4 *)&DAT_00000004;\n  piVar14 = &local_28;\n  smemclr();\n  pcVar6 = *(char **)puVar10;\n  if (local_24 == pcVar6) {\n    return pcVar6;\n  }\n  puVar8 = PTR___stack_chk_fail_0006a574;\n  (*(code *)PTR___stack_chk_fail_0006a574)();\n  local_78 = puVar8 + 0x33f18;\n  local_5c = puVar10;\n  local_68 = iVar26;\n  local_64 = param_1;\n  local_60 = param_2;\n  local_58 = &local_28;\n  local_54 = iVar5;\n  iVar5 = bignum_bitcount(piVar14[4]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar33 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(piVar14[5]);\n  iVar26 = iVar5 + 8;\n  if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }\n  iVar31 = iVar26 >> 3;\n  iVar5 = bignum_bitcount(piVar14[6]);\n  iVar29 = iVar5 + 8;\n  if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }\n  iVar30 = iVar29 >> 3;\n  iVar5 = bignum_bitcount(piVar14[7]);\n  iVar27 = iVar5 + 8;\n  if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }\n  iVar28 = iVar27 >> 3;\n  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);\n  iVar5 = iVar33 + -1;\n  local_70 = pcVar35 + iVar28;\n  local_6c = (char *)safemalloc(local_70,1);\n  *local_6c = (char)(iVar25 >> 0x1b);\n  local_6c[1] = (char)(iVar25 >> 0x13);\n  pcVar36 = local_6c + 4;\n  local_6c[2] = (char)(iVar25 >> 0xb);\n  local_6c[3] = (char)iVar33;\n  pcVar6 = pcVar36;\n  if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar26 >> 0x1b);\n  pcVar36[1] = (char)(iVar26 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar26 >> 0xb);\n  pcVar6 = (char *)(iVar31 + -1);\n  pcVar36 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }\n  pcVar34[3] = (char)iVar30;\n  *pcVar34 = (char)(iVar29 >> 0x1b);\n  pcVar34[1] = (char)(iVar29 >> 0x13);\n  pcVar37 = pcVar34 + 4;\n  pcVar34[2] = (char)(iVar29 >> 0xb);\n  pcVar36 = (char *)(iVar30 + -1);\n  pcVar34 = pcVar37;\n  if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }\n  pcVar37[3] = (char)iVar28;\n  *pcVar37 = (char)(iVar27 >> 0x1b);\n  pcVar37[1] = (char)(iVar27 >> 0x13);\n  pcVar34 = pcVar37 + 4;\n  pcVar37[2] = (char)(iVar27 >> 0xb);\n  iStack_a8 = iVar28 + -1;\n  if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }\n  if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }\n  uVar18 = 0x2b0;\n  pcVar38 = *(code **)(local_78 + -0x7bb8);\n  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);\n  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);\n  pcVar39 = FUN_0003e3e0;\n  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);\n  (*pcVar38)();\n  piVar7 = *(int **)(pcVar38 + 0x2c1b4);\n  pcStack_b4 = (char *)*piVar7;\n  puVar15 = puVar13;\n  pbVar17 = pbVar16;\n  piStack_b0 = piVar14;\n  iStack_ac = iVar28;\n  pcStack_a4 = pcVar36;\n  pcStack_a0 = pcVar34;\n  pcStack_9c = pcVar35;\n  pcStack_98 = pcVar37;\n  pcStack_94 = pcVar6;\n  iStack_90 = iVar5;\n  pcStack_8c = pcVar39;\n  if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }\nLAB_0003e530:\n  pcVar6 = (char *)*piVar7;\n  if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }\n  pcVar38 = *(code **)(pcVar38 + 0x2c194);\n  (*pcVar38)();\n  iVar5 = bignum_bitcount(puVar15[3]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar26 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(puVar15[2]);\n  iVar33 = iVar5 + 8;\n  if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }\n  iVar31 = iVar33 >> 3;\n  iVar27 = iVar26 + 0x13 + iVar31;\n  iVar5 = iVar26 + -1;\n  pcVar35 = (char *)safemalloc(iVar27,1);\n  pcVar35[3] = '\a';\n  *pcVar35 = '\0';\n  iVar29 = *(int *)(pcVar38 + 0x2baec);\n  pcVar35[1] = '\0';\n  pcVar36 = pcVar35 + 0xf;\n  pcVar35[2] = '\0';\n  uVar23 = *(uint *)(iVar29 + -0x1ac0);\n  cVar12 = *(char *)(iVar29 + -0x1abc);\n  cVar2 = *(char *)(iVar29 + -0x1abb);\n  cVar3 = *(char *)(iVar29 + -0x1aba);\n  pcVar6 = pcVar35 + 4;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;\n  pcVar6 = pcVar35 + 7;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;\n  pcVar35[8] = cVar12;\n  pcVar35[9] = cVar2;\n  pcVar35[10] = cVar3;\n  pcVar35[0xb] = (char)(iVar25 >> 0x1b);\n  pcVar35[0xc] = (char)(iVar25 >> 0x13);\n  pcVar35[0xd] = (char)(iVar25 >> 0xb);\n  pcVar35[0xe] = (char)iVar26;\n  pcVar6 = pcVar36;\n  if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar33 >> 0x1b);\n  pcVar36[1] = (char)(iVar33 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar33 >> 0xb);\n  iVar5 = iVar31 + -1;\n  pcVar6 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }\n  if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }\n  *(int *)pbVar17 = iVar27;\n  return pcVar35;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 uVar11;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "char *pcVar32;" primitive_type (pointer_declarator "*pcVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "char *pcVar34;" primitive_type (pointer_declarator "*pcVar34" * identifier) ;) (declaration "char *pcVar35;" primitive_type (pointer_declarator "*pcVar35" * identifier) ;) (declaration "char *pcVar36;" primitive_type (pointer_declarator "*pcVar36" * identifier) ;) (declaration "char *pcVar37;" primitive_type (pointer_declarator "*pcVar37" * identifier) ;) (declaration "code *pcVar38;" type_identifier (pointer_declarator "*pcVar38" * identifier) ;) (declaration "code *pcVar39;" type_identifier (pointer_declarator "*pcVar39" * identifier) ;) (declaration "int iStack_f8;" primitive_type identifier ;) (declaration "byte abStack_f4 [64];" type_identifier (array_declarator "abStack_f4 [64]" identifier [ number_literal ]) ;) (declaration "char *pcStack_b4;" primitive_type (pointer_declarator "*pcStack_b4" * identifier) ;) (declaration "int *piStack_b0;" primitive_type (pointer_declarator "*piStack_b0" * identifier) ;) (declaration "int iStack_ac;" primitive_type identifier ;) (declaration "int iStack_a8;" primitive_type identifier ;) (declaration "char *pcStack_a4;" primitive_type (pointer_declarator "*pcStack_a4" * identifier) ;) (declaration "char *pcStack_a0;" primitive_type (pointer_declarator "*pcStack_a0" * identifier) ;) (declaration "char *pcStack_9c;" primitive_type (pointer_declarator "*pcStack_9c" * identifier) ;) (declaration "char *pcStack_98;" primitive_type (pointer_declarator "*pcStack_98" * identifier) ;) (declaration "char *pcStack_94;" primitive_type (pointer_declarator "*pcStack_94" * identifier) ;) (declaration "int iStack_90;" primitive_type identifier ;) (declaration "code *pcStack_8c;" type_identifier (pointer_declarator "*pcStack_8c" * identifier) ;) (declaration "undefined *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "char *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "char *local_6c;" primitive_type (pointer_declarator "*local_6c" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "int *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_guard_0006a594;" (assignment_expression "puVar10 = PTR___stack_chk_guard_0006a594" identifier = identifier) ;) (expression_statement "local_24 = *(char **)PTR___stack_chk_guard_0006a594;" (assignment_expression "local_24 = *(char **)PTR___stack_chk_guard_0006a594" identifier = (pointer_expression "*(char **)PTR___stack_chk_guard_0006a594" * (cast_expression "(char **)PTR___stack_chk_guard_0006a594" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar5 = bignum_bitcount(param_2);" (assignment_expression "iVar5 = bignum_bitcount(param_2)" identifier = (call_expression "bignum_bitcount(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" { (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "local_28 = iVar25 >> 3;" (assignment_expression "local_28 = iVar25 >> 3" identifier = (binary_expression "iVar25 >> 3" identifier >> number_literal)) ;) (expression_statement "SHA512_Bytes(param_1,&local_28,4);" (call_expression "SHA512_Bytes(param_1,&local_28,4)" identifier (argument_list "(param_1,&local_28,4)" ( identifier , (pointer_expression "&local_28" & identifier) , number_literal ))) ;) (expression_statement "iVar26 = (iVar25 >> 3) + -1;" (assignment_expression "iVar26 = (iVar25 >> 3) + -1" identifier = (binary_expression "(iVar25 >> 3) + -1" (parenthesized_expression "(iVar25 >> 3)" ( (binary_expression "iVar25 >> 3" identifier >> number_literal) )) + number_literal)) ;) (expression_statement "iVar25 = iVar26;" (assignment_expression "iVar25 = iVar26" identifier = identifier) ;) (if_statement "if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (compound_statement "{\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }" { (do_statement "do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);" do (compound_statement "{\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    }" { (expression_statement "iVar26 = iVar25;" (assignment_expression "iVar26 = iVar25" identifier = identifier) ;) (expression_statement "uVar11 = bignum_byte(param_2,iVar26);" (assignment_expression "uVar11 = bignum_byte(param_2,iVar26)" identifier = (call_expression "bignum_byte(param_2,iVar26)" identifier (argument_list "(param_2,iVar26)" ( identifier , identifier )))) ;) (expression_statement "local_28 = CONCAT13(uVar11,local_28._1_3_);" (assignment_expression "local_28 = CONCAT13(uVar11,local_28._1_3_)" identifier = (call_expression "CONCAT13(uVar11,local_28._1_3_)" identifier (argument_list "(uVar11,local_28._1_3_)" ( identifier , (field_expression "local_28._1_3_" identifier . field_identifier) )))) ;) (expression_statement "SHA512_Bytes(param_1,&local_28,1);" (call_expression "SHA512_Bytes(param_1,&local_28,1)" identifier (argument_list "(param_1,&local_28,1)" ( identifier , (pointer_expression "&local_28" & identifier) , number_literal ))) ;) (expression_statement "iVar25 = iVar26 + -1;" (assignment_expression "iVar25 = iVar26 + -1" identifier = (binary_expression "iVar26 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(0 < iVar26)" ( (binary_expression "0 < iVar26" number_literal < identifier) )) ;) })) (expression_statement "puVar15 = (undefined4 *)&DAT_00000004;" (assignment_expression "puVar15 = (undefined4 *)&DAT_00000004" identifier = (cast_expression "(undefined4 *)&DAT_00000004" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000004" & identifier))) ;) (expression_statement "piVar14 = &local_28;" (assignment_expression "piVar14 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (expression_statement "smemclr();" (call_expression "smemclr()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar6 = *(char **)puVar10;" (assignment_expression "pcVar6 = *(char **)puVar10" identifier = (pointer_expression "*(char **)puVar10" * (cast_expression "(char **)puVar10" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (local_24 == pcVar6) {\n    return pcVar6;\n  }" if (parenthesized_expression "(local_24 == pcVar6)" ( (binary_expression "local_24 == pcVar6" identifier == identifier) )) (compound_statement "{\n    return pcVar6;\n  }" { (return_statement "return pcVar6;" return identifier ;) })) (expression_statement "puVar8 = PTR___stack_chk_fail_0006a574;" (assignment_expression "puVar8 = PTR___stack_chk_fail_0006a574" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0006a574)();" (call_expression "(*(code *)PTR___stack_chk_fail_0006a574)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0006a574)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0006a574" * (cast_expression "(code *)PTR___stack_chk_fail_0006a574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "local_78 = puVar8 + 0x33f18;" (assignment_expression "local_78 = puVar8 + 0x33f18" identifier = (binary_expression "puVar8 + 0x33f18" identifier + number_literal)) ;) (expression_statement "local_5c = puVar10;" (assignment_expression "local_5c = puVar10" identifier = identifier) ;) (expression_statement "local_68 = iVar26;" (assignment_expression "local_68 = iVar26" identifier = identifier) ;) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" identifier = identifier) ;) (expression_statement "local_60 = param_2;" (assignment_expression "local_60 = param_2" identifier = identifier) ;) (expression_statement "local_58 = &local_28;" (assignment_expression "local_58 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (expression_statement "local_54 = iVar5;" (assignment_expression "local_54 = iVar5" identifier = identifier) ;) (expression_statement "iVar5 = bignum_bitcount(piVar14[4]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[4])" identifier = (call_expression "bignum_bitcount(piVar14[4])" identifier (argument_list "(piVar14[4])" ( (subscript_expression "piVar14[4]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" { (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar33 = iVar25 >> 3;" (assignment_expression "iVar33 = iVar25 >> 3" identifier = (binary_expression "iVar25 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar5 = bignum_bitcount(piVar14[5]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[5])" identifier = (call_expression "bignum_bitcount(piVar14[5])" identifier (argument_list "(piVar14[5])" ( (subscript_expression "piVar14[5]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar26 = iVar5 + 8;" (assignment_expression "iVar26 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar26 < 0)" ( (binary_expression "iVar26 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar26 = iVar5 + 0xf;\n  }" { (expression_statement "iVar26 = iVar5 + 0xf;" (assignment_expression "iVar26 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar31 = iVar26 >> 3;" (assignment_expression "iVar31 = iVar26 >> 3" identifier = (binary_expression "iVar26 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar5 = bignum_bitcount(piVar14[6]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[6])" identifier = (call_expression "bignum_bitcount(piVar14[6])" identifier (argument_list "(piVar14[6])" ( (subscript_expression "piVar14[6]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar29 = iVar5 + 8;" (assignment_expression "iVar29 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar29 < 0)" ( (binary_expression "iVar29 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar29 = iVar5 + 0xf;\n  }" { (expression_statement "iVar29 = iVar5 + 0xf;" (assignment_expression "iVar29 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar30 = iVar29 >> 3;" (assignment_expression "iVar30 = iVar29 >> 3" identifier = (binary_expression "iVar29 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar5 = bignum_bitcount(piVar14[7]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[7])" identifier = (call_expression "bignum_bitcount(piVar14[7])" identifier (argument_list "(piVar14[7])" ( (subscript_expression "piVar14[7]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar27 = iVar5 + 8;" (assignment_expression "iVar27 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar27 < 0)" ( (binary_expression "iVar27 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar27 = iVar5 + 0xf;\n  }" { (expression_statement "iVar27 = iVar5 + 0xf;" (assignment_expression "iVar27 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar28 = iVar27 >> 3;" (assignment_expression "iVar28 = iVar27 >> 3" identifier = (binary_expression "iVar27 >> 3" identifier >> number_literal)) ;) (expression_statement "pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);" (assignment_expression "pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30)" identifier = (cast_expression "(char *)(iVar33 + 0x10 + iVar31 + iVar30)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x10 + iVar31 + iVar30)" ( (binary_expression "iVar33 + 0x10 + iVar31 + iVar30" (binary_expression "iVar33 + 0x10 + iVar31" (binary_expression "iVar33 + 0x10" identifier + number_literal) + identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar33 + -1;" (assignment_expression "iVar5 = iVar33 + -1" identifier = (binary_expression "iVar33 + -1" identifier + number_literal)) ;) (expression_statement "local_70 = pcVar35 + iVar28;" (assignment_expression "local_70 = pcVar35 + iVar28" identifier = (binary_expression "pcVar35 + iVar28" identifier + identifier)) ;) (expression_statement "local_6c = (char *)safemalloc(local_70,1);" (assignment_expression "local_6c = (char *)safemalloc(local_70,1)" identifier = (cast_expression "(char *)safemalloc(local_70,1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(local_70,1)" identifier (argument_list "(local_70,1)" ( identifier , number_literal ))))) ;) (expression_statement "*local_6c = (char)(iVar25 >> 0x1b);" (assignment_expression "*local_6c = (char)(iVar25 >> 0x1b)" (pointer_expression "*local_6c" * identifier) = (cast_expression "(char)(iVar25 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0x1b)" ( (binary_expression "iVar25 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "local_6c[1] = (char)(iVar25 >> 0x13);" (assignment_expression "local_6c[1] = (char)(iVar25 >> 0x13)" (subscript_expression "local_6c[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0x13)" ( (binary_expression "iVar25 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar36 = local_6c + 4;" (assignment_expression "pcVar36 = local_6c + 4" identifier = (binary_expression "local_6c + 4" identifier + number_literal)) ;) (expression_statement "local_6c[2] = (char)(iVar25 >> 0xb);" (assignment_expression "local_6c[2] = (char)(iVar25 >> 0xb)" (subscript_expression "local_6c[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0xb)" ( (binary_expression "iVar25 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "local_6c[3] = (char)iVar33;" (assignment_expression "local_6c[3] = (char)iVar33" (subscript_expression "local_6c[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar33" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar6 = pcVar36;" (assignment_expression "pcVar6 = pcVar36" identifier = identifier) ;) (if_statement "if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }" { (do_statement "do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);" do (compound_statement "{\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    }" { (expression_statement "pcVar35 = pcVar6 + 1;" (assignment_expression "pcVar35 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(piVar14[4],iVar5);" (assignment_expression "cVar12 = bignum_byte(piVar14[4],iVar5)" identifier = (call_expression "bignum_byte(piVar14[4],iVar5)" identifier (argument_list "(piVar14[4],iVar5)" ( (subscript_expression "piVar14[4]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" * identifier) = identifier) ;) (expression_statement "pcVar6 = pcVar35;" (assignment_expression "pcVar6 = pcVar35" identifier = identifier) ;) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar25 != -1)" ( (binary_expression "iVar25 != -1" identifier != number_literal) )) ;) (expression_statement "pcVar36 = pcVar36 + iVar33;" (assignment_expression "pcVar36 = pcVar36 + iVar33" identifier = (binary_expression "pcVar36 + iVar33" identifier + identifier)) ;) (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" identifier = number_literal) ;) })) (expression_statement "pcVar36[3] = (char)iVar31;" (assignment_expression "pcVar36[3] = (char)iVar31" (subscript_expression "pcVar36[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar31" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*pcVar36 = (char)(iVar26 >> 0x1b);" (assignment_expression "*pcVar36 = (char)(iVar26 >> 0x1b)" (pointer_expression "*pcVar36" * identifier) = (cast_expression "(char)(iVar26 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar26 >> 0x1b)" ( (binary_expression "iVar26 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar36[1] = (char)(iVar26 >> 0x13);" (assignment_expression "pcVar36[1] = (char)(iVar26 >> 0x13)" (subscript_expression "pcVar36[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar26 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar26 >> 0x13)" ( (binary_expression "iVar26 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar34 = pcVar36 + 4;" (assignment_expression "pcVar34 = pcVar36 + 4" identifier = (binary_expression "pcVar36 + 4" identifier + number_literal)) ;) (expression_statement "pcVar36[2] = (char)(iVar26 >> 0xb);" (assignment_expression "pcVar36[2] = (char)(iVar26 >> 0xb)" (subscript_expression "pcVar36[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar26 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar26 >> 0xb)" ( (binary_expression "iVar26 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "pcVar6 = (char *)(iVar31 + -1);" (assignment_expression "pcVar6 = (char *)(iVar31 + -1)" identifier = (cast_expression "(char *)(iVar31 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar31 + -1)" ( (binary_expression "iVar31 + -1" identifier + number_literal) )))) ;) (expression_statement "pcVar36 = pcVar34;" (assignment_expression "pcVar36 = pcVar34" identifier = identifier) ;) (if_statement "if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }" if (parenthesized_expression "(iVar31 != 0)" ( (binary_expression "iVar31 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }" { (do_statement "do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);" do (compound_statement "{\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    }" { (expression_statement "pcVar35 = pcVar36 + 1;" (assignment_expression "pcVar35 = pcVar36 + 1" identifier = (binary_expression "pcVar36 + 1" identifier + number_literal)) ;) (expression_statement "pcVar37 = pcVar6 + -1;" (assignment_expression "pcVar37 = pcVar6 + -1" identifier = (binary_expression "pcVar6 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(piVar14[5],pcVar6);" (assignment_expression "cVar12 = bignum_byte(piVar14[5],pcVar6)" identifier = (call_expression "bignum_byte(piVar14[5],pcVar6)" identifier (argument_list "(piVar14[5],pcVar6)" ( (subscript_expression "piVar14[5]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar36 = cVar12;" (assignment_expression "*pcVar36 = cVar12" (pointer_expression "*pcVar36" * identifier) = identifier) ;) (expression_statement "pcVar36 = pcVar35;" (assignment_expression "pcVar36 = pcVar35" identifier = identifier) ;) (expression_statement "pcVar6 = pcVar37;" (assignment_expression "pcVar6 = pcVar37" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar37 != (char *)0xffffffff)" ( (binary_expression "pcVar37 != (char *)0xffffffff" identifier != (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pcVar34 = pcVar34 + iVar31;" (assignment_expression "pcVar34 = pcVar34 + iVar31" identifier = (binary_expression "pcVar34 + iVar31" identifier + identifier)) ;) (expression_statement "pcVar6 = (char *)0xffffffff;" (assignment_expression "pcVar6 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar34[3] = (char)iVar30;" (assignment_expression "pcVar34[3] = (char)iVar30" (subscript_expression "pcVar34[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar30" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*pcVar34 = (char)(iVar29 >> 0x1b);" (assignment_expression "*pcVar34 = (char)(iVar29 >> 0x1b)" (pointer_expression "*pcVar34" * identifier) = (cast_expression "(char)(iVar29 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar29 >> 0x1b)" ( (binary_expression "iVar29 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar34[1] = (char)(iVar29 >> 0x13);" (assignment_expression "pcVar34[1] = (char)(iVar29 >> 0x13)" (subscript_expression "pcVar34[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar29 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar29 >> 0x13)" ( (binary_expression "iVar29 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar37 = pcVar34 + 4;" (assignment_expression "pcVar37 = pcVar34 + 4" identifier = (binary_expression "pcVar34 + 4" identifier + number_literal)) ;) (expression_statement "pcVar34[2] = (char)(iVar29 >> 0xb);" (assignment_expression "pcVar34[2] = (char)(iVar29 >> 0xb)" (subscript_expression "pcVar34[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar29 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar29 >> 0xb)" ( (binary_expression "iVar29 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "pcVar36 = (char *)(iVar30 + -1);" (assignment_expression "pcVar36 = (char *)(iVar30 + -1)" identifier = (cast_expression "(char *)(iVar30 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -1)" ( (binary_expression "iVar30 + -1" identifier + number_literal) )))) ;) (expression_statement "pcVar34 = pcVar37;" (assignment_expression "pcVar34 = pcVar37" identifier = identifier) ;) (if_statement "if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }" if (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }" { (do_statement "do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);" do (compound_statement "{\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    }" { (expression_statement "pcVar6 = pcVar34 + 1;" (assignment_expression "pcVar6 = pcVar34 + 1" identifier = (binary_expression "pcVar34 + 1" identifier + number_literal)) ;) (expression_statement "pcVar32 = pcVar36 + -1;" (assignment_expression "pcVar32 = pcVar36 + -1" identifier = (binary_expression "pcVar36 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(piVar14[6],pcVar36);" (assignment_expression "cVar12 = bignum_byte(piVar14[6],pcVar36)" identifier = (call_expression "bignum_byte(piVar14[6],pcVar36)" identifier (argument_list "(piVar14[6],pcVar36)" ( (subscript_expression "piVar14[6]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar34 = cVar12;" (assignment_expression "*pcVar34 = cVar12" (pointer_expression "*pcVar34" * identifier) = identifier) ;) (expression_statement "pcVar36 = pcVar32;" (assignment_expression "pcVar36 = pcVar32" identifier = identifier) ;) (expression_statement "pcVar34 = pcVar6;" (assignment_expression "pcVar34 = pcVar6" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar32 != (char *)0xffffffff)" ( (binary_expression "pcVar32 != (char *)0xffffffff" identifier != (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pcVar37 = pcVar37 + iVar30;" (assignment_expression "pcVar37 = pcVar37 + iVar30" identifier = (binary_expression "pcVar37 + iVar30" identifier + identifier)) ;) (expression_statement "pcVar36 = (char *)0xffffffff;" (assignment_expression "pcVar36 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar37[3] = (char)iVar28;" (assignment_expression "pcVar37[3] = (char)iVar28" (subscript_expression "pcVar37[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar28" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*pcVar37 = (char)(iVar27 >> 0x1b);" (assignment_expression "*pcVar37 = (char)(iVar27 >> 0x1b)" (pointer_expression "*pcVar37" * identifier) = (cast_expression "(char)(iVar27 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar27 >> 0x1b)" ( (binary_expression "iVar27 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar37[1] = (char)(iVar27 >> 0x13);" (assignment_expression "pcVar37[1] = (char)(iVar27 >> 0x13)" (subscript_expression "pcVar37[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar27 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar27 >> 0x13)" ( (binary_expression "iVar27 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar34 = pcVar37 + 4;" (assignment_expression "pcVar34 = pcVar37 + 4" identifier = (binary_expression "pcVar37 + 4" identifier + number_literal)) ;) (expression_statement "pcVar37[2] = (char)(iVar27 >> 0xb);" (assignment_expression "pcVar37[2] = (char)(iVar27 >> 0xb)" (subscript_expression "pcVar37[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar27 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar27 >> 0xb)" ( (binary_expression "iVar27 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "iStack_a8 = iVar28 + -1;" (assignment_expression "iStack_a8 = iVar28 + -1" identifier = (binary_expression "iVar28 + -1" identifier + number_literal)) ;) (if_statement "if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }" { (expression_statement "pcVar37 = (char *)0xffffffff;" (assignment_expression "pcVar37 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar32 = pcVar34;" (assignment_expression "pcVar32 = pcVar34" identifier = identifier) ;) (do_statement "do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);" do (compound_statement "{\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    }" { (expression_statement "pcVar36 = pcVar32 + 1;" (assignment_expression "pcVar36 = pcVar32 + 1" identifier = (binary_expression "pcVar32 + 1" identifier + number_literal)) ;) (expression_statement "iVar25 = iStack_a8 + -1;" (assignment_expression "iVar25 = iStack_a8 + -1" identifier = (binary_expression "iStack_a8 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(piVar14[7],iStack_a8);" (assignment_expression "cVar12 = bignum_byte(piVar14[7],iStack_a8)" identifier = (call_expression "bignum_byte(piVar14[7],iStack_a8)" identifier (argument_list "(piVar14[7],iStack_a8)" ( (subscript_expression "piVar14[7]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar32 = cVar12;" (assignment_expression "*pcVar32 = cVar12" (pointer_expression "*pcVar32" * identifier) = identifier) ;) (expression_statement "iStack_a8 = iVar25;" (assignment_expression "iStack_a8 = iVar25" identifier = identifier) ;) (expression_statement "pcVar32 = pcVar36;" (assignment_expression "pcVar32 = pcVar36" identifier = identifier) ;) }) while (parenthesized_expression "(iVar25 != -1)" ( (binary_expression "iVar25 != -1" identifier != number_literal) )) ;) (expression_statement "pcVar34 = pcVar34 + iVar28;" (assignment_expression "pcVar34 = pcVar34 + iVar28" identifier = (binary_expression "pcVar34 + iVar28" identifier + identifier)) ;) (expression_statement "iStack_a8 = -1;" (assignment_expression "iStack_a8 = -1" identifier = number_literal) ;) })) (if_statement "if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }" if (parenthesized_expression "(pcVar34 == local_6c + (int)local_70)" ( (binary_expression "pcVar34 == local_6c + (int)local_70" identifier == (binary_expression "local_6c + (int)local_70" identifier + (cast_expression "(int)local_70" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n    *puVar15 = local_70;\n    return local_6c;\n  }" { (expression_statement "*puVar15 = local_70;" (assignment_expression "*puVar15 = local_70" (pointer_expression "*puVar15" * identifier) = identifier) ;) (return_statement "return local_6c;" return identifier ;) })) (expression_statement "uVar18 = 0x2b0;" (assignment_expression "uVar18 = 0x2b0" identifier = number_literal) ;) (expression_statement "pcVar38 = *(code **)(local_78 + -0x7bb8);" (assignment_expression "pcVar38 = *(code **)(local_78 + -0x7bb8)" identifier = (pointer_expression "*(code **)(local_78 + -0x7bb8)" * (cast_expression "(code **)(local_78 + -0x7bb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_78 + -0x7bb8)" ( (binary_expression "local_78 + -0x7bb8" identifier + number_literal) ))))) ;) (expression_statement "pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);" (assignment_expression "pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584)" identifier = (cast_expression "(byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x7584)" ( (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x7584" (pointer_expression "*(int *)(local_78 + -0x7fc8)" * (cast_expression "(int *)(local_78 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + -0x7fc8)" ( (binary_expression "local_78 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);" (assignment_expression "pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480)" identifier = (cast_expression "(byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x7480)" ( (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x7480" (pointer_expression "*(int *)(local_78 + -0x7fc8)" * (cast_expression "(int *)(local_78 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + -0x7fc8)" ( (binary_expression "local_78 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pcVar39 = FUN_0003e3e0;" (assignment_expression "pcVar39 = FUN_0003e3e0" identifier = identifier) ;) (expression_statement "puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);" (assignment_expression "puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c)" identifier = (cast_expression "(undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x311c)" ( (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x311c" (pointer_expression "*(int *)(local_78 + -0x7fc8)" * (cast_expression "(int *)(local_78 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + -0x7fc8)" ( (binary_expression "local_78 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar38)();" (call_expression "(*pcVar38)()" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(pcVar38 + 0x2c1b4);" (assignment_expression "piVar7 = *(int **)(pcVar38 + 0x2c1b4)" identifier = (pointer_expression "*(int **)(pcVar38 + 0x2c1b4)" * (cast_expression "(int **)(pcVar38 + 0x2c1b4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x2c1b4)" ( (binary_expression "pcVar38 + 0x2c1b4" identifier + number_literal) ))))) ;) (expression_statement "pcStack_b4 = (char *)*piVar7;" (assignment_expression "pcStack_b4 = (char *)*piVar7" identifier = (cast_expression "(char *)*piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (expression_statement "puVar15 = puVar13;" (assignment_expression "puVar15 = puVar13" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar16;" (assignment_expression "pbVar17 = pbVar16" identifier = identifier) ;) (expression_statement "piStack_b0 = piVar14;" (assignment_expression "piStack_b0 = piVar14" identifier = identifier) ;) (expression_statement "iStack_ac = iVar28;" (assignment_expression "iStack_ac = iVar28" identifier = identifier) ;) (expression_statement "pcStack_a4 = pcVar36;" (assignment_expression "pcStack_a4 = pcVar36" identifier = identifier) ;) (expression_statement "pcStack_a0 = pcVar34;" (assignment_expression "pcStack_a0 = pcVar34" identifier = identifier) ;) (expression_statement "pcStack_9c = pcVar35;" (assignment_expression "pcStack_9c = pcVar35" identifier = identifier) ;) (expression_statement "pcStack_98 = pcVar37;" (assignment_expression "pcStack_98 = pcVar37" identifier = identifier) ;) (expression_statement "pcStack_94 = pcVar6;" (assignment_expression "pcStack_94 = pcVar6" identifier = identifier) ;) (expression_statement "iStack_90 = iVar5;" (assignment_expression "iStack_90 = iVar5" identifier = identifier) ;) (expression_statement "pcStack_8c = pcVar39;" (assignment_expression "pcStack_8c = pcVar39" identifier = identifier) ;) (if_statement "if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }" if (parenthesized_expression "(0 < (int)local_78)" ( (binary_expression "0 < (int)local_78" number_literal < (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }" { (expression_statement "puVar8 = (undefined *)puVar13[5];" (assignment_expression "puVar8 = (undefined *)puVar13[5]" identifier = (cast_expression "(undefined *)puVar13[5]" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) (if_statement "if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }" if (parenthesized_expression "((int)local_78 <= (int)puVar8)" ( (binary_expression "(int)local_78 <= (int)puVar8" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar10 = local_78;\n    }" { (expression_statement "puVar10 = local_78;" (assignment_expression "puVar10 = local_78" identifier = identifier) ;) })) (if_statement "if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }" if (parenthesized_expression "((int)puVar8 < 0x41)" ( (binary_expression "(int)puVar8 < 0x41" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }" { (expression_statement "pbVar17 = pbVar20;" (assignment_expression "pbVar17 = pbVar20" identifier = identifier) ;) (expression_statement "puVar8 = local_78;" (assignment_expression "puVar8 = local_78" identifier = identifier) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);" do (compound_statement "{\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      }" { (expression_statement "iStack_f8 = iVar5;" (assignment_expression "iStack_f8 = iVar5" identifier = identifier) ;) (expression_statement "puVar15 = (undefined4 *)(*(code *)*puVar13)();" (assignment_expression "puVar15 = (undefined4 *)(*(code *)*puVar13)()" identifier = (cast_expression "(undefined4 *)(*(code *)*puVar13)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)*puVar13)()" (parenthesized_expression "(*(code *)*puVar13)" ( (pointer_expression "*(code *)*puVar13" * (cast_expression "(code *)*puVar13" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) )) (argument_list "()" ( ))))) ;) (expression_statement "(*(code *)puVar13[2])(puVar15,pbVar16,uVar18);" (call_expression "(*(code *)puVar13[2])(puVar15,pbVar16,uVar18)" (parenthesized_expression "(*(code *)puVar13[2])" ( (pointer_expression "*(code *)puVar13[2]" * (cast_expression "(code *)puVar13[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[2]" identifier [ number_literal ]))) )) (argument_list "(puVar15,pbVar16,uVar18)" ( identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)puVar13[2])(puVar15,&iStack_f8,4);" (call_expression "(*(code *)puVar13[2])(puVar15,&iStack_f8,4)" (parenthesized_expression "(*(code *)puVar13[2])" ( (pointer_expression "*(code *)puVar13[2]" * (cast_expression "(code *)puVar13[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[2]" identifier [ number_literal ]))) )) (argument_list "(puVar15,&iStack_f8,4)" ( identifier , (pointer_expression "&iStack_f8" & identifier) , number_literal ))) ;) (expression_statement "(*(code *)puVar13[3])(puVar15,abStack_f4);" (call_expression "(*(code *)puVar13[3])(puVar15,abStack_f4)" (parenthesized_expression "(*(code *)puVar13[3])" ( (pointer_expression "*(code *)puVar13[3]" * (cast_expression "(code *)puVar13[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[3]" identifier [ number_literal ]))) )) (argument_list "(puVar15,abStack_f4)" ( identifier , identifier ))) ;) (if_statement "if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }" if (parenthesized_expression "(0 < (int)puVar10)" ( (binary_expression "0 < (int)puVar10" number_literal < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }" { (expression_statement "pbVar20 = abStack_f4;" (assignment_expression "pbVar20 = abStack_f4" identifier = identifier) ;) (expression_statement "pbVar21 = pbVar17;" (assignment_expression "pbVar21 = pbVar17" identifier = identifier) ;) (do_statement "do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);" do (compound_statement "{\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          }" { (expression_statement "pbVar22 = pbVar21 + 1;" (assignment_expression "pbVar22 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar20;" (assignment_expression "bVar1 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "puVar15 = (undefined4 *)(uint)bVar1;" (assignment_expression "puVar15 = (undefined4 *)(uint)bVar1" identifier = (cast_expression "(undefined4 *)(uint)bVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar21 = *pbVar21 ^ bVar1;" (assignment_expression "*pbVar21 = *pbVar21 ^ bVar1" (pointer_expression "*pbVar21" * identifier) = (binary_expression "*pbVar21 ^ bVar1" (pointer_expression "*pbVar21" * identifier) ^ identifier)) ;) (expression_statement "pbVar21 = pbVar22;" (assignment_expression "pbVar21 = pbVar22" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar17 + (int)puVar10 != pbVar22)" ( (binary_expression "pbVar17 + (int)puVar10 != pbVar22" (binary_expression "pbVar17 + (int)puVar10" identifier + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) })) (expression_statement "pbVar17 = puVar10 + (int)pbVar17;" (assignment_expression "pbVar17 = puVar10 + (int)pbVar17" identifier = (binary_expression "puVar10 + (int)pbVar17" identifier + (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar8 = puVar8 + -(int)puVar10;" (assignment_expression "puVar8 = puVar8 + -(int)puVar10" identifier = (binary_expression "puVar8 + -(int)puVar10" identifier + (unary_expression "-(int)puVar10" - (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if ((int)puVar8 < 1) goto LAB_0003e530;" if (parenthesized_expression "((int)puVar8 < 1)" ( (binary_expression "(int)puVar8 < 1" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0003e530;" goto statement_identifier ;)) (expression_statement "puVar9 = (undefined *)puVar13[5];" (assignment_expression "puVar9 = (undefined *)puVar13[5]" identifier = (cast_expression "(undefined *)puVar13[5]" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (if_statement "if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }" if (parenthesized_expression "((int)puVar8 < (int)puVar9)" ( (binary_expression "(int)puVar8 < (int)puVar9" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          puVar10 = puVar8;\n        }" { (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) })) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)puVar9 < 0x41)" ( (binary_expression "(int)puVar9 < 0x41" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) ;) })) (expression_statement "pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);" (assignment_expression "pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" identifier = (cast_expression "(byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" ( (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x7480" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" * (cast_expression "(int *)(pcVar38 + 0x2bc88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2bc88)" ( (binary_expression "pcVar38 + 0x2bc88" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);" (assignment_expression "puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" identifier = (cast_expression "(undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" ( (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x748c" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" * (cast_expression "(int *)(pcVar38 + 0x2bc88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2bc88)" ( (binary_expression "pcVar38 + 0x2bc88" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);" (call_expression "(**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550)" (parenthesized_expression "(**(code **)(pcVar38 + 0x2c098))" ( (pointer_expression "**(code **)(pcVar38 + 0x2c098)" * (pointer_expression "*(code **)(pcVar38 + 0x2c098)" * (cast_expression "(code **)(pcVar38 + 0x2c098)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x2c098)" ( (binary_expression "pcVar38 + 0x2c098" identifier + number_literal) ))))) )) (argument_list "(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550)" ( identifier , identifier , number_literal , (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x7550" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" * (cast_expression "(int *)(pcVar38 + 0x2bc88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2bc88)" ( (binary_expression "pcVar38 + 0x2bc88" identifier + number_literal) )))) + number_literal) ))) ;) })) (labeled_statement "LAB_0003e530:\n  pcVar6 = (char *)*piVar7;" statement_identifier : (expression_statement "pcVar6 = (char *)*piVar7;" (assignment_expression "pcVar6 = (char *)*piVar7" identifier = (cast_expression "(char *)*piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;)) (if_statement "if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }" if (parenthesized_expression "(pcStack_b4 == pcVar6)" ( (binary_expression "pcStack_b4 == pcVar6" identifier == identifier) )) (compound_statement "{\n    return pcVar6;\n  }" { (return_statement "return pcVar6;" return identifier ;) })) (expression_statement "pcVar38 = *(code **)(pcVar38 + 0x2c194);" (assignment_expression "pcVar38 = *(code **)(pcVar38 + 0x2c194)" identifier = (pointer_expression "*(code **)(pcVar38 + 0x2c194)" * (cast_expression "(code **)(pcVar38 + 0x2c194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x2c194)" ( (binary_expression "pcVar38 + 0x2c194" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar38)();" (call_expression "(*pcVar38)()" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = bignum_bitcount(puVar15[3]);" (assignment_expression "iVar5 = bignum_bitcount(puVar15[3])" identifier = (call_expression "bignum_bitcount(puVar15[3])" identifier (argument_list "(puVar15[3])" ( (subscript_expression "puVar15[3]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" { (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar26 = iVar25 >> 3;" (assignment_expression "iVar26 = iVar25 >> 3" identifier = (binary_expression "iVar25 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar5 = bignum_bitcount(puVar15[2]);" (assignment_expression "iVar5 = bignum_bitcount(puVar15[2])" identifier = (call_expression "bignum_bitcount(puVar15[2])" identifier (argument_list "(puVar15[2])" ( (subscript_expression "puVar15[2]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar33 = iVar5 + 8;" (assignment_expression "iVar33 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) (if_statement "if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }" if (parenthesized_expression "(iVar33 < 0)" ( (binary_expression "iVar33 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar33 = iVar5 + 0xf;\n  }" { (expression_statement "iVar33 = iVar5 + 0xf;" (assignment_expression "iVar33 = iVar5 + 0xf" identifier = (binary_expression "iVar5 + 0xf" identifier + number_literal)) ;) })) (expression_statement "iVar31 = iVar33 >> 3;" (assignment_expression "iVar31 = iVar33 >> 3" identifier = (binary_expression "iVar33 >> 3" identifier >> number_literal)) ;) (expression_statement "iVar27 = iVar26 + 0x13 + iVar31;" (assignment_expression "iVar27 = iVar26 + 0x13 + iVar31" identifier = (binary_expression "iVar26 + 0x13 + iVar31" (binary_expression "iVar26 + 0x13" identifier + number_literal) + identifier)) ;) (expression_statement "iVar5 = iVar26 + -1;" (assignment_expression "iVar5 = iVar26 + -1" identifier = (binary_expression "iVar26 + -1" identifier + number_literal)) ;) (expression_statement "pcVar35 = (char *)safemalloc(iVar27,1);" (assignment_expression "pcVar35 = (char *)safemalloc(iVar27,1)" identifier = (cast_expression "(char *)safemalloc(iVar27,1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(iVar27,1)" identifier (argument_list "(iVar27,1)" ( identifier , number_literal ))))) ;) (expression_statement "pcVar35[3] = '\a';" (assignment_expression "pcVar35[3] = '\a'" (subscript_expression "pcVar35[3]" identifier [ number_literal ]) = (char_literal "'\a'" ' escape_sequence ')) ;) (expression_statement "*pcVar35 = '\0';" (assignment_expression "*pcVar35 = '\0'" (pointer_expression "*pcVar35" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar29 = *(int *)(pcVar38 + 0x2baec);" (assignment_expression "iVar29 = *(int *)(pcVar38 + 0x2baec)" identifier = (pointer_expression "*(int *)(pcVar38 + 0x2baec)" * (cast_expression "(int *)(pcVar38 + 0x2baec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2baec)" ( (binary_expression "pcVar38 + 0x2baec" identifier + number_literal) ))))) ;) (expression_statement "pcVar35[1] = '\0';" (assignment_expression "pcVar35[1] = '\0'" (subscript_expression "pcVar35[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar36 = pcVar35 + 0xf;" (assignment_expression "pcVar36 = pcVar35 + 0xf" identifier = (binary_expression "pcVar35 + 0xf" identifier + number_literal)) ;) (expression_statement "pcVar35[2] = '\0';" (assignment_expression "pcVar35[2] = '\0'" (subscript_expression "pcVar35[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar23 = *(uint *)(iVar29 + -0x1ac0);" (assignment_expression "uVar23 = *(uint *)(iVar29 + -0x1ac0)" identifier = (pointer_expression "*(uint *)(iVar29 + -0x1ac0)" * (cast_expression "(uint *)(iVar29 + -0x1ac0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + -0x1ac0)" ( (binary_expression "iVar29 + -0x1ac0" identifier + number_literal) ))))) ;) (expression_statement "cVar12 = *(char *)(iVar29 + -0x1abc);" (assignment_expression "cVar12 = *(char *)(iVar29 + -0x1abc)" identifier = (pointer_expression "*(char *)(iVar29 + -0x1abc)" * (cast_expression "(char *)(iVar29 + -0x1abc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + -0x1abc)" ( (binary_expression "iVar29 + -0x1abc" identifier + number_literal) ))))) ;) (expression_statement "cVar2 = *(char *)(iVar29 + -0x1abb);" (assignment_expression "cVar2 = *(char *)(iVar29 + -0x1abb)" identifier = (pointer_expression "*(char *)(iVar29 + -0x1abb)" * (cast_expression "(char *)(iVar29 + -0x1abb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + -0x1abb)" ( (binary_expression "iVar29 + -0x1abb" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *(char *)(iVar29 + -0x1aba);" (assignment_expression "cVar3 = *(char *)(iVar29 + -0x1aba)" identifier = (pointer_expression "*(char *)(iVar29 + -0x1aba)" * (cast_expression "(char *)(iVar29 + -0x1aba)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + -0x1aba)" ( (binary_expression "iVar29 + -0x1aba" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = pcVar35 + 4;" (assignment_expression "pcVar6 = pcVar35 + 4" identifier = (binary_expression "pcVar35 + 4" identifier + number_literal)) ;) (expression_statement "uVar4 = (uint)pcVar6 & 3;" (assignment_expression "uVar4 = (uint)pcVar6 & 3" identifier = (binary_expression "(uint)pcVar6 & 3" (cast_expression "(uint)pcVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;" (assignment_expression "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" * (cast_expression "(uint *)(pcVar6 + -uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + -uVar4)" ( (binary_expression "pcVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) = (binary_expression "*(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8" (binary_expression "*(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" * (cast_expression "(uint *)(pcVar6 + -uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + -uVar4)" ( (binary_expression "pcVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) & (binary_expression "-1 << (4 - uVar4) * 8" number_literal << (binary_expression "(4 - uVar4) * 8" (parenthesized_expression "(4 - uVar4)" ( (binary_expression "4 - uVar4" number_literal - identifier) )) * number_literal))) | (binary_expression "uVar23 >> uVar4 * 8" identifier >> (binary_expression "uVar4 * 8" identifier * number_literal)))) ;) (expression_statement "pcVar6 = pcVar35 + 7;" (assignment_expression "pcVar6 = pcVar35 + 7" identifier = (binary_expression "pcVar35 + 7" identifier + number_literal)) ;) (expression_statement "uVar4 = (uint)pcVar6 & 3;" (assignment_expression "uVar4 = (uint)pcVar6 & 3" identifier = (binary_expression "(uint)pcVar6 & 3" (cast_expression "(uint)pcVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;" (assignment_expression "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" * (cast_expression "(uint *)(pcVar6 + -uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + -uVar4)" ( (binary_expression "pcVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) = (binary_expression "*(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8" (binary_expression "*(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" * (cast_expression "(uint *)(pcVar6 + -uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + -uVar4)" ( (binary_expression "pcVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) & (binary_expression "0xffffffffU >> (uVar4 + 1) * 8" number_literal >> (binary_expression "(uVar4 + 1) * 8" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar23 << (3 - uVar4) * 8" identifier << (binary_expression "(3 - uVar4) * 8" (parenthesized_expression "(3 - uVar4)" ( (binary_expression "3 - uVar4" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "pcVar35[8] = cVar12;" (assignment_expression "pcVar35[8] = cVar12" (subscript_expression "pcVar35[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar35[9] = cVar2;" (assignment_expression "pcVar35[9] = cVar2" (subscript_expression "pcVar35[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar35[10] = cVar3;" (assignment_expression "pcVar35[10] = cVar3" (subscript_expression "pcVar35[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar35[0xb] = (char)(iVar25 >> 0x1b);" (assignment_expression "pcVar35[0xb] = (char)(iVar25 >> 0x1b)" (subscript_expression "pcVar35[0xb]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0x1b)" ( (binary_expression "iVar25 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar35[0xc] = (char)(iVar25 >> 0x13);" (assignment_expression "pcVar35[0xc] = (char)(iVar25 >> 0x13)" (subscript_expression "pcVar35[0xc]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0x13)" ( (binary_expression "iVar25 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar35[0xd] = (char)(iVar25 >> 0xb);" (assignment_expression "pcVar35[0xd] = (char)(iVar25 >> 0xb)" (subscript_expression "pcVar35[0xd]" identifier [ number_literal ]) = (cast_expression "(char)(iVar25 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar25 >> 0xb)" ( (binary_expression "iVar25 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "pcVar35[0xe] = (char)iVar26;" (assignment_expression "pcVar35[0xe] = (char)iVar26" (subscript_expression "pcVar35[0xe]" identifier [ number_literal ]) = (cast_expression "(char)iVar26" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar6 = pcVar36;" (assignment_expression "pcVar6 = pcVar36" identifier = identifier) ;) (if_statement "if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }" { (do_statement "do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);" do (compound_statement "{\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    }" { (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(puVar15[3],iVar5);" (assignment_expression "cVar12 = bignum_byte(puVar15[3],iVar5)" identifier = (call_expression "bignum_byte(puVar15[3],iVar5)" identifier (argument_list "(puVar15[3],iVar5)" ( (subscript_expression "puVar15[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" * identifier) = identifier) ;) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" identifier = identifier) ;) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar25 != -1)" ( (binary_expression "iVar25 != -1" identifier != number_literal) )) ;) (expression_statement "pcVar36 = pcVar36 + iVar26;" (assignment_expression "pcVar36 = pcVar36 + iVar26" identifier = (binary_expression "pcVar36 + iVar26" identifier + identifier)) ;) })) (expression_statement "pcVar36[3] = (char)iVar31;" (assignment_expression "pcVar36[3] = (char)iVar31" (subscript_expression "pcVar36[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar31" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*pcVar36 = (char)(iVar33 >> 0x1b);" (assignment_expression "*pcVar36 = (char)(iVar33 >> 0x1b)" (pointer_expression "*pcVar36" * identifier) = (cast_expression "(char)(iVar33 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar33 >> 0x1b)" ( (binary_expression "iVar33 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "pcVar36[1] = (char)(iVar33 >> 0x13);" (assignment_expression "pcVar36[1] = (char)(iVar33 >> 0x13)" (subscript_expression "pcVar36[1]" identifier [ number_literal ]) = (cast_expression "(char)(iVar33 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar33 >> 0x13)" ( (binary_expression "iVar33 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "pcVar34 = pcVar36 + 4;" (assignment_expression "pcVar34 = pcVar36 + 4" identifier = (binary_expression "pcVar36 + 4" identifier + number_literal)) ;) (expression_statement "pcVar36[2] = (char)(iVar33 >> 0xb);" (assignment_expression "pcVar36[2] = (char)(iVar33 >> 0xb)" (subscript_expression "pcVar36[2]" identifier [ number_literal ]) = (cast_expression "(char)(iVar33 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar33 >> 0xb)" ( (binary_expression "iVar33 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "iVar5 = iVar31 + -1;" (assignment_expression "iVar5 = iVar31 + -1" identifier = (binary_expression "iVar31 + -1" identifier + number_literal)) ;) (expression_statement "pcVar6 = pcVar34;" (assignment_expression "pcVar6 = pcVar34" identifier = identifier) ;) (if_statement "if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }" if (parenthesized_expression "(iVar31 != 0)" ( (binary_expression "iVar31 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }" { (do_statement "do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);" do (compound_statement "{\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    }" { (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "cVar12 = bignum_byte(puVar15[2],iVar5);" (assignment_expression "cVar12 = bignum_byte(puVar15[2],iVar5)" identifier = (call_expression "bignum_byte(puVar15[2],iVar5)" identifier (argument_list "(puVar15[2],iVar5)" ( (subscript_expression "puVar15[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" * identifier) = identifier) ;) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" identifier = identifier) ;) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar25 != -1)" ( (binary_expression "iVar25 != -1" identifier != number_literal) )) ;) (expression_statement "pcVar34 = pcVar34 + iVar31;" (assignment_expression "pcVar34 = pcVar34 + iVar31" identifier = (binary_expression "pcVar34 + iVar31" identifier + identifier)) ;) })) (if_statement "if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }" if (parenthesized_expression "(pcVar34 != pcVar35 + iVar27)" ( (binary_expression "pcVar34 != pcVar35 + iVar27" identifier != (binary_expression "pcVar35 + iVar27" identifier + identifier)) )) (compound_statement "{\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }" { (expression_statement "piVar19 = (int *)&DAT_00000288;" (assignment_expression "piVar19 = (int *)&DAT_00000288" identifier = (cast_expression "(int *)&DAT_00000288" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000288" & identifier))) ;) (expression_statement "piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);" (assignment_expression "piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570)" identifier = (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x7570)" ( (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x7570" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" * (cast_expression "(int *)(pcVar38 + 0x2baec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2baec)" ( (binary_expression "pcVar38 + 0x2baec" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);" (assignment_expression "piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480)" identifier = (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x7480)" ( (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x7480" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" * (cast_expression "(int *)(pcVar38 + 0x2baec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2baec)" ( (binary_expression "pcVar38 + 0x2baec" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);" (assignment_expression "piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c)" identifier = (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x311c)" ( (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x311c" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" * (cast_expression "(int *)(pcVar38 + 0x2baec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x2baec)" ( (binary_expression "pcVar38 + 0x2baec" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar38 + 0x2befc))();" (call_expression "(**(code **)(pcVar38 + 0x2befc))()" (parenthesized_expression "(**(code **)(pcVar38 + 0x2befc))" ( (pointer_expression "**(code **)(pcVar38 + 0x2befc)" * (pointer_expression "*(code **)(pcVar38 + 0x2befc)" * (cast_expression "(code **)(pcVar38 + 0x2befc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x2befc)" ( (binary_expression "pcVar38 + 0x2befc" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*piVar19 = 0;" (assignment_expression "*piVar19 = 0" (pointer_expression "*piVar19" * identifier) = number_literal) ;) (if_statement "if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }" if (parenthesized_expression "((char *)(uint)(iVar5 < 4) == (char *)0x0)" ( (binary_expression "(char *)(uint)(iVar5 < 4) == (char *)0x0" (cast_expression "(char *)(uint)(iVar5 < 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar5 < 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 < 4)" ( (binary_expression "iVar5 < 4" identifier < number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }" { (expression_statement "pcVar6 = (char *)toint(*(undefined4 *)*piVar14);" (assignment_expression "pcVar6 = (char *)toint(*(undefined4 *)*piVar14)" identifier = (cast_expression "(char *)toint(*(undefined4 *)*piVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "toint(*(undefined4 *)*piVar14)" identifier (argument_list "(*(undefined4 *)*piVar14)" ( (pointer_expression "*(undefined4 *)*piVar14" * (cast_expression "(undefined4 *)*piVar14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) ))))) ;) (expression_statement "*piVar24 = (int)pcVar6;" (assignment_expression "*piVar24 = (int)pcVar6" (pointer_expression "*piVar24" * identifier) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }" if (parenthesized_expression "(-1 < (int)pcVar6)" ( (binary_expression "-1 < (int)pcVar6" number_literal < (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }" { (expression_statement "pcVar6 = (char *)(*piVar7 + -4);" (assignment_expression "pcVar6 = (char *)(*piVar7 + -4)" identifier = (cast_expression "(char *)(*piVar7 + -4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + -4)" ( (binary_expression "*piVar7 + -4" (pointer_expression "*piVar7" * identifier) + number_literal) )))) ;) (expression_statement "iVar5 = *piVar14 + 4;" (assignment_expression "iVar5 = *piVar14 + 4" identifier = (binary_expression "*piVar14 + 4" (pointer_expression "*piVar14" * identifier) + number_literal)) ;) (expression_statement "*piVar7 = (int)pcVar6;" (assignment_expression "*piVar7 = (int)pcVar6" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar14 = iVar5;" (assignment_expression "*piVar14 = iVar5" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "iVar25 = *piVar24;" (assignment_expression "iVar25 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (if_statement "if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }" if (parenthesized_expression "(iVar25 <= (int)pcVar6)" ( (binary_expression "iVar25 <= (int)pcVar6" identifier <= (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }" { (expression_statement "*piVar19 = iVar5;" (assignment_expression "*piVar19 = iVar5" (pointer_expression "*piVar19" * identifier) = identifier) ;) (expression_statement "pcVar6 = pcVar6 + -iVar25;" (assignment_expression "pcVar6 = pcVar6 + -iVar25" identifier = (binary_expression "pcVar6 + -iVar25" identifier + (unary_expression "-iVar25" - identifier))) ;) (expression_statement "*piVar14 = iVar5 + iVar25;" (assignment_expression "*piVar14 = iVar5 + iVar25" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar5 + iVar25" identifier + identifier)) ;) (expression_statement "*piVar7 = (int)pcVar6;" (assignment_expression "*piVar7 = (int)pcVar6" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) })) (return_statement "return pcVar6;" return identifier ;) })) (return_statement "return (char *)(uint)(iVar5 < 4);" return (cast_expression "(char *)(uint)(iVar5 < 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar5 < 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 < 4)" ( (binary_expression "iVar5 < 4" identifier < number_literal) )))) ;) })) (expression_statement "*(int *)pbVar17 = iVar27;" (assignment_expression "*(int *)pbVar17 = iVar27" (pointer_expression "*(int *)pbVar17" * (cast_expression "(int *)pbVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (return_statement "return pcVar35;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (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 (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (field_expression IDENT . field_identifier) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (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 = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (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 = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (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 = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + LIT) + IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (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 = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (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 = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (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 = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (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 = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) ^ IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (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 = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (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 (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - IDENT)) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - IDENT)) )))) & (binary_expression LIT << (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT))) | (binary_expression IDENT >> (binary_expression IDENT * LIT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - IDENT)) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - IDENT)) )))) & (binary_expression LIT >> (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) | (binary_expression IDENT << (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) })) (return_statement return IDENT ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "char * FUN_0003dff0(undefined4 param_1,undefined4 param_2)\n\n{\n  byte bVar1;\n  char cVar2;\n  char cVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 uVar11;\n  char *pcVar6;\n  char cVar12;\n  int *piVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined4 *puVar13;\n  int *piVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  uint uVar23;\n  int *piVar24;\n  int iVar25;\n  int iVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int iVar30;\n  int iVar31;\n  char *pcVar32;\n  int iVar33;\n  char *pcVar34;\n  char *pcVar35;\n  char *pcVar36;\n  char *pcVar37;\n  code *pcVar38;\n  code *pcVar39;\n  int iStack_f8;\n  byte abStack_f4 [64];\n  char *pcStack_b4;\n  int *piStack_b0;\n  int iStack_ac;\n  int iStack_a8;\n  char *pcStack_a4;\n  char *pcStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  char *pcStack_94;\n  int iStack_90;\n  code *pcStack_8c;\n  undefined *local_78;\n  char *local_70;\n  char *local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined *local_5c;\n  int *local_58;\n  int local_54;\n  int local_28;\n  char *local_24;\n  \n  puVar10 = PTR___stack_chk_guard_0006a594;\n  local_24 = *(char **)PTR___stack_chk_guard_0006a594;\n  iVar5 = bignum_bitcount(param_2);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  local_28 = iVar25 >> 3;\n  SHA512_Bytes(param_1,&local_28,4);\n  iVar26 = (iVar25 >> 3) + -1;\n  iVar25 = iVar26;\n  if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }\n  puVar15 = (undefined4 *)&DAT_00000004;\n  piVar14 = &local_28;\n  smemclr();\n  pcVar6 = *(char **)puVar10;\n  if (local_24 == pcVar6) {\n    return pcVar6;\n  }\n  puVar8 = PTR___stack_chk_fail_0006a574;\n  (*(code *)PTR___stack_chk_fail_0006a574)();\n  local_78 = puVar8 + 0x33f18;\n  local_5c = puVar10;\n  local_68 = iVar26;\n  local_64 = param_1;\n  local_60 = param_2;\n  local_58 = &local_28;\n  local_54 = iVar5;\n  iVar5 = bignum_bitcount(piVar14[4]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar33 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(piVar14[5]);\n  iVar26 = iVar5 + 8;\n  if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }\n  iVar31 = iVar26 >> 3;\n  iVar5 = bignum_bitcount(piVar14[6]);\n  iVar29 = iVar5 + 8;\n  if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }\n  iVar30 = iVar29 >> 3;\n  iVar5 = bignum_bitcount(piVar14[7]);\n  iVar27 = iVar5 + 8;\n  if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }\n  iVar28 = iVar27 >> 3;\n  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);\n  iVar5 = iVar33 + -1;\n  local_70 = pcVar35 + iVar28;\n  local_6c = (char *)safemalloc(local_70,1);\n  *local_6c = (char)(iVar25 >> 0x1b);\n  local_6c[1] = (char)(iVar25 >> 0x13);\n  pcVar36 = local_6c + 4;\n  local_6c[2] = (char)(iVar25 >> 0xb);\n  local_6c[3] = (char)iVar33;\n  pcVar6 = pcVar36;\n  if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar26 >> 0x1b);\n  pcVar36[1] = (char)(iVar26 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar26 >> 0xb);\n  pcVar6 = (char *)(iVar31 + -1);\n  pcVar36 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }\n  pcVar34[3] = (char)iVar30;\n  *pcVar34 = (char)(iVar29 >> 0x1b);\n  pcVar34[1] = (char)(iVar29 >> 0x13);\n  pcVar37 = pcVar34 + 4;\n  pcVar34[2] = (char)(iVar29 >> 0xb);\n  pcVar36 = (char *)(iVar30 + -1);\n  pcVar34 = pcVar37;\n  if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }\n  pcVar37[3] = (char)iVar28;\n  *pcVar37 = (char)(iVar27 >> 0x1b);\n  pcVar37[1] = (char)(iVar27 >> 0x13);\n  pcVar34 = pcVar37 + 4;\n  pcVar37[2] = (char)(iVar27 >> 0xb);\n  iStack_a8 = iVar28 + -1;\n  if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }\n  if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }\n  uVar18 = 0x2b0;\n  pcVar38 = *(code **)(local_78 + -0x7bb8);\n  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);\n  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);\n  pcVar39 = FUN_0003e3e0;\n  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);\n  (*pcVar38)();\n  piVar7 = *(int **)(pcVar38 + 0x2c1b4);\n  pcStack_b4 = (char *)*piVar7;\n  puVar15 = puVar13;\n  pbVar17 = pbVar16;\n  piStack_b0 = piVar14;\n  iStack_ac = iVar28;\n  pcStack_a4 = pcVar36;\n  pcStack_a0 = pcVar34;\n  pcStack_9c = pcVar35;\n  pcStack_98 = pcVar37;\n  pcStack_94 = pcVar6;\n  iStack_90 = iVar5;\n  pcStack_8c = pcVar39;\n  if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }\nLAB_0003e530:\n  pcVar6 = (char *)*piVar7;\n  if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }\n  pcVar38 = *(code **)(pcVar38 + 0x2c194);\n  (*pcVar38)();\n  iVar5 = bignum_bitcount(puVar15[3]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar26 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(puVar15[2]);\n  iVar33 = iVar5 + 8;\n  if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }\n  iVar31 = iVar33 >> 3;\n  iVar27 = iVar26 + 0x13 + iVar31;\n  iVar5 = iVar26 + -1;\n  pcVar35 = (char *)safemalloc(iVar27,1);\n  pcVar35[3] = '\a';\n  *pcVar35 = '\0';\n  iVar29 = *(int *)(pcVar38 + 0x2baec);\n  pcVar35[1] = '\0';\n  pcVar36 = pcVar35 + 0xf;\n  pcVar35[2] = '\0';\n  uVar23 = *(uint *)(iVar29 + -0x1ac0);\n  cVar12 = *(char *)(iVar29 + -0x1abc);\n  cVar2 = *(char *)(iVar29 + -0x1abb);\n  cVar3 = *(char *)(iVar29 + -0x1aba);\n  pcVar6 = pcVar35 + 4;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;\n  pcVar6 = pcVar35 + 7;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;\n  pcVar35[8] = cVar12;\n  pcVar35[9] = cVar2;\n  pcVar35[10] = cVar3;\n  pcVar35[0xb] = (char)(iVar25 >> 0x1b);\n  pcVar35[0xc] = (char)(iVar25 >> 0x13);\n  pcVar35[0xd] = (char)(iVar25 >> 0xb);\n  pcVar35[0xe] = (char)iVar26;\n  pcVar6 = pcVar36;\n  if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar33 >> 0x1b);\n  pcVar36[1] = (char)(iVar33 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar33 >> 0xb);\n  iVar5 = iVar31 + -1;\n  pcVar6 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }\n  if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }\n  *(int *)pbVar17 = iVar27;\n  return pcVar35;\n}" (primitive_type "char") (pointer_declarator "* FUN_0003dff0(undefined4 param_1,undefined4 param_2)" (* "*") (function_declarator "FUN_0003dff0(undefined4 param_1,undefined4 param_2)" (identifier "FUN_0003dff0") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")")))) (compound_statement "{\n  byte bVar1;\n  char cVar2;\n  char cVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 uVar11;\n  char *pcVar6;\n  char cVar12;\n  int *piVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined4 *puVar13;\n  int *piVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  uint uVar23;\n  int *piVar24;\n  int iVar25;\n  int iVar26;\n  int iVar27;\n  int iVar28;\n  int iVar29;\n  int iVar30;\n  int iVar31;\n  char *pcVar32;\n  int iVar33;\n  char *pcVar34;\n  char *pcVar35;\n  char *pcVar36;\n  char *pcVar37;\n  code *pcVar38;\n  code *pcVar39;\n  int iStack_f8;\n  byte abStack_f4 [64];\n  char *pcStack_b4;\n  int *piStack_b0;\n  int iStack_ac;\n  int iStack_a8;\n  char *pcStack_a4;\n  char *pcStack_a0;\n  char *pcStack_9c;\n  char *pcStack_98;\n  char *pcStack_94;\n  int iStack_90;\n  code *pcStack_8c;\n  undefined *local_78;\n  char *local_70;\n  char *local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined *local_5c;\n  int *local_58;\n  int local_54;\n  int local_28;\n  char *local_24;\n  \n  puVar10 = PTR___stack_chk_guard_0006a594;\n  local_24 = *(char **)PTR___stack_chk_guard_0006a594;\n  iVar5 = bignum_bitcount(param_2);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  local_28 = iVar25 >> 3;\n  SHA512_Bytes(param_1,&local_28,4);\n  iVar26 = (iVar25 >> 3) + -1;\n  iVar25 = iVar26;\n  if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }\n  puVar15 = (undefined4 *)&DAT_00000004;\n  piVar14 = &local_28;\n  smemclr();\n  pcVar6 = *(char **)puVar10;\n  if (local_24 == pcVar6) {\n    return pcVar6;\n  }\n  puVar8 = PTR___stack_chk_fail_0006a574;\n  (*(code *)PTR___stack_chk_fail_0006a574)();\n  local_78 = puVar8 + 0x33f18;\n  local_5c = puVar10;\n  local_68 = iVar26;\n  local_64 = param_1;\n  local_60 = param_2;\n  local_58 = &local_28;\n  local_54 = iVar5;\n  iVar5 = bignum_bitcount(piVar14[4]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar33 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(piVar14[5]);\n  iVar26 = iVar5 + 8;\n  if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }\n  iVar31 = iVar26 >> 3;\n  iVar5 = bignum_bitcount(piVar14[6]);\n  iVar29 = iVar5 + 8;\n  if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }\n  iVar30 = iVar29 >> 3;\n  iVar5 = bignum_bitcount(piVar14[7]);\n  iVar27 = iVar5 + 8;\n  if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }\n  iVar28 = iVar27 >> 3;\n  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);\n  iVar5 = iVar33 + -1;\n  local_70 = pcVar35 + iVar28;\n  local_6c = (char *)safemalloc(local_70,1);\n  *local_6c = (char)(iVar25 >> 0x1b);\n  local_6c[1] = (char)(iVar25 >> 0x13);\n  pcVar36 = local_6c + 4;\n  local_6c[2] = (char)(iVar25 >> 0xb);\n  local_6c[3] = (char)iVar33;\n  pcVar6 = pcVar36;\n  if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar26 >> 0x1b);\n  pcVar36[1] = (char)(iVar26 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar26 >> 0xb);\n  pcVar6 = (char *)(iVar31 + -1);\n  pcVar36 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }\n  pcVar34[3] = (char)iVar30;\n  *pcVar34 = (char)(iVar29 >> 0x1b);\n  pcVar34[1] = (char)(iVar29 >> 0x13);\n  pcVar37 = pcVar34 + 4;\n  pcVar34[2] = (char)(iVar29 >> 0xb);\n  pcVar36 = (char *)(iVar30 + -1);\n  pcVar34 = pcVar37;\n  if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }\n  pcVar37[3] = (char)iVar28;\n  *pcVar37 = (char)(iVar27 >> 0x1b);\n  pcVar37[1] = (char)(iVar27 >> 0x13);\n  pcVar34 = pcVar37 + 4;\n  pcVar37[2] = (char)(iVar27 >> 0xb);\n  iStack_a8 = iVar28 + -1;\n  if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }\n  if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }\n  uVar18 = 0x2b0;\n  pcVar38 = *(code **)(local_78 + -0x7bb8);\n  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);\n  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);\n  pcVar39 = FUN_0003e3e0;\n  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);\n  (*pcVar38)();\n  piVar7 = *(int **)(pcVar38 + 0x2c1b4);\n  pcStack_b4 = (char *)*piVar7;\n  puVar15 = puVar13;\n  pbVar17 = pbVar16;\n  piStack_b0 = piVar14;\n  iStack_ac = iVar28;\n  pcStack_a4 = pcVar36;\n  pcStack_a0 = pcVar34;\n  pcStack_9c = pcVar35;\n  pcStack_98 = pcVar37;\n  pcStack_94 = pcVar6;\n  iStack_90 = iVar5;\n  pcStack_8c = pcVar39;\n  if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }\nLAB_0003e530:\n  pcVar6 = (char *)*piVar7;\n  if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }\n  pcVar38 = *(code **)(pcVar38 + 0x2c194);\n  (*pcVar38)();\n  iVar5 = bignum_bitcount(puVar15[3]);\n  iVar25 = iVar5 + 8;\n  if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }\n  iVar26 = iVar25 >> 3;\n  iVar5 = bignum_bitcount(puVar15[2]);\n  iVar33 = iVar5 + 8;\n  if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }\n  iVar31 = iVar33 >> 3;\n  iVar27 = iVar26 + 0x13 + iVar31;\n  iVar5 = iVar26 + -1;\n  pcVar35 = (char *)safemalloc(iVar27,1);\n  pcVar35[3] = '\a';\n  *pcVar35 = '\0';\n  iVar29 = *(int *)(pcVar38 + 0x2baec);\n  pcVar35[1] = '\0';\n  pcVar36 = pcVar35 + 0xf;\n  pcVar35[2] = '\0';\n  uVar23 = *(uint *)(iVar29 + -0x1ac0);\n  cVar12 = *(char *)(iVar29 + -0x1abc);\n  cVar2 = *(char *)(iVar29 + -0x1abb);\n  cVar3 = *(char *)(iVar29 + -0x1aba);\n  pcVar6 = pcVar35 + 4;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;\n  pcVar6 = pcVar35 + 7;\n  uVar4 = (uint)pcVar6 & 3;\n  *(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;\n  pcVar35[8] = cVar12;\n  pcVar35[9] = cVar2;\n  pcVar35[10] = cVar3;\n  pcVar35[0xb] = (char)(iVar25 >> 0x1b);\n  pcVar35[0xc] = (char)(iVar25 >> 0x13);\n  pcVar35[0xd] = (char)(iVar25 >> 0xb);\n  pcVar35[0xe] = (char)iVar26;\n  pcVar6 = pcVar36;\n  if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }\n  pcVar36[3] = (char)iVar31;\n  *pcVar36 = (char)(iVar33 >> 0x1b);\n  pcVar36[1] = (char)(iVar33 >> 0x13);\n  pcVar34 = pcVar36 + 4;\n  pcVar36[2] = (char)(iVar33 >> 0xb);\n  iVar5 = iVar31 + -1;\n  pcVar6 = pcVar34;\n  if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }\n  if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }\n  *(int *)pbVar17 = iVar27;\n  return pcVar35;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined1 uVar11;" (type_identifier "undefined1") (identifier "uVar11") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "char cVar12;" (primitive_type "char") (identifier "cVar12") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "undefined4 *puVar15;" (type_identifier "undefined4") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "byte *pbVar17;" (type_identifier "byte") (pointer_declarator "*pbVar17" (* "*") (identifier "pbVar17")) (; ";")) (declaration "undefined4 uVar18;" (type_identifier "undefined4") (identifier "uVar18") (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "byte *pbVar20;" (type_identifier "byte") (pointer_declarator "*pbVar20" (* "*") (identifier "pbVar20")) (; ";")) (declaration "byte *pbVar21;" (type_identifier "byte") (pointer_declarator "*pbVar21" (* "*") (identifier "pbVar21")) (; ";")) (declaration "byte *pbVar22;" (type_identifier "byte") (pointer_declarator "*pbVar22" (* "*") (identifier "pbVar22")) (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "int *piVar24;" (primitive_type "int") (pointer_declarator "*piVar24" (* "*") (identifier "piVar24")) (; ";")) (declaration "int iVar25;" (primitive_type "int") (identifier "iVar25") (; ";")) (declaration "int iVar26;" (primitive_type "int") (identifier "iVar26") (; ";")) (declaration "int iVar27;" (primitive_type "int") (identifier "iVar27") (; ";")) (declaration "int iVar28;" (primitive_type "int") (identifier "iVar28") (; ";")) (declaration "int iVar29;" (primitive_type "int") (identifier "iVar29") (; ";")) (declaration "int iVar30;" (primitive_type "int") (identifier "iVar30") (; ";")) (declaration "int iVar31;" (primitive_type "int") (identifier "iVar31") (; ";")) (declaration "char *pcVar32;" (primitive_type "char") (pointer_declarator "*pcVar32" (* "*") (identifier "pcVar32")) (; ";")) (declaration "int iVar33;" (primitive_type "int") (identifier "iVar33") (; ";")) (declaration "char *pcVar34;" (primitive_type "char") (pointer_declarator "*pcVar34" (* "*") (identifier "pcVar34")) (; ";")) (declaration "char *pcVar35;" (primitive_type "char") (pointer_declarator "*pcVar35" (* "*") (identifier "pcVar35")) (; ";")) (declaration "char *pcVar36;" (primitive_type "char") (pointer_declarator "*pcVar36" (* "*") (identifier "pcVar36")) (; ";")) (declaration "char *pcVar37;" (primitive_type "char") (pointer_declarator "*pcVar37" (* "*") (identifier "pcVar37")) (; ";")) (declaration "code *pcVar38;" (type_identifier "code") (pointer_declarator "*pcVar38" (* "*") (identifier "pcVar38")) (; ";")) (declaration "code *pcVar39;" (type_identifier "code") (pointer_declarator "*pcVar39" (* "*") (identifier "pcVar39")) (; ";")) (declaration "int iStack_f8;" (primitive_type "int") (identifier "iStack_f8") (; ";")) (declaration "byte abStack_f4 [64];" (type_identifier "byte") (array_declarator "abStack_f4 [64]" (identifier "abStack_f4") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "char *pcStack_b4;" (primitive_type "char") (pointer_declarator "*pcStack_b4" (* "*") (identifier "pcStack_b4")) (; ";")) (declaration "int *piStack_b0;" (primitive_type "int") (pointer_declarator "*piStack_b0" (* "*") (identifier "piStack_b0")) (; ";")) (declaration "int iStack_ac;" (primitive_type "int") (identifier "iStack_ac") (; ";")) (declaration "int iStack_a8;" (primitive_type "int") (identifier "iStack_a8") (; ";")) (declaration "char *pcStack_a4;" (primitive_type "char") (pointer_declarator "*pcStack_a4" (* "*") (identifier "pcStack_a4")) (; ";")) (declaration "char *pcStack_a0;" (primitive_type "char") (pointer_declarator "*pcStack_a0" (* "*") (identifier "pcStack_a0")) (; ";")) (declaration "char *pcStack_9c;" (primitive_type "char") (pointer_declarator "*pcStack_9c" (* "*") (identifier "pcStack_9c")) (; ";")) (declaration "char *pcStack_98;" (primitive_type "char") (pointer_declarator "*pcStack_98" (* "*") (identifier "pcStack_98")) (; ";")) (declaration "char *pcStack_94;" (primitive_type "char") (pointer_declarator "*pcStack_94" (* "*") (identifier "pcStack_94")) (; ";")) (declaration "int iStack_90;" (primitive_type "int") (identifier "iStack_90") (; ";")) (declaration "code *pcStack_8c;" (type_identifier "code") (pointer_declarator "*pcStack_8c" (* "*") (identifier "pcStack_8c")) (; ";")) (declaration "undefined *local_78;" (type_identifier "undefined") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "char *local_70;" (primitive_type "char") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "char *local_6c;" (primitive_type "char") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined *local_5c;" (type_identifier "undefined") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c")) (; ";")) (declaration "int *local_58;" (primitive_type "int") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "char *local_24;" (primitive_type "char") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (expression_statement "puVar10 = PTR___stack_chk_guard_0006a594;" (assignment_expression "puVar10 = PTR___stack_chk_guard_0006a594" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_guard_0006a594")) (; ";")) (expression_statement "local_24 = *(char **)PTR___stack_chk_guard_0006a594;" (assignment_expression "local_24 = *(char **)PTR___stack_chk_guard_0006a594" (identifier "local_24") (= "=") (pointer_expression "*(char **)PTR___stack_chk_guard_0006a594" (* "*") (cast_expression "(char **)PTR___stack_chk_guard_0006a594" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_0006a594")))) (; ";")) (expression_statement "iVar5 = bignum_bitcount(param_2);" (assignment_expression "iVar5 = bignum_bitcount(param_2)" (identifier "iVar5") (= "=") (call_expression "bignum_bitcount(param_2)" (identifier "bignum_bitcount") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" (identifier "iVar25") (= "=") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" (if "if") (parenthesized_expression "(iVar25 < 0)" (( "(") (binary_expression "iVar25 < 0" (identifier "iVar25") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" ({ "{") (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" (identifier "iVar25") (= "=") (binary_expression "iVar5 + 0xf" (identifier "iVar5") (+ "+") (number_literal "0xf"))) (; ";")) (} "}"))) (expression_statement "local_28 = iVar25 >> 3;" (assignment_expression "local_28 = iVar25 >> 3" (identifier "local_28") (= "=") (binary_expression "iVar25 >> 3" (identifier "iVar25") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "SHA512_Bytes(param_1,&local_28,4);" (call_expression "SHA512_Bytes(param_1,&local_28,4)" (identifier "SHA512_Bytes") (argument_list "(param_1,&local_28,4)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "iVar26 = (iVar25 >> 3) + -1;" (assignment_expression "iVar26 = (iVar25 >> 3) + -1" (identifier "iVar26") (= "=") (binary_expression "(iVar25 >> 3) + -1" (parenthesized_expression "(iVar25 >> 3)" (( "(") (binary_expression "iVar25 >> 3" (identifier "iVar25") (>> ">>") (number_literal "3")) () ")")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar25 = iVar26;" (assignment_expression "iVar25 = iVar26" (identifier "iVar25") (= "=") (identifier "iVar26")) (; ";")) (if_statement "if (-1 < iVar5) {\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }" (if "if") (parenthesized_expression "(-1 < iVar5)" (( "(") (binary_expression "-1 < iVar5" (number_literal "-1") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n    do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);\n  }" ({ "{") (do_statement "do {\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    } while (0 < iVar26);" (do "do") (compound_statement "{\n      iVar26 = iVar25;\n      uVar11 = bignum_byte(param_2,iVar26);\n      local_28 = CONCAT13(uVar11,local_28._1_3_);\n      SHA512_Bytes(param_1,&local_28,1);\n      iVar25 = iVar26 + -1;\n    }" ({ "{") (expression_statement "iVar26 = iVar25;" (assignment_expression "iVar26 = iVar25" (identifier "iVar26") (= "=") (identifier "iVar25")) (; ";")) (expression_statement "uVar11 = bignum_byte(param_2,iVar26);" (assignment_expression "uVar11 = bignum_byte(param_2,iVar26)" (identifier "uVar11") (= "=") (call_expression "bignum_byte(param_2,iVar26)" (identifier "bignum_byte") (argument_list "(param_2,iVar26)" (( "(") (identifier "param_2") (, ",") (identifier "iVar26") () ")")))) (; ";")) (expression_statement "local_28 = CONCAT13(uVar11,local_28._1_3_);" (assignment_expression "local_28 = CONCAT13(uVar11,local_28._1_3_)" (identifier "local_28") (= "=") (call_expression "CONCAT13(uVar11,local_28._1_3_)" (identifier "CONCAT13") (argument_list "(uVar11,local_28._1_3_)" (( "(") (identifier "uVar11") (, ",") (field_expression "local_28._1_3_" (identifier "local_28") (. ".") (field_identifier "_1_3_")) () ")")))) (; ";")) (expression_statement "SHA512_Bytes(param_1,&local_28,1);" (call_expression "SHA512_Bytes(param_1,&local_28,1)" (identifier "SHA512_Bytes") (argument_list "(param_1,&local_28,1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar25 = iVar26 + -1;" (assignment_expression "iVar25 = iVar26 + -1" (identifier "iVar25") (= "=") (binary_expression "iVar26 + -1" (identifier "iVar26") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < iVar26)" (( "(") (binary_expression "0 < iVar26" (number_literal "0") (< "<") (identifier "iVar26")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar15 = (undefined4 *)&DAT_00000004;" (assignment_expression "puVar15 = (undefined4 *)&DAT_00000004" (identifier "puVar15") (= "=") (cast_expression "(undefined4 *)&DAT_00000004" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000004" (& "&") (identifier "DAT_00000004")))) (; ";")) (expression_statement "piVar14 = &local_28;" (assignment_expression "piVar14 = &local_28" (identifier "piVar14") (= "=") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (; ";")) (expression_statement "smemclr();" (call_expression "smemclr()" (identifier "smemclr") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar6 = *(char **)puVar10;" (assignment_expression "pcVar6 = *(char **)puVar10" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)puVar10" (* "*") (cast_expression "(char **)puVar10" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar10")))) (; ";")) (if_statement "if (local_24 == pcVar6) {\n    return pcVar6;\n  }" (if "if") (parenthesized_expression "(local_24 == pcVar6)" (( "(") (binary_expression "local_24 == pcVar6" (identifier "local_24") (== "==") (identifier "pcVar6")) () ")")) (compound_statement "{\n    return pcVar6;\n  }" ({ "{") (return_statement "return pcVar6;" (return "return") (identifier "pcVar6") (; ";")) (} "}"))) (expression_statement "puVar8 = PTR___stack_chk_fail_0006a574;" (assignment_expression "puVar8 = PTR___stack_chk_fail_0006a574" (identifier "puVar8") (= "=") (identifier "PTR___stack_chk_fail_0006a574")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0006a574)();" (call_expression "(*(code *)PTR___stack_chk_fail_0006a574)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0006a574)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0006a574" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0006a574" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0006a574"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_78 = puVar8 + 0x33f18;" (assignment_expression "local_78 = puVar8 + 0x33f18" (identifier "local_78") (= "=") (binary_expression "puVar8 + 0x33f18" (identifier "puVar8") (+ "+") (number_literal "0x33f18"))) (; ";")) (expression_statement "local_5c = puVar10;" (assignment_expression "local_5c = puVar10" (identifier "local_5c") (= "=") (identifier "puVar10")) (; ";")) (expression_statement "local_68 = iVar26;" (assignment_expression "local_68 = iVar26" (identifier "local_68") (= "=") (identifier "iVar26")) (; ";")) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" (identifier "local_64") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_60 = param_2;" (assignment_expression "local_60 = param_2" (identifier "local_60") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_58 = &local_28;" (assignment_expression "local_58 = &local_28" (identifier "local_58") (= "=") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (; ";")) (expression_statement "local_54 = iVar5;" (assignment_expression "local_54 = iVar5" (identifier "local_54") (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar5 = bignum_bitcount(piVar14[4]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[4])" (identifier "iVar5") (= "=") (call_expression "bignum_bitcount(piVar14[4])" (identifier "bignum_bitcount") (argument_list "(piVar14[4])" (( "(") (subscript_expression "piVar14[4]" (identifier "piVar14") ([ "[") (number_literal "4") (] "]")) () ")")))) (; ";")) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" (identifier "iVar25") (= "=") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" (if "if") (parenthesized_expression "(iVar25 < 0)" (( "(") (binary_expression "iVar25 < 0" (identifier "iVar25") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" ({ "{") (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" (identifier "iVar25") (= "=") (binary_expression "iVar5 + 0xf" (identifier "iVar5") (+ "+") (number_literal "0xf"))) (; ";")) (} "}"))) (expression_statement "iVar33 = iVar25 >> 3;" (assignment_expression "iVar33 = iVar25 >> 3" (identifier "iVar33") (= "=") (binary_expression "iVar25 >> 3" (identifier "iVar25") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "iVar5 = bignum_bitcount(piVar14[5]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[5])" (identifier "iVar5") (= "=") (call_expression "bignum_bitcount(piVar14[5])" (identifier "bignum_bitcount") (argument_list "(piVar14[5])" (( "(") (subscript_expression "piVar14[5]" (identifier "piVar14") ([ "[") (number_literal "5") (] "]")) () ")")))) (; ";")) (expression_statement "iVar26 = iVar5 + 8;" (assignment_expression "iVar26 = iVar5 + 8" (identifier "iVar26") (= "=") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (iVar26 < 0) {\n    iVar26 = iVar5 + 0xf;\n  }" (if "if") (parenthesized_expression "(iVar26 < 0)" (( "(") (binary_expression "iVar26 < 0" (identifier "iVar26") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar26 = iVar5 + 0xf;\n  }" ({ "{") (expression_statement "iVar26 = iVar5 + 0xf;" (assignment_expression "iVar26 = iVar5 + 0xf" (identifier "iVar26") (= "=") (binary_expression "iVar5 + 0xf" (identifier "iVar5") (+ "+") (number_literal "0xf"))) (; ";")) (} "}"))) (expression_statement "iVar31 = iVar26 >> 3;" (assignment_expression "iVar31 = iVar26 >> 3" (identifier "iVar31") (= "=") (binary_expression "iVar26 >> 3" (identifier "iVar26") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "iVar5 = bignum_bitcount(piVar14[6]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[6])" (identifier "iVar5") (= "=") (call_expression "bignum_bitcount(piVar14[6])" (identifier "bignum_bitcount") (argument_list "(piVar14[6])" (( "(") (subscript_expression "piVar14[6]" (identifier "piVar14") ([ "[") (number_literal "6") (] "]")) () ")")))) (; ";")) (expression_statement "iVar29 = iVar5 + 8;" (assignment_expression "iVar29 = iVar5 + 8" (identifier "iVar29") (= "=") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (iVar29 < 0) {\n    iVar29 = iVar5 + 0xf;\n  }" (if "if") (parenthesized_expression "(iVar29 < 0)" (( "(") (binary_expression "iVar29 < 0" (identifier "iVar29") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar29 = iVar5 + 0xf;\n  }" ({ "{") (expression_statement "iVar29 = iVar5 + 0xf;" (assignment_expression "iVar29 = iVar5 + 0xf" (identifier "iVar29") (= "=") (binary_expression "iVar5 + 0xf" (identifier "iVar5") (+ "+") (number_literal "0xf"))) (; ";")) (} "}"))) (expression_statement "iVar30 = iVar29 >> 3;" (assignment_expression "iVar30 = iVar29 >> 3" (identifier "iVar30") (= "=") (binary_expression "iVar29 >> 3" (identifier "iVar29") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "iVar5 = bignum_bitcount(piVar14[7]);" (assignment_expression "iVar5 = bignum_bitcount(piVar14[7])" (identifier "iVar5") (= "=") (call_expression "bignum_bitcount(piVar14[7])" (identifier "bignum_bitcount") (argument_list "(piVar14[7])" (( "(") (subscript_expression "piVar14[7]" (identifier "piVar14") ([ "[") (number_literal "7") (] "]")) () ")")))) (; ";")) (expression_statement "iVar27 = iVar5 + 8;" (assignment_expression "iVar27 = iVar5 + 8" (identifier "iVar27") (= "=") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (iVar27 < 0) {\n    iVar27 = iVar5 + 0xf;\n  }" (if "if") (parenthesized_expression "(iVar27 < 0)" (( "(") (binary_expression "iVar27 < 0" (identifier "iVar27") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar27 = iVar5 + 0xf;\n  }" ({ "{") (expression_statement "iVar27 = iVar5 + 0xf;" (assignment_expression "iVar27 = iVar5 + 0xf" (identifier "iVar27") (= "=") (binary_expression "iVar5 + 0xf" (identifier "iVar5") (+ "+") (number_literal "0xf"))) (; ";")) (} "}"))) (expression_statement "iVar28 = iVar27 >> 3;" (assignment_expression "iVar28 = iVar27 >> 3" (identifier "iVar28") (= "=") (binary_expression "iVar27 >> 3" (identifier "iVar27") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);" (assignment_expression "pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30)" (identifier "pcVar35") (= "=") (cast_expression "(char *)(iVar33 + 0x10 + iVar31 + iVar30)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x10 + iVar31 + iVar30)" (( "(") (binary_expression "iVar33 + 0x10 + iVar31 + iVar30" (binary_expression "iVar33 + 0x10 + iVar31" (binary_expression "iVar33 + 0x10" (identifier "iVar33") (+ "+") (number_literal "0x10")) (+ "+") (identifier "iVar31")) (+ "+") (identifier "iVar30")) () ")")))) (; ";")) (expression_statement "iVar5 = iVar33 + -1;" (assignment_expression "iVar5 = iVar33 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar33 + -1" (identifier "iVar33") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_70 = pcVar35 + iVar28;" (assignment_expression "local_70 = pcVar35 + iVar28" (identifier "local_70") (= "=") (binary_expression "pcVar35 + iVar28" (identifier "pcVar35") (+ "+") (identifier "iVar28"))) (; ";")) (expression_statement "local_6c = (char *)safemalloc(local_70,1);" (assignment_expression "local_6c = (char *)safemalloc(local_70,1)" (identifier "local_6c") (= "=") (cast_expression "(char *)safemalloc(local_70,1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "safemalloc(local_70,1)" (identifier "safemalloc") (argument_list "(local_70,1)" (( "(") (identifier "local_70") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "*local_6c = (char)(iVar25 >> 0x1b);" (assignment_expression "*local_6c = (char)(iVar25 >> 0x1b)" (pointer_expression "*local_6c" (* "*") (identifier "local_6c")) (= "=") (cast_expression "(char)(iVar25 >> 0x1b)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar25 >> 0x1b)" (( "(") (binary_expression "iVar25 >> 0x1b" (identifier "iVar25") (>> ">>") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "local_6c[1] = (char)(iVar25 >> 0x13);" (assignment_expression "local_6c[1] = (char)(iVar25 >> 0x13)" (subscript_expression "local_6c[1]" (identifier "local_6c") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)(iVar25 >> 0x13)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar25 >> 0x13)" (( "(") (binary_expression "iVar25 >> 0x13" (identifier "iVar25") (>> ">>") (number_literal "0x13")) () ")")))) (; ";")) (expression_statement "pcVar36 = local_6c + 4;" (assignment_expression "pcVar36 = local_6c + 4" (identifier "pcVar36") (= "=") (binary_expression "local_6c + 4" (identifier "local_6c") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "local_6c[2] = (char)(iVar25 >> 0xb);" (assignment_expression "local_6c[2] = (char)(iVar25 >> 0xb)" (subscript_expression "local_6c[2]" (identifier "local_6c") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)(iVar25 >> 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar25 >> 0xb)" (( "(") (binary_expression "iVar25 >> 0xb" (identifier "iVar25") (>> ">>") (number_literal "0xb")) () ")")))) (; ";")) (expression_statement "local_6c[3] = (char)iVar33;" (assignment_expression "local_6c[3] = (char)iVar33" (subscript_expression "local_6c[3]" (identifier "local_6c") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(char)iVar33" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar33"))) (; ";")) (expression_statement "pcVar6 = pcVar36;" (assignment_expression "pcVar6 = pcVar36" (identifier "pcVar6") (= "=") (identifier "pcVar36")) (; ";")) (if_statement "if (iVar33 != 0) {\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }" (if "if") (parenthesized_expression "(iVar33 != 0)" (( "(") (binary_expression "iVar33 != 0" (identifier "iVar33") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar33;\n    iVar5 = -1;\n  }" ({ "{") (do_statement "do {\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    } while (iVar25 != -1);" (do "do") (compound_statement "{\n      pcVar35 = pcVar6 + 1;\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(piVar14[4],iVar5);\n      *pcVar6 = cVar12;\n      pcVar6 = pcVar35;\n      iVar5 = iVar25;\n    }" ({ "{") (expression_statement "pcVar35 = pcVar6 + 1;" (assignment_expression "pcVar35 = pcVar6 + 1" (identifier "pcVar35") (= "=") (binary_expression "pcVar6 + 1" (identifier "pcVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" (identifier "iVar25") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar12 = bignum_byte(piVar14[4],iVar5);" (assignment_expression "cVar12 = bignum_byte(piVar14[4],iVar5)" (identifier "cVar12") (= "=") (call_expression "bignum_byte(piVar14[4],iVar5)" (identifier "bignum_byte") (argument_list "(piVar14[4],iVar5)" (( "(") (subscript_expression "piVar14[4]" (identifier "piVar14") ([ "[") (number_literal "4") (] "]")) (, ",") (identifier "iVar5") () ")")))) (; ";")) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (= "=") (identifier "cVar12")) (; ";")) (expression_statement "pcVar6 = pcVar35;" (assignment_expression "pcVar6 = pcVar35" (identifier "pcVar6") (= "=") (identifier "pcVar35")) (; ";")) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" (identifier "iVar5") (= "=") (identifier "iVar25")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar25 != -1)" (( "(") (binary_expression "iVar25 != -1" (identifier "iVar25") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "pcVar36 = pcVar36 + iVar33;" (assignment_expression "pcVar36 = pcVar36 + iVar33" (identifier "pcVar36") (= "=") (binary_expression "pcVar36 + iVar33" (identifier "pcVar36") (+ "+") (identifier "iVar33"))) (; ";")) (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" (identifier "iVar5") (= "=") (number_literal "-1")) (; ";")) (} "}"))) (expression_statement "pcVar36[3] = (char)iVar31;" (assignment_expression "pcVar36[3] = (char)iVar31" (subscript_expression "pcVar36[3]" (identifier "pcVar36") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(char)iVar31" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar31"))) (; ";")) (expression_statement "*pcVar36 = (char)(iVar26 >> 0x1b);" (assignment_expression "*pcVar36 = (char)(iVar26 >> 0x1b)" (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) (= "=") (cast_expression "(char)(iVar26 >> 0x1b)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar26 >> 0x1b)" (( "(") (binary_expression "iVar26 >> 0x1b" (identifier "iVar26") (>> ">>") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "pcVar36[1] = (char)(iVar26 >> 0x13);" (assignment_expression "pcVar36[1] = (char)(iVar26 >> 0x13)" (subscript_expression "pcVar36[1]" (identifier "pcVar36") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)(iVar26 >> 0x13)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar26 >> 0x13)" (( "(") (binary_expression "iVar26 >> 0x13" (identifier "iVar26") (>> ">>") (number_literal "0x13")) () ")")))) (; ";")) (expression_statement "pcVar34 = pcVar36 + 4;" (assignment_expression "pcVar34 = pcVar36 + 4" (identifier "pcVar34") (= "=") (binary_expression "pcVar36 + 4" (identifier "pcVar36") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pcVar36[2] = (char)(iVar26 >> 0xb);" (assignment_expression "pcVar36[2] = (char)(iVar26 >> 0xb)" (subscript_expression "pcVar36[2]" (identifier "pcVar36") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)(iVar26 >> 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar26 >> 0xb)" (( "(") (binary_expression "iVar26 >> 0xb" (identifier "iVar26") (>> ">>") (number_literal "0xb")) () ")")))) (; ";")) (expression_statement "pcVar6 = (char *)(iVar31 + -1);" (assignment_expression "pcVar6 = (char *)(iVar31 + -1)" (identifier "pcVar6") (= "=") (cast_expression "(char *)(iVar31 + -1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar31 + -1)" (( "(") (binary_expression "iVar31 + -1" (identifier "iVar31") (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "pcVar36 = pcVar34;" (assignment_expression "pcVar36 = pcVar34" (identifier "pcVar36") (= "=") (identifier "pcVar34")) (; ";")) (if_statement "if (iVar31 != 0) {\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }" (if "if") (parenthesized_expression "(iVar31 != 0)" (( "(") (binary_expression "iVar31 != 0" (identifier "iVar31") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);\n    pcVar34 = pcVar34 + iVar31;\n    pcVar6 = (char *)0xffffffff;\n  }" ({ "{") (do_statement "do {\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    } while (pcVar37 != (char *)0xffffffff);" (do "do") (compound_statement "{\n      pcVar35 = pcVar36 + 1;\n      pcVar37 = pcVar6 + -1;\n      cVar12 = bignum_byte(piVar14[5],pcVar6);\n      *pcVar36 = cVar12;\n      pcVar36 = pcVar35;\n      pcVar6 = pcVar37;\n    }" ({ "{") (expression_statement "pcVar35 = pcVar36 + 1;" (assignment_expression "pcVar35 = pcVar36 + 1" (identifier "pcVar35") (= "=") (binary_expression "pcVar36 + 1" (identifier "pcVar36") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar37 = pcVar6 + -1;" (assignment_expression "pcVar37 = pcVar6 + -1" (identifier "pcVar37") (= "=") (binary_expression "pcVar6 + -1" (identifier "pcVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar12 = bignum_byte(piVar14[5],pcVar6);" (assignment_expression "cVar12 = bignum_byte(piVar14[5],pcVar6)" (identifier "cVar12") (= "=") (call_expression "bignum_byte(piVar14[5],pcVar6)" (identifier "bignum_byte") (argument_list "(piVar14[5],pcVar6)" (( "(") (subscript_expression "piVar14[5]" (identifier "piVar14") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "pcVar6") () ")")))) (; ";")) (expression_statement "*pcVar36 = cVar12;" (assignment_expression "*pcVar36 = cVar12" (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) (= "=") (identifier "cVar12")) (; ";")) (expression_statement "pcVar36 = pcVar35;" (assignment_expression "pcVar36 = pcVar35" (identifier "pcVar36") (= "=") (identifier "pcVar35")) (; ";")) (expression_statement "pcVar6 = pcVar37;" (assignment_expression "pcVar6 = pcVar37" (identifier "pcVar6") (= "=") (identifier "pcVar37")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar37 != (char *)0xffffffff)" (( "(") (binary_expression "pcVar37 != (char *)0xffffffff" (identifier "pcVar37") (!= "!=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (; ";")) (expression_statement "pcVar34 = pcVar34 + iVar31;" (assignment_expression "pcVar34 = pcVar34 + iVar31" (identifier "pcVar34") (= "=") (binary_expression "pcVar34 + iVar31" (identifier "pcVar34") (+ "+") (identifier "iVar31"))) (; ";")) (expression_statement "pcVar6 = (char *)0xffffffff;" (assignment_expression "pcVar6 = (char *)0xffffffff" (identifier "pcVar6") (= "=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}"))) (expression_statement "pcVar34[3] = (char)iVar30;" (assignment_expression "pcVar34[3] = (char)iVar30" (subscript_expression "pcVar34[3]" (identifier "pcVar34") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(char)iVar30" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar30"))) (; ";")) (expression_statement "*pcVar34 = (char)(iVar29 >> 0x1b);" (assignment_expression "*pcVar34 = (char)(iVar29 >> 0x1b)" (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) (= "=") (cast_expression "(char)(iVar29 >> 0x1b)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar29 >> 0x1b)" (( "(") (binary_expression "iVar29 >> 0x1b" (identifier "iVar29") (>> ">>") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "pcVar34[1] = (char)(iVar29 >> 0x13);" (assignment_expression "pcVar34[1] = (char)(iVar29 >> 0x13)" (subscript_expression "pcVar34[1]" (identifier "pcVar34") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)(iVar29 >> 0x13)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar29 >> 0x13)" (( "(") (binary_expression "iVar29 >> 0x13" (identifier "iVar29") (>> ">>") (number_literal "0x13")) () ")")))) (; ";")) (expression_statement "pcVar37 = pcVar34 + 4;" (assignment_expression "pcVar37 = pcVar34 + 4" (identifier "pcVar37") (= "=") (binary_expression "pcVar34 + 4" (identifier "pcVar34") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pcVar34[2] = (char)(iVar29 >> 0xb);" (assignment_expression "pcVar34[2] = (char)(iVar29 >> 0xb)" (subscript_expression "pcVar34[2]" (identifier "pcVar34") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)(iVar29 >> 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar29 >> 0xb)" (( "(") (binary_expression "iVar29 >> 0xb" (identifier "iVar29") (>> ">>") (number_literal "0xb")) () ")")))) (; ";")) (expression_statement "pcVar36 = (char *)(iVar30 + -1);" (assignment_expression "pcVar36 = (char *)(iVar30 + -1)" (identifier "pcVar36") (= "=") (cast_expression "(char *)(iVar30 + -1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar30 + -1)" (( "(") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "pcVar34 = pcVar37;" (assignment_expression "pcVar34 = pcVar37" (identifier "pcVar34") (= "=") (identifier "pcVar37")) (; ";")) (if_statement "if (iVar30 != 0) {\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }" (if "if") (parenthesized_expression "(iVar30 != 0)" (( "(") (binary_expression "iVar30 != 0" (identifier "iVar30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);\n    pcVar37 = pcVar37 + iVar30;\n    pcVar36 = (char *)0xffffffff;\n  }" ({ "{") (do_statement "do {\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    } while (pcVar32 != (char *)0xffffffff);" (do "do") (compound_statement "{\n      pcVar6 = pcVar34 + 1;\n      pcVar32 = pcVar36 + -1;\n      cVar12 = bignum_byte(piVar14[6],pcVar36);\n      *pcVar34 = cVar12;\n      pcVar36 = pcVar32;\n      pcVar34 = pcVar6;\n    }" ({ "{") (expression_statement "pcVar6 = pcVar34 + 1;" (assignment_expression "pcVar6 = pcVar34 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar34 + 1" (identifier "pcVar34") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar32 = pcVar36 + -1;" (assignment_expression "pcVar32 = pcVar36 + -1" (identifier "pcVar32") (= "=") (binary_expression "pcVar36 + -1" (identifier "pcVar36") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar12 = bignum_byte(piVar14[6],pcVar36);" (assignment_expression "cVar12 = bignum_byte(piVar14[6],pcVar36)" (identifier "cVar12") (= "=") (call_expression "bignum_byte(piVar14[6],pcVar36)" (identifier "bignum_byte") (argument_list "(piVar14[6],pcVar36)" (( "(") (subscript_expression "piVar14[6]" (identifier "piVar14") ([ "[") (number_literal "6") (] "]")) (, ",") (identifier "pcVar36") () ")")))) (; ";")) (expression_statement "*pcVar34 = cVar12;" (assignment_expression "*pcVar34 = cVar12" (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) (= "=") (identifier "cVar12")) (; ";")) (expression_statement "pcVar36 = pcVar32;" (assignment_expression "pcVar36 = pcVar32" (identifier "pcVar36") (= "=") (identifier "pcVar32")) (; ";")) (expression_statement "pcVar34 = pcVar6;" (assignment_expression "pcVar34 = pcVar6" (identifier "pcVar34") (= "=") (identifier "pcVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar32 != (char *)0xffffffff)" (( "(") (binary_expression "pcVar32 != (char *)0xffffffff" (identifier "pcVar32") (!= "!=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (; ";")) (expression_statement "pcVar37 = pcVar37 + iVar30;" (assignment_expression "pcVar37 = pcVar37 + iVar30" (identifier "pcVar37") (= "=") (binary_expression "pcVar37 + iVar30" (identifier "pcVar37") (+ "+") (identifier "iVar30"))) (; ";")) (expression_statement "pcVar36 = (char *)0xffffffff;" (assignment_expression "pcVar36 = (char *)0xffffffff" (identifier "pcVar36") (= "=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}"))) (expression_statement "pcVar37[3] = (char)iVar28;" (assignment_expression "pcVar37[3] = (char)iVar28" (subscript_expression "pcVar37[3]" (identifier "pcVar37") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(char)iVar28" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar28"))) (; ";")) (expression_statement "*pcVar37 = (char)(iVar27 >> 0x1b);" (assignment_expression "*pcVar37 = (char)(iVar27 >> 0x1b)" (pointer_expression "*pcVar37" (* "*") (identifier "pcVar37")) (= "=") (cast_expression "(char)(iVar27 >> 0x1b)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar27 >> 0x1b)" (( "(") (binary_expression "iVar27 >> 0x1b" (identifier "iVar27") (>> ">>") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "pcVar37[1] = (char)(iVar27 >> 0x13);" (assignment_expression "pcVar37[1] = (char)(iVar27 >> 0x13)" (subscript_expression "pcVar37[1]" (identifier "pcVar37") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)(iVar27 >> 0x13)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar27 >> 0x13)" (( "(") (binary_expression "iVar27 >> 0x13" (identifier "iVar27") (>> ">>") (number_literal "0x13")) () ")")))) (; ";")) (expression_statement "pcVar34 = pcVar37 + 4;" (assignment_expression "pcVar34 = pcVar37 + 4" (identifier "pcVar34") (= "=") (binary_expression "pcVar37 + 4" (identifier "pcVar37") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pcVar37[2] = (char)(iVar27 >> 0xb);" (assignment_expression "pcVar37[2] = (char)(iVar27 >> 0xb)" (subscript_expression "pcVar37[2]" (identifier "pcVar37") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)(iVar27 >> 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar27 >> 0xb)" (( "(") (binary_expression "iVar27 >> 0xb" (identifier "iVar27") (>> ">>") (number_literal "0xb")) () ")")))) (; ";")) (expression_statement "iStack_a8 = iVar28 + -1;" (assignment_expression "iStack_a8 = iVar28 + -1" (identifier "iStack_a8") (= "=") (binary_expression "iVar28 + -1" (identifier "iVar28") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar28 != 0) {\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }" (if "if") (parenthesized_expression "(iVar28 != 0)" (( "(") (binary_expression "iVar28 != 0" (identifier "iVar28") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar37 = (char *)0xffffffff;\n    pcVar32 = pcVar34;\n    do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar28;\n    iStack_a8 = -1;\n  }" ({ "{") (expression_statement "pcVar37 = (char *)0xffffffff;" (assignment_expression "pcVar37 = (char *)0xffffffff" (identifier "pcVar37") (= "=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "pcVar32 = pcVar34;" (assignment_expression "pcVar32 = pcVar34" (identifier "pcVar32") (= "=") (identifier "pcVar34")) (; ";")) (do_statement "do {\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    } while (iVar25 != -1);" (do "do") (compound_statement "{\n      pcVar36 = pcVar32 + 1;\n      iVar25 = iStack_a8 + -1;\n      cVar12 = bignum_byte(piVar14[7],iStack_a8);\n      *pcVar32 = cVar12;\n      iStack_a8 = iVar25;\n      pcVar32 = pcVar36;\n    }" ({ "{") (expression_statement "pcVar36 = pcVar32 + 1;" (assignment_expression "pcVar36 = pcVar32 + 1" (identifier "pcVar36") (= "=") (binary_expression "pcVar32 + 1" (identifier "pcVar32") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar25 = iStack_a8 + -1;" (assignment_expression "iVar25 = iStack_a8 + -1" (identifier "iVar25") (= "=") (binary_expression "iStack_a8 + -1" (identifier "iStack_a8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar12 = bignum_byte(piVar14[7],iStack_a8);" (assignment_expression "cVar12 = bignum_byte(piVar14[7],iStack_a8)" (identifier "cVar12") (= "=") (call_expression "bignum_byte(piVar14[7],iStack_a8)" (identifier "bignum_byte") (argument_list "(piVar14[7],iStack_a8)" (( "(") (subscript_expression "piVar14[7]" (identifier "piVar14") ([ "[") (number_literal "7") (] "]")) (, ",") (identifier "iStack_a8") () ")")))) (; ";")) (expression_statement "*pcVar32 = cVar12;" (assignment_expression "*pcVar32 = cVar12" (pointer_expression "*pcVar32" (* "*") (identifier "pcVar32")) (= "=") (identifier "cVar12")) (; ";")) (expression_statement "iStack_a8 = iVar25;" (assignment_expression "iStack_a8 = iVar25" (identifier "iStack_a8") (= "=") (identifier "iVar25")) (; ";")) (expression_statement "pcVar32 = pcVar36;" (assignment_expression "pcVar32 = pcVar36" (identifier "pcVar32") (= "=") (identifier "pcVar36")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar25 != -1)" (( "(") (binary_expression "iVar25 != -1" (identifier "iVar25") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "pcVar34 = pcVar34 + iVar28;" (assignment_expression "pcVar34 = pcVar34 + iVar28" (identifier "pcVar34") (= "=") (binary_expression "pcVar34 + iVar28" (identifier "pcVar34") (+ "+") (identifier "iVar28"))) (; ";")) (expression_statement "iStack_a8 = -1;" (assignment_expression "iStack_a8 = -1" (identifier "iStack_a8") (= "=") (number_literal "-1")) (; ";")) (} "}"))) (if_statement "if (pcVar34 == local_6c + (int)local_70) {\n    *puVar15 = local_70;\n    return local_6c;\n  }" (if "if") (parenthesized_expression "(pcVar34 == local_6c + (int)local_70)" (( "(") (binary_expression "pcVar34 == local_6c + (int)local_70" (identifier "pcVar34") (== "==") (binary_expression "local_6c + (int)local_70" (identifier "local_6c") (+ "+") (cast_expression "(int)local_70" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_70")))) () ")")) (compound_statement "{\n    *puVar15 = local_70;\n    return local_6c;\n  }" ({ "{") (expression_statement "*puVar15 = local_70;" (assignment_expression "*puVar15 = local_70" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "local_70")) (; ";")) (return_statement "return local_6c;" (return "return") (identifier "local_6c") (; ";")) (} "}"))) (expression_statement "uVar18 = 0x2b0;" (assignment_expression "uVar18 = 0x2b0" (identifier "uVar18") (= "=") (number_literal "0x2b0")) (; ";")) (expression_statement "pcVar38 = *(code **)(local_78 + -0x7bb8);" (assignment_expression "pcVar38 = *(code **)(local_78 + -0x7bb8)" (identifier "pcVar38") (= "=") (pointer_expression "*(code **)(local_78 + -0x7bb8)" (* "*") (cast_expression "(code **)(local_78 + -0x7bb8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_78 + -0x7bb8)" (( "(") (binary_expression "local_78 + -0x7bb8" (identifier "local_78") (+ "+") (number_literal "-0x7bb8")) () ")"))))) (; ";")) (expression_statement "pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);" (assignment_expression "pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x7584)" (( "(") (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x7584" (pointer_expression "*(int *)(local_78 + -0x7fc8)" (* "*") (cast_expression "(int *)(local_78 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + -0x7fc8)" (( "(") (binary_expression "local_78 + -0x7fc8" (identifier "local_78") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "0x7584")) () ")")))) (; ";")) (expression_statement "pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);" (assignment_expression "pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480)" (identifier "pbVar16") (= "=") (cast_expression "(byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x7480)" (( "(") (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x7480" (pointer_expression "*(int *)(local_78 + -0x7fc8)" (* "*") (cast_expression "(int *)(local_78 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + -0x7fc8)" (( "(") (binary_expression "local_78 + -0x7fc8" (identifier "local_78") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "0x7480")) () ")")))) (; ";")) (expression_statement "pcVar39 = FUN_0003e3e0;" (assignment_expression "pcVar39 = FUN_0003e3e0" (identifier "pcVar39") (= "=") (identifier "FUN_0003e3e0")) (; ";")) (expression_statement "puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);" (assignment_expression "puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c)" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_78 + -0x7fc8) + 0x311c)" (( "(") (binary_expression "*(int *)(local_78 + -0x7fc8) + 0x311c" (pointer_expression "*(int *)(local_78 + -0x7fc8)" (* "*") (cast_expression "(int *)(local_78 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + -0x7fc8)" (( "(") (binary_expression "local_78 + -0x7fc8" (identifier "local_78") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "0x311c")) () ")")))) (; ";")) (expression_statement "(*pcVar38)();" (call_expression "(*pcVar38)()" (parenthesized_expression "(*pcVar38)" (( "(") (pointer_expression "*pcVar38" (* "*") (identifier "pcVar38")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar7 = *(int **)(pcVar38 + 0x2c1b4);" (assignment_expression "piVar7 = *(int **)(pcVar38 + 0x2c1b4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(pcVar38 + 0x2c1b4)" (* "*") (cast_expression "(int **)(pcVar38 + 0x2c1b4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar38 + 0x2c1b4)" (( "(") (binary_expression "pcVar38 + 0x2c1b4" (identifier "pcVar38") (+ "+") (number_literal "0x2c1b4")) () ")"))))) (; ";")) (expression_statement "pcStack_b4 = (char *)*piVar7;" (assignment_expression "pcStack_b4 = (char *)*piVar7" (identifier "pcStack_b4") (= "=") (cast_expression "(char *)*piVar7" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (expression_statement "puVar15 = puVar13;" (assignment_expression "puVar15 = puVar13" (identifier "puVar15") (= "=") (identifier "puVar13")) (; ";")) (expression_statement "pbVar17 = pbVar16;" (assignment_expression "pbVar17 = pbVar16" (identifier "pbVar17") (= "=") (identifier "pbVar16")) (; ";")) (expression_statement "piStack_b0 = piVar14;" (assignment_expression "piStack_b0 = piVar14" (identifier "piStack_b0") (= "=") (identifier "piVar14")) (; ";")) (expression_statement "iStack_ac = iVar28;" (assignment_expression "iStack_ac = iVar28" (identifier "iStack_ac") (= "=") (identifier "iVar28")) (; ";")) (expression_statement "pcStack_a4 = pcVar36;" (assignment_expression "pcStack_a4 = pcVar36" (identifier "pcStack_a4") (= "=") (identifier "pcVar36")) (; ";")) (expression_statement "pcStack_a0 = pcVar34;" (assignment_expression "pcStack_a0 = pcVar34" (identifier "pcStack_a0") (= "=") (identifier "pcVar34")) (; ";")) (expression_statement "pcStack_9c = pcVar35;" (assignment_expression "pcStack_9c = pcVar35" (identifier "pcStack_9c") (= "=") (identifier "pcVar35")) (; ";")) (expression_statement "pcStack_98 = pcVar37;" (assignment_expression "pcStack_98 = pcVar37" (identifier "pcStack_98") (= "=") (identifier "pcVar37")) (; ";")) (expression_statement "pcStack_94 = pcVar6;" (assignment_expression "pcStack_94 = pcVar6" (identifier "pcStack_94") (= "=") (identifier "pcVar6")) (; ";")) (expression_statement "iStack_90 = iVar5;" (assignment_expression "iStack_90 = iVar5" (identifier "iStack_90") (= "=") (identifier "iVar5")) (; ";")) (expression_statement "pcStack_8c = pcVar39;" (assignment_expression "pcStack_8c = pcVar39" (identifier "pcStack_8c") (= "=") (identifier "pcVar39")) (; ";")) (if_statement "if (0 < (int)local_78) {\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }" (if "if") (parenthesized_expression "(0 < (int)local_78)" (( "(") (binary_expression "0 < (int)local_78" (number_literal "0") (< "<") (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78"))) () ")")) (compound_statement "{\n    puVar8 = (undefined *)puVar13[5];\n    puVar10 = puVar8;\n    if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }\n    if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }\n    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);\n    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);\n    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);\n  }" ({ "{") (expression_statement "puVar8 = (undefined *)puVar13[5];" (assignment_expression "puVar8 = (undefined *)puVar13[5]" (identifier "puVar8") (= "=") (cast_expression "(undefined *)puVar13[5]" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[5]" (identifier "puVar13") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" (identifier "puVar10") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if ((int)local_78 <= (int)puVar8) {\n      puVar10 = local_78;\n    }" (if "if") (parenthesized_expression "((int)local_78 <= (int)puVar8)" (( "(") (binary_expression "(int)local_78 <= (int)puVar8" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (<= "<=") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")) (compound_statement "{\n      puVar10 = local_78;\n    }" ({ "{") (expression_statement "puVar10 = local_78;" (assignment_expression "puVar10 = local_78" (identifier "puVar10") (= "=") (identifier "local_78")) (; ";")) (} "}"))) (if_statement "if ((int)puVar8 < 0x41) {\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }" (if "if") (parenthesized_expression "((int)puVar8 < 0x41)" (( "(") (binary_expression "(int)puVar8 < 0x41" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (< "<") (number_literal "0x41")) () ")")) (compound_statement "{\n      pbVar17 = pbVar20;\n      puVar8 = local_78;\n      iVar5 = 0;\n      do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);\n    }" ({ "{") (expression_statement "pbVar17 = pbVar20;" (assignment_expression "pbVar17 = pbVar20" (identifier "pbVar17") (= "=") (identifier "pbVar20")) (; ";")) (expression_statement "puVar8 = local_78;" (assignment_expression "puVar8 = local_78" (identifier "puVar8") (= "=") (identifier "local_78")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      } while ((int)puVar9 < 0x41);" (do "do") (compound_statement "{\n        iStack_f8 = iVar5;\n        puVar15 = (undefined4 *)(*(code *)*puVar13)();\n        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);\n        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);\n        (*(code *)puVar13[3])(puVar15,abStack_f4);\n        if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }\n        pbVar17 = puVar10 + (int)pbVar17;\n        puVar8 = puVar8 + -(int)puVar10;\n        if ((int)puVar8 < 1) goto LAB_0003e530;\n        puVar9 = (undefined *)puVar13[5];\n        puVar10 = puVar9;\n        if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }\n        iVar5 = iVar5 + 1;\n      }" ({ "{") (expression_statement "iStack_f8 = iVar5;" (assignment_expression "iStack_f8 = iVar5" (identifier "iStack_f8") (= "=") (identifier "iVar5")) (; ";")) (expression_statement "puVar15 = (undefined4 *)(*(code *)*puVar13)();" (assignment_expression "puVar15 = (undefined4 *)(*(code *)*puVar13)()" (identifier "puVar15") (= "=") (cast_expression "(undefined4 *)(*(code *)*puVar13)()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)*puVar13)()" (parenthesized_expression "(*(code *)*puVar13)" (( "(") (pointer_expression "*(code *)*puVar13" (* "*") (cast_expression "(code *)*puVar13" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar13" (* "*") (identifier "puVar13")))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "(*(code *)puVar13[2])(puVar15,pbVar16,uVar18);" (call_expression "(*(code *)puVar13[2])(puVar15,pbVar16,uVar18)" (parenthesized_expression "(*(code *)puVar13[2])" (( "(") (pointer_expression "*(code *)puVar13[2]" (* "*") (cast_expression "(code *)puVar13[2]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]")))) () ")")) (argument_list "(puVar15,pbVar16,uVar18)" (( "(") (identifier "puVar15") (, ",") (identifier "pbVar16") (, ",") (identifier "uVar18") () ")"))) (; ";")) (expression_statement "(*(code *)puVar13[2])(puVar15,&iStack_f8,4);" (call_expression "(*(code *)puVar13[2])(puVar15,&iStack_f8,4)" (parenthesized_expression "(*(code *)puVar13[2])" (( "(") (pointer_expression "*(code *)puVar13[2]" (* "*") (cast_expression "(code *)puVar13[2]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]")))) () ")")) (argument_list "(puVar15,&iStack_f8,4)" (( "(") (identifier "puVar15") (, ",") (pointer_expression "&iStack_f8" (& "&") (identifier "iStack_f8")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "(*(code *)puVar13[3])(puVar15,abStack_f4);" (call_expression "(*(code *)puVar13[3])(puVar15,abStack_f4)" (parenthesized_expression "(*(code *)puVar13[3])" (( "(") (pointer_expression "*(code *)puVar13[3]" (* "*") (cast_expression "(code *)puVar13[3]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[3]" (identifier "puVar13") ([ "[") (number_literal "3") (] "]")))) () ")")) (argument_list "(puVar15,abStack_f4)" (( "(") (identifier "puVar15") (, ",") (identifier "abStack_f4") () ")"))) (; ";")) (if_statement "if (0 < (int)puVar10) {\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }" (if "if") (parenthesized_expression "(0 < (int)puVar10)" (( "(") (binary_expression "0 < (int)puVar10" (number_literal "0") (< "<") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) () ")")) (compound_statement "{\n          pbVar20 = abStack_f4;\n          pbVar21 = pbVar17;\n          do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);\n        }" ({ "{") (expression_statement "pbVar20 = abStack_f4;" (assignment_expression "pbVar20 = abStack_f4" (identifier "pbVar20") (= "=") (identifier "abStack_f4")) (; ";")) (expression_statement "pbVar21 = pbVar17;" (assignment_expression "pbVar21 = pbVar17" (identifier "pbVar21") (= "=") (identifier "pbVar17")) (; ";")) (do_statement "do {\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          } while (pbVar17 + (int)puVar10 != pbVar22);" (do "do") (compound_statement "{\n            pbVar22 = pbVar21 + 1;\n            bVar1 = *pbVar20;\n            puVar15 = (undefined4 *)(uint)bVar1;\n            pbVar20 = pbVar20 + 1;\n            *pbVar21 = *pbVar21 ^ bVar1;\n            pbVar21 = pbVar22;\n          }" ({ "{") (expression_statement "pbVar22 = pbVar21 + 1;" (assignment_expression "pbVar22 = pbVar21 + 1" (identifier "pbVar22") (= "=") (binary_expression "pbVar21 + 1" (identifier "pbVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = *pbVar20;" (assignment_expression "bVar1 = *pbVar20" (identifier "bVar1") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "puVar15 = (undefined4 *)(uint)bVar1;" (assignment_expression "puVar15 = (undefined4 *)(uint)bVar1" (identifier "puVar15") (= "=") (cast_expression "(undefined4 *)(uint)bVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")))) (; ";")) (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + 1" (identifier "pbVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar21 = *pbVar21 ^ bVar1;" (assignment_expression "*pbVar21 = *pbVar21 ^ bVar1" (pointer_expression "*pbVar21" (* "*") (identifier "pbVar21")) (= "=") (binary_expression "*pbVar21 ^ bVar1" (pointer_expression "*pbVar21" (* "*") (identifier "pbVar21")) (^ "^") (identifier "bVar1"))) (; ";")) (expression_statement "pbVar21 = pbVar22;" (assignment_expression "pbVar21 = pbVar22" (identifier "pbVar21") (= "=") (identifier "pbVar22")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar17 + (int)puVar10 != pbVar22)" (( "(") (binary_expression "pbVar17 + (int)puVar10 != pbVar22" (binary_expression "pbVar17 + (int)puVar10" (identifier "pbVar17") (+ "+") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) (!= "!=") (identifier "pbVar22")) () ")")) (; ";")) (} "}"))) (expression_statement "pbVar17 = puVar10 + (int)pbVar17;" (assignment_expression "pbVar17 = puVar10 + (int)pbVar17" (identifier "pbVar17") (= "=") (binary_expression "puVar10 + (int)pbVar17" (identifier "puVar10") (+ "+") (cast_expression "(int)pbVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar17")))) (; ";")) (expression_statement "puVar8 = puVar8 + -(int)puVar10;" (assignment_expression "puVar8 = puVar8 + -(int)puVar10" (identifier "puVar8") (= "=") (binary_expression "puVar8 + -(int)puVar10" (identifier "puVar8") (+ "+") (unary_expression "-(int)puVar10" (- "-") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))))) (; ";")) (if_statement "if ((int)puVar8 < 1) goto LAB_0003e530;" (if "if") (parenthesized_expression "((int)puVar8 < 1)" (( "(") (binary_expression "(int)puVar8 < 1" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0003e530;" (goto "goto") (statement_identifier "LAB_0003e530") (; ";"))) (expression_statement "puVar9 = (undefined *)puVar13[5];" (assignment_expression "puVar9 = (undefined *)puVar13[5]" (identifier "puVar9") (= "=") (cast_expression "(undefined *)puVar13[5]" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[5]" (identifier "puVar13") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if ((int)puVar8 < (int)puVar9) {\n          puVar10 = puVar8;\n        }" (if "if") (parenthesized_expression "((int)puVar8 < (int)puVar9)" (( "(") (binary_expression "(int)puVar8 < (int)puVar9" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (< "<") (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9"))) () ")")) (compound_statement "{\n          puVar10 = puVar8;\n        }" ({ "{") (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" (identifier "puVar10") (= "=") (identifier "puVar8")) (; ";")) (} "}"))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)puVar9 < 0x41)" (( "(") (binary_expression "(int)puVar9 < 0x41" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (< "<") (number_literal "0x41")) () ")")) (; ";")) (} "}"))) (expression_statement "pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);" (assignment_expression "pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" (identifier "pbVar17") (= "=") (cast_expression "(byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar38 + 0x2bc88) + 0x7480)" (( "(") (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x7480" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" (* "*") (cast_expression "(int *)(pcVar38 + 0x2bc88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar38 + 0x2bc88)" (( "(") (binary_expression "pcVar38 + 0x2bc88" (identifier "pcVar38") (+ "+") (number_literal "0x2bc88")) () ")")))) (+ "+") (number_literal "0x7480")) () ")")))) (; ";")) (expression_statement "puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);" (assignment_expression "puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" (identifier "puVar15") (= "=") (cast_expression "(undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar38 + 0x2bc88) + 0x748c)" (( "(") (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x748c" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" (* "*") (cast_expression "(int *)(pcVar38 + 0x2bc88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar38 + 0x2bc88)" (( "(") (binary_expression "pcVar38 + 0x2bc88" (identifier "pcVar38") (+ "+") (number_literal "0x2bc88")) () ")")))) (+ "+") (number_literal "0x748c")) () ")")))) (; ";")) (expression_statement "(**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);" (call_expression "(**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550)" (parenthesized_expression "(**(code **)(pcVar38 + 0x2c098))" (( "(") (pointer_expression "**(code **)(pcVar38 + 0x2c098)" (* "*") (pointer_expression "*(code **)(pcVar38 + 0x2c098)" (* "*") (cast_expression "(code **)(pcVar38 + 0x2c098)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar38 + 0x2c098)" (( "(") (binary_expression "pcVar38 + 0x2c098" (identifier "pcVar38") (+ "+") (number_literal "0x2c098")) () ")"))))) () ")")) (argument_list "(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550)" (( "(") (identifier "puVar15") (, ",") (identifier "pbVar17") (, ",") (number_literal "0x3be") (, ",") (binary_expression "*(int *)(pcVar38 + 0x2bc88) + 0x7550" (pointer_expression "*(int *)(pcVar38 + 0x2bc88)" (* "*") (cast_expression "(int *)(pcVar38 + 0x2bc88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar38 + 0x2bc88)" (( "(") (binary_expression "pcVar38 + 0x2bc88" (identifier "pcVar38") (+ "+") (number_literal "0x2bc88")) () ")")))) (+ "+") (number_literal "0x7550")) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0003e530:\n  pcVar6 = (char *)*piVar7;" (statement_identifier "LAB_0003e530") (: ":") (expression_statement "pcVar6 = (char *)*piVar7;" (assignment_expression "pcVar6 = (char *)*piVar7" (identifier "pcVar6") (= "=") (cast_expression "(char *)*piVar7" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";"))) (if_statement "if (pcStack_b4 == pcVar6) {\n    return pcVar6;\n  }" (if "if") (parenthesized_expression "(pcStack_b4 == pcVar6)" (( "(") (binary_expression "pcStack_b4 == pcVar6" (identifier "pcStack_b4") (== "==") (identifier "pcVar6")) () ")")) (compound_statement "{\n    return pcVar6;\n  }" ({ "{") (return_statement "return pcVar6;" (return "return") (identifier "pcVar6") (; ";")) (} "}"))) (expression_statement "pcVar38 = *(code **)(pcVar38 + 0x2c194);" (assignment_expression "pcVar38 = *(code **)(pcVar38 + 0x2c194)" (identifier "pcVar38") (= "=") (pointer_expression "*(code **)(pcVar38 + 0x2c194)" (* "*") (cast_expression "(code **)(pcVar38 + 0x2c194)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar38 + 0x2c194)" (( "(") (binary_expression "pcVar38 + 0x2c194" (identifier "pcVar38") (+ "+") (number_literal "0x2c194")) () ")"))))) (; ";")) (expression_statement "(*pcVar38)();" (call_expression "(*pcVar38)()" (parenthesized_expression "(*pcVar38)" (( "(") (pointer_expression "*pcVar38" (* "*") (identifier "pcVar38")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = bignum_bitcount(puVar15[3]);" (assignment_expression "iVar5 = bignum_bitcount(puVar15[3])" (identifier "iVar5") (= "=") (call_expression "bignum_bitcount(puVar15[3])" (identifier "bignum_bitcount") (argument_list "(puVar15[3])" (( "(") (subscript_expression "puVar15[3]" (identifier "puVar15") ([ "[") (number_literal "3") (] "]")) () ")")))) (; ";")) (expression_statement "iVar25 = iVar5 + 8;" (assignment_expression "iVar25 = iVar5 + 8" (identifier "iVar25") (= "=") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (iVar25 < 0) {\n    iVar25 = iVar5 + 0xf;\n  }" (if "if") (parenthesized_expression "(iVar25 < 0)" (( "(") (binary_expression "iVar25 < 0" (identifier "iVar25") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar25 = iVar5 + 0xf;\n  }" ({ "{") (expression_statement "iVar25 = iVar5 + 0xf;" (assignment_expression "iVar25 = iVar5 + 0xf" (identifier "iVar25") (= "=") (binary_expression "iVar5 + 0xf" (identifier "iVar5") (+ "+") (number_literal "0xf"))) (; ";")) (} "}"))) (expression_statement "iVar26 = iVar25 >> 3;" (assignment_expression "iVar26 = iVar25 >> 3" (identifier "iVar26") (= "=") (binary_expression "iVar25 >> 3" (identifier "iVar25") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "iVar5 = bignum_bitcount(puVar15[2]);" (assignment_expression "iVar5 = bignum_bitcount(puVar15[2])" (identifier "iVar5") (= "=") (call_expression "bignum_bitcount(puVar15[2])" (identifier "bignum_bitcount") (argument_list "(puVar15[2])" (( "(") (subscript_expression "puVar15[2]" (identifier "puVar15") ([ "[") (number_literal "2") (] "]")) () ")")))) (; ";")) (expression_statement "iVar33 = iVar5 + 8;" (assignment_expression "iVar33 = iVar5 + 8" (identifier "iVar33") (= "=") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (iVar33 < 0) {\n    iVar33 = iVar5 + 0xf;\n  }" (if "if") (parenthesized_expression "(iVar33 < 0)" (( "(") (binary_expression "iVar33 < 0" (identifier "iVar33") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar33 = iVar5 + 0xf;\n  }" ({ "{") (expression_statement "iVar33 = iVar5 + 0xf;" (assignment_expression "iVar33 = iVar5 + 0xf" (identifier "iVar33") (= "=") (binary_expression "iVar5 + 0xf" (identifier "iVar5") (+ "+") (number_literal "0xf"))) (; ";")) (} "}"))) (expression_statement "iVar31 = iVar33 >> 3;" (assignment_expression "iVar31 = iVar33 >> 3" (identifier "iVar31") (= "=") (binary_expression "iVar33 >> 3" (identifier "iVar33") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "iVar27 = iVar26 + 0x13 + iVar31;" (assignment_expression "iVar27 = iVar26 + 0x13 + iVar31" (identifier "iVar27") (= "=") (binary_expression "iVar26 + 0x13 + iVar31" (binary_expression "iVar26 + 0x13" (identifier "iVar26") (+ "+") (number_literal "0x13")) (+ "+") (identifier "iVar31"))) (; ";")) (expression_statement "iVar5 = iVar26 + -1;" (assignment_expression "iVar5 = iVar26 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar26 + -1" (identifier "iVar26") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pcVar35 = (char *)safemalloc(iVar27,1);" (assignment_expression "pcVar35 = (char *)safemalloc(iVar27,1)" (identifier "pcVar35") (= "=") (cast_expression "(char *)safemalloc(iVar27,1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "safemalloc(iVar27,1)" (identifier "safemalloc") (argument_list "(iVar27,1)" (( "(") (identifier "iVar27") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "pcVar35[3] = '\a';" (assignment_expression "pcVar35[3] = '\a'" (subscript_expression "pcVar35[3]" (identifier "pcVar35") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'\a'" (' "'") (escape_sequence "\a") (' "'"))) (; ";")) (expression_statement "*pcVar35 = '\0';" (assignment_expression "*pcVar35 = '\0'" (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar29 = *(int *)(pcVar38 + 0x2baec);" (assignment_expression "iVar29 = *(int *)(pcVar38 + 0x2baec)" (identifier "iVar29") (= "=") (pointer_expression "*(int *)(pcVar38 + 0x2baec)" (* "*") (cast_expression "(int *)(pcVar38 + 0x2baec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar38 + 0x2baec)" (( "(") (binary_expression "pcVar38 + 0x2baec" (identifier "pcVar38") (+ "+") (number_literal "0x2baec")) () ")"))))) (; ";")) (expression_statement "pcVar35[1] = '\0';" (assignment_expression "pcVar35[1] = '\0'" (subscript_expression "pcVar35[1]" (identifier "pcVar35") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar36 = pcVar35 + 0xf;" (assignment_expression "pcVar36 = pcVar35 + 0xf" (identifier "pcVar36") (= "=") (binary_expression "pcVar35 + 0xf" (identifier "pcVar35") (+ "+") (number_literal "0xf"))) (; ";")) (expression_statement "pcVar35[2] = '\0';" (assignment_expression "pcVar35[2] = '\0'" (subscript_expression "pcVar35[2]" (identifier "pcVar35") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "uVar23 = *(uint *)(iVar29 + -0x1ac0);" (assignment_expression "uVar23 = *(uint *)(iVar29 + -0x1ac0)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(iVar29 + -0x1ac0)" (* "*") (cast_expression "(uint *)(iVar29 + -0x1ac0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + -0x1ac0)" (( "(") (binary_expression "iVar29 + -0x1ac0" (identifier "iVar29") (+ "+") (number_literal "-0x1ac0")) () ")"))))) (; ";")) (expression_statement "cVar12 = *(char *)(iVar29 + -0x1abc);" (assignment_expression "cVar12 = *(char *)(iVar29 + -0x1abc)" (identifier "cVar12") (= "=") (pointer_expression "*(char *)(iVar29 + -0x1abc)" (* "*") (cast_expression "(char *)(iVar29 + -0x1abc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + -0x1abc)" (( "(") (binary_expression "iVar29 + -0x1abc" (identifier "iVar29") (+ "+") (number_literal "-0x1abc")) () ")"))))) (; ";")) (expression_statement "cVar2 = *(char *)(iVar29 + -0x1abb);" (assignment_expression "cVar2 = *(char *)(iVar29 + -0x1abb)" (identifier "cVar2") (= "=") (pointer_expression "*(char *)(iVar29 + -0x1abb)" (* "*") (cast_expression "(char *)(iVar29 + -0x1abb)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + -0x1abb)" (( "(") (binary_expression "iVar29 + -0x1abb" (identifier "iVar29") (+ "+") (number_literal "-0x1abb")) () ")"))))) (; ";")) (expression_statement "cVar3 = *(char *)(iVar29 + -0x1aba);" (assignment_expression "cVar3 = *(char *)(iVar29 + -0x1aba)" (identifier "cVar3") (= "=") (pointer_expression "*(char *)(iVar29 + -0x1aba)" (* "*") (cast_expression "(char *)(iVar29 + -0x1aba)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + -0x1aba)" (( "(") (binary_expression "iVar29 + -0x1aba" (identifier "iVar29") (+ "+") (number_literal "-0x1aba")) () ")"))))) (; ";")) (expression_statement "pcVar6 = pcVar35 + 4;" (assignment_expression "pcVar6 = pcVar35 + 4" (identifier "pcVar6") (= "=") (binary_expression "pcVar35 + 4" (identifier "pcVar35") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar4 = (uint)pcVar6 & 3;" (assignment_expression "uVar4 = (uint)pcVar6 & 3" (identifier "uVar4") (= "=") (binary_expression "(uint)pcVar6 & 3" (cast_expression "(uint)pcVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar6")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;" (assignment_expression "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" (* "*") (cast_expression "(uint *)(pcVar6 + -uVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar6 + -uVar4)" (( "(") (binary_expression "pcVar6 + -uVar4" (identifier "pcVar6") (+ "+") (unary_expression "-uVar4" (- "-") (identifier "uVar4"))) () ")")))) (= "=") (binary_expression "*(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8" (binary_expression "*(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" (* "*") (cast_expression "(uint *)(pcVar6 + -uVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar6 + -uVar4)" (( "(") (binary_expression "pcVar6 + -uVar4" (identifier "pcVar6") (+ "+") (unary_expression "-uVar4" (- "-") (identifier "uVar4"))) () ")")))) (& "&") (binary_expression "-1 << (4 - uVar4) * 8" (number_literal "-1") (<< "<<") (binary_expression "(4 - uVar4) * 8" (parenthesized_expression "(4 - uVar4)" (( "(") (binary_expression "4 - uVar4" (number_literal "4") (- "-") (identifier "uVar4")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "uVar23 >> uVar4 * 8" (identifier "uVar23") (>> ">>") (binary_expression "uVar4 * 8" (identifier "uVar4") (* "*") (number_literal "8"))))) (; ";")) (expression_statement "pcVar6 = pcVar35 + 7;" (assignment_expression "pcVar6 = pcVar35 + 7" (identifier "pcVar6") (= "=") (binary_expression "pcVar35 + 7" (identifier "pcVar35") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar4 = (uint)pcVar6 & 3;" (assignment_expression "uVar4 = (uint)pcVar6 & 3" (identifier "uVar4") (= "=") (binary_expression "(uint)pcVar6 & 3" (cast_expression "(uint)pcVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar6")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;" (assignment_expression "*(uint *)(pcVar6 + -uVar4) =\n       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" (* "*") (cast_expression "(uint *)(pcVar6 + -uVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar6 + -uVar4)" (( "(") (binary_expression "pcVar6 + -uVar4" (identifier "pcVar6") (+ "+") (unary_expression "-uVar4" (- "-") (identifier "uVar4"))) () ")")))) (= "=") (binary_expression "*(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8" (binary_expression "*(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8" (pointer_expression "*(uint *)(pcVar6 + -uVar4)" (* "*") (cast_expression "(uint *)(pcVar6 + -uVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar6 + -uVar4)" (( "(") (binary_expression "pcVar6 + -uVar4" (identifier "pcVar6") (+ "+") (unary_expression "-uVar4" (- "-") (identifier "uVar4"))) () ")")))) (& "&") (binary_expression "0xffffffffU >> (uVar4 + 1) * 8" (number_literal "0xffffffffU") (>> ">>") (binary_expression "(uVar4 + 1) * 8" (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "uVar23 << (3 - uVar4) * 8" (identifier "uVar23") (<< "<<") (binary_expression "(3 - uVar4) * 8" (parenthesized_expression "(3 - uVar4)" (( "(") (binary_expression "3 - uVar4" (number_literal "3") (- "-") (identifier "uVar4")) () ")")) (* "*") (number_literal "8"))))) (; ";")) (expression_statement "pcVar35[8] = cVar12;" (assignment_expression "pcVar35[8] = cVar12" (subscript_expression "pcVar35[8]" (identifier "pcVar35") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "cVar12")) (; ";")) (expression_statement "pcVar35[9] = cVar2;" (assignment_expression "pcVar35[9] = cVar2" (subscript_expression "pcVar35[9]" (identifier "pcVar35") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "cVar2")) (; ";")) (expression_statement "pcVar35[10] = cVar3;" (assignment_expression "pcVar35[10] = cVar3" (subscript_expression "pcVar35[10]" (identifier "pcVar35") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "cVar3")) (; ";")) (expression_statement "pcVar35[0xb] = (char)(iVar25 >> 0x1b);" (assignment_expression "pcVar35[0xb] = (char)(iVar25 >> 0x1b)" (subscript_expression "pcVar35[0xb]" (identifier "pcVar35") ([ "[") (number_literal "0xb") (] "]")) (= "=") (cast_expression "(char)(iVar25 >> 0x1b)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar25 >> 0x1b)" (( "(") (binary_expression "iVar25 >> 0x1b" (identifier "iVar25") (>> ">>") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "pcVar35[0xc] = (char)(iVar25 >> 0x13);" (assignment_expression "pcVar35[0xc] = (char)(iVar25 >> 0x13)" (subscript_expression "pcVar35[0xc]" (identifier "pcVar35") ([ "[") (number_literal "0xc") (] "]")) (= "=") (cast_expression "(char)(iVar25 >> 0x13)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar25 >> 0x13)" (( "(") (binary_expression "iVar25 >> 0x13" (identifier "iVar25") (>> ">>") (number_literal "0x13")) () ")")))) (; ";")) (expression_statement "pcVar35[0xd] = (char)(iVar25 >> 0xb);" (assignment_expression "pcVar35[0xd] = (char)(iVar25 >> 0xb)" (subscript_expression "pcVar35[0xd]" (identifier "pcVar35") ([ "[") (number_literal "0xd") (] "]")) (= "=") (cast_expression "(char)(iVar25 >> 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar25 >> 0xb)" (( "(") (binary_expression "iVar25 >> 0xb" (identifier "iVar25") (>> ">>") (number_literal "0xb")) () ")")))) (; ";")) (expression_statement "pcVar35[0xe] = (char)iVar26;" (assignment_expression "pcVar35[0xe] = (char)iVar26" (subscript_expression "pcVar35[0xe]" (identifier "pcVar35") ([ "[") (number_literal "0xe") (] "]")) (= "=") (cast_expression "(char)iVar26" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar26"))) (; ";")) (expression_statement "pcVar6 = pcVar36;" (assignment_expression "pcVar6 = pcVar36" (identifier "pcVar6") (= "=") (identifier "pcVar36")) (; ";")) (if_statement "if (iVar26 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }" (if "if") (parenthesized_expression "(iVar26 != 0)" (( "(") (binary_expression "iVar26 != 0" (identifier "iVar26") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar36 = pcVar36 + iVar26;\n  }" ({ "{") (do_statement "do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);" (do "do") (compound_statement "{\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[3],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    }" ({ "{") (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" (identifier "iVar25") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar12 = bignum_byte(puVar15[3],iVar5);" (assignment_expression "cVar12 = bignum_byte(puVar15[3],iVar5)" (identifier "cVar12") (= "=") (call_expression "bignum_byte(puVar15[3],iVar5)" (identifier "bignum_byte") (argument_list "(puVar15[3],iVar5)" (( "(") (subscript_expression "puVar15[3]" (identifier "puVar15") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "iVar5") () ")")))) (; ";")) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (= "=") (identifier "cVar12")) (; ";")) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" (identifier "iVar5") (= "=") (identifier "iVar25")) (; ";")) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + 1" (identifier "pcVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar25 != -1)" (( "(") (binary_expression "iVar25 != -1" (identifier "iVar25") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "pcVar36 = pcVar36 + iVar26;" (assignment_expression "pcVar36 = pcVar36 + iVar26" (identifier "pcVar36") (= "=") (binary_expression "pcVar36 + iVar26" (identifier "pcVar36") (+ "+") (identifier "iVar26"))) (; ";")) (} "}"))) (expression_statement "pcVar36[3] = (char)iVar31;" (assignment_expression "pcVar36[3] = (char)iVar31" (subscript_expression "pcVar36[3]" (identifier "pcVar36") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(char)iVar31" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar31"))) (; ";")) (expression_statement "*pcVar36 = (char)(iVar33 >> 0x1b);" (assignment_expression "*pcVar36 = (char)(iVar33 >> 0x1b)" (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) (= "=") (cast_expression "(char)(iVar33 >> 0x1b)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar33 >> 0x1b)" (( "(") (binary_expression "iVar33 >> 0x1b" (identifier "iVar33") (>> ">>") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "pcVar36[1] = (char)(iVar33 >> 0x13);" (assignment_expression "pcVar36[1] = (char)(iVar33 >> 0x13)" (subscript_expression "pcVar36[1]" (identifier "pcVar36") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)(iVar33 >> 0x13)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar33 >> 0x13)" (( "(") (binary_expression "iVar33 >> 0x13" (identifier "iVar33") (>> ">>") (number_literal "0x13")) () ")")))) (; ";")) (expression_statement "pcVar34 = pcVar36 + 4;" (assignment_expression "pcVar34 = pcVar36 + 4" (identifier "pcVar34") (= "=") (binary_expression "pcVar36 + 4" (identifier "pcVar36") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pcVar36[2] = (char)(iVar33 >> 0xb);" (assignment_expression "pcVar36[2] = (char)(iVar33 >> 0xb)" (subscript_expression "pcVar36[2]" (identifier "pcVar36") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)(iVar33 >> 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar33 >> 0xb)" (( "(") (binary_expression "iVar33 >> 0xb" (identifier "iVar33") (>> ">>") (number_literal "0xb")) () ")")))) (; ";")) (expression_statement "iVar5 = iVar31 + -1;" (assignment_expression "iVar5 = iVar31 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar31 + -1" (identifier "iVar31") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pcVar6 = pcVar34;" (assignment_expression "pcVar6 = pcVar34" (identifier "pcVar6") (= "=") (identifier "pcVar34")) (; ";")) (if_statement "if (iVar31 != 0) {\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }" (if "if") (parenthesized_expression "(iVar31 != 0)" (( "(") (binary_expression "iVar31 != 0" (identifier "iVar31") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);\n    pcVar34 = pcVar34 + iVar31;\n  }" ({ "{") (do_statement "do {\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    } while (iVar25 != -1);" (do "do") (compound_statement "{\n      iVar25 = iVar5 + -1;\n      cVar12 = bignum_byte(puVar15[2],iVar5);\n      *pcVar6 = cVar12;\n      iVar5 = iVar25;\n      pcVar6 = pcVar6 + 1;\n    }" ({ "{") (expression_statement "iVar25 = iVar5 + -1;" (assignment_expression "iVar25 = iVar5 + -1" (identifier "iVar25") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar12 = bignum_byte(puVar15[2],iVar5);" (assignment_expression "cVar12 = bignum_byte(puVar15[2],iVar5)" (identifier "cVar12") (= "=") (call_expression "bignum_byte(puVar15[2],iVar5)" (identifier "bignum_byte") (argument_list "(puVar15[2],iVar5)" (( "(") (subscript_expression "puVar15[2]" (identifier "puVar15") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "iVar5") () ")")))) (; ";")) (expression_statement "*pcVar6 = cVar12;" (assignment_expression "*pcVar6 = cVar12" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (= "=") (identifier "cVar12")) (; ";")) (expression_statement "iVar5 = iVar25;" (assignment_expression "iVar5 = iVar25" (identifier "iVar5") (= "=") (identifier "iVar25")) (; ";")) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + 1" (identifier "pcVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar25 != -1)" (( "(") (binary_expression "iVar25 != -1" (identifier "iVar25") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "pcVar34 = pcVar34 + iVar31;" (assignment_expression "pcVar34 = pcVar34 + iVar31" (identifier "pcVar34") (= "=") (binary_expression "pcVar34 + iVar31" (identifier "pcVar34") (+ "+") (identifier "iVar31"))) (; ";")) (} "}"))) (if_statement "if (pcVar34 != pcVar35 + iVar27) {\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }" (if "if") (parenthesized_expression "(pcVar34 != pcVar35 + iVar27)" (( "(") (binary_expression "pcVar34 != pcVar35 + iVar27" (identifier "pcVar34") (!= "!=") (binary_expression "pcVar35 + iVar27" (identifier "pcVar35") (+ "+") (identifier "iVar27"))) () ")")) (compound_statement "{\n    piVar19 = (int *)&DAT_00000288;\n    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);\n    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);\n    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);\n    (**(code **)(pcVar38 + 0x2befc))();\n    iVar5 = *piVar7;\n    *piVar19 = 0;\n    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }\n    return (char *)(uint)(iVar5 < 4);\n  }" ({ "{") (expression_statement "piVar19 = (int *)&DAT_00000288;" (assignment_expression "piVar19 = (int *)&DAT_00000288" (identifier "piVar19") (= "=") (cast_expression "(int *)&DAT_00000288" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000288" (& "&") (identifier "DAT_00000288")))) (; ";")) (expression_statement "piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);" (assignment_expression "piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570)" (identifier "piVar24") (= "=") (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x7570)" (( "(") (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x7570" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" (* "*") (cast_expression "(int *)(pcVar38 + 0x2baec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar38 + 0x2baec)" (( "(") (binary_expression "pcVar38 + 0x2baec" (identifier "pcVar38") (+ "+") (number_literal "0x2baec")) () ")")))) (+ "+") (number_literal "0x7570")) () ")")))) (; ";")) (expression_statement "piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);" (assignment_expression "piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480)" (identifier "piVar7") (= "=") (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x7480)" (( "(") (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x7480" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" (* "*") (cast_expression "(int *)(pcVar38 + 0x2baec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar38 + 0x2baec)" (( "(") (binary_expression "pcVar38 + 0x2baec" (identifier "pcVar38") (+ "+") (number_literal "0x2baec")) () ")")))) (+ "+") (number_literal "0x7480")) () ")")))) (; ";")) (expression_statement "piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);" (assignment_expression "piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c)" (identifier "piVar14") (= "=") (cast_expression "(int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar38 + 0x2baec) + 0x311c)" (( "(") (binary_expression "*(int *)(pcVar38 + 0x2baec) + 0x311c" (pointer_expression "*(int *)(pcVar38 + 0x2baec)" (* "*") (cast_expression "(int *)(pcVar38 + 0x2baec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar38 + 0x2baec)" (( "(") (binary_expression "pcVar38 + 0x2baec" (identifier "pcVar38") (+ "+") (number_literal "0x2baec")) () ")")))) (+ "+") (number_literal "0x311c")) () ")")))) (; ";")) (expression_statement "(**(code **)(pcVar38 + 0x2befc))();" (call_expression "(**(code **)(pcVar38 + 0x2befc))()" (parenthesized_expression "(**(code **)(pcVar38 + 0x2befc))" (( "(") (pointer_expression "**(code **)(pcVar38 + 0x2befc)" (* "*") (pointer_expression "*(code **)(pcVar38 + 0x2befc)" (* "*") (cast_expression "(code **)(pcVar38 + 0x2befc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar38 + 0x2befc)" (( "(") (binary_expression "pcVar38 + 0x2befc" (identifier "pcVar38") (+ "+") (number_literal "0x2befc")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = *piVar7;" (assignment_expression "iVar5 = *piVar7" (identifier "iVar5") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "*piVar19 = 0;" (assignment_expression "*piVar19 = 0" (pointer_expression "*piVar19" (* "*") (identifier "piVar19")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }" (if "if") (parenthesized_expression "((char *)(uint)(iVar5 < 4) == (char *)0x0)" (( "(") (binary_expression "(char *)(uint)(iVar5 < 4) == (char *)0x0" (cast_expression "(char *)(uint)(iVar5 < 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar5 < 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 < 4)" (( "(") (binary_expression "iVar5 < 4" (identifier "iVar5") (< "<") (number_literal "4")) () ")")))) (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);\n      *piVar24 = (int)pcVar6;\n      if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }\n      return pcVar6;\n    }" ({ "{") (expression_statement "pcVar6 = (char *)toint(*(undefined4 *)*piVar14);" (assignment_expression "pcVar6 = (char *)toint(*(undefined4 *)*piVar14)" (identifier "pcVar6") (= "=") (cast_expression "(char *)toint(*(undefined4 *)*piVar14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "toint(*(undefined4 *)*piVar14)" (identifier "toint") (argument_list "(*(undefined4 *)*piVar14)" (( "(") (pointer_expression "*(undefined4 *)*piVar14" (* "*") (cast_expression "(undefined4 *)*piVar14" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar14" (* "*") (identifier "piVar14")))) () ")"))))) (; ";")) (expression_statement "*piVar24 = (int)pcVar6;" (assignment_expression "*piVar24 = (int)pcVar6" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) (; ";")) (if_statement "if (-1 < (int)pcVar6) {\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }" (if "if") (parenthesized_expression "(-1 < (int)pcVar6)" (( "(") (binary_expression "-1 < (int)pcVar6" (number_literal "-1") (< "<") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) () ")")) (compound_statement "{\n        pcVar6 = (char *)(*piVar7 + -4);\n        iVar5 = *piVar14 + 4;\n        *piVar7 = (int)pcVar6;\n        *piVar14 = iVar5;\n        iVar25 = *piVar24;\n        if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }\n      }" ({ "{") (expression_statement "pcVar6 = (char *)(*piVar7 + -4);" (assignment_expression "pcVar6 = (char *)(*piVar7 + -4)" (identifier "pcVar6") (= "=") (cast_expression "(char *)(*piVar7 + -4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar7 + -4)" (( "(") (binary_expression "*piVar7 + -4" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "iVar5 = *piVar14 + 4;" (assignment_expression "iVar5 = *piVar14 + 4" (identifier "iVar5") (= "=") (binary_expression "*piVar14 + 4" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*piVar7 = (int)pcVar6;" (assignment_expression "*piVar7 = (int)pcVar6" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) (; ";")) (expression_statement "*piVar14 = iVar5;" (assignment_expression "*piVar14 = iVar5" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar25 = *piVar24;" (assignment_expression "iVar25 = *piVar24" (identifier "iVar25") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (if_statement "if (iVar25 <= (int)pcVar6) {\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }" (if "if") (parenthesized_expression "(iVar25 <= (int)pcVar6)" (( "(") (binary_expression "iVar25 <= (int)pcVar6" (identifier "iVar25") (<= "<=") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) () ")")) (compound_statement "{\n          *piVar19 = iVar5;\n          pcVar6 = pcVar6 + -iVar25;\n          *piVar14 = iVar5 + iVar25;\n          *piVar7 = (int)pcVar6;\n        }" ({ "{") (expression_statement "*piVar19 = iVar5;" (assignment_expression "*piVar19 = iVar5" (pointer_expression "*piVar19" (* "*") (identifier "piVar19")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "pcVar6 = pcVar6 + -iVar25;" (assignment_expression "pcVar6 = pcVar6 + -iVar25" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + -iVar25" (identifier "pcVar6") (+ "+") (unary_expression "-iVar25" (- "-") (identifier "iVar25")))) (; ";")) (expression_statement "*piVar14 = iVar5 + iVar25;" (assignment_expression "*piVar14 = iVar5 + iVar25" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (binary_expression "iVar5 + iVar25" (identifier "iVar5") (+ "+") (identifier "iVar25"))) (; ";")) (expression_statement "*piVar7 = (int)pcVar6;" (assignment_expression "*piVar7 = (int)pcVar6" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return pcVar6;" (return "return") (identifier "pcVar6") (; ";")) (} "}"))) (return_statement "return (char *)(uint)(iVar5 < 4);" (return "return") (cast_expression "(char *)(uint)(iVar5 < 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar5 < 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 < 4)" (( "(") (binary_expression "iVar5 < 4" (identifier "iVar5") (< "<") (number_literal "4")) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)pbVar17 = iVar27;" (assignment_expression "*(int *)pbVar17 = iVar27" (pointer_expression "*(int *)pbVar17" (* "*") (cast_expression "(int *)pbVar17" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar17"))) (= "=") (identifier "iVar27")) (; ";")) (return_statement "return pcVar35;" (return "return") (identifier "pcVar35") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (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: (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: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (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) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (field_expression argument: (identifier) field: (field_identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (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: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (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: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (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: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)) right: (identifier)))))) (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: (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) (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (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: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (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: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (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: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (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: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_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: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (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) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) arguments: (argument_list))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (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) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (number_literal) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (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: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (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: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (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: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (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: (unary_expression argument: (identifier)))))) right: (binary_expression left: (binary_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: (unary_expression argument: (identifier)))))) right: (binary_expression left: (number_literal) right: (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (number_literal)))) right: (binary_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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (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: (unary_expression argument: (identifier)))))) right: (binary_expression left: (binary_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: (unary_expression argument: (identifier)))))) right: (binary_expression left: (number_literal) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (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: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (return_statement (identifier)))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (return_statement (identifier)))))

char * MASKED(undefined4 param_1,undefined4 param_2)

{
  byte bVar1;
  char cVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  undefined1 uVar11;
  char *pcVar6;
  char cVar12;
  int *piVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined *puVar10;
  undefined4 *puVar13;
  int *piVar14;
  undefined4 *puVar15;
  byte *pbVar16;
  byte *pbVar17;
  undefined4 uVar18;
  int *piVar19;
  byte *pbVar20;
  byte *pbVar21;
  byte *pbVar22;
  uint uVar23;
  int *piVar24;
  int iVar25;
  int iVar26;
  int iVar27;
  int iVar28;
  int iVar29;
  int iVar30;
  int iVar31;
  char *pcVar32;
  int iVar33;
  char *pcVar34;
  char *pcVar35;
  char *pcVar36;
  char *pcVar37;
  code *pcVar38;
  code *pcVar39;
  int iStack_f8;
  byte abStack_f4 [64];
  char *pcStack_b4;
  int *piStack_b0;
  int iStack_ac;
  int iStack_a8;
  char *pcStack_a4;
  char *pcStack_a0;
  char *pcStack_9c;
  char *pcStack_98;
  char *pcStack_94;
  int iStack_90;
  code *pcStack_8c;
  undefined *local_78;
  char *local_70;
  char *local_6c;
  int local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined *local_5c;
  int *local_58;
  int local_54;
  int local_28;
  char *local_24;
  
  puVar10 = PTR___stack_chk_guard_0006a594;
  local_24 = *(char **)PTR___stack_chk_guard_0006a594;
  iVar5 = bignum_bitcount(param_2);
  iVar25 = iVar5 + 8;
  if (iVar25 < 0) {
    iVar25 = iVar5 + 0xf;
  }
  local_28 = iVar25 >> 3;
  SHA512_Bytes(param_1,&local_28,4);
  iVar26 = (iVar25 >> 3) + -1;
  iVar25 = iVar26;
  if (-1 < iVar5) {
    do {
      iVar26 = iVar25;
      uVar11 = bignum_byte(param_2,iVar26);
      local_28 = CONCAT13(uVar11,local_28._1_3_);
      SHA512_Bytes(param_1,&local_28,1);
      iVar25 = iVar26 + -1;
    } while (0 < iVar26);
  }
  puVar15 = (undefined4 *)&DAT_00000004;
  piVar14 = &local_28;
  smemclr();
  pcVar6 = *(char **)puVar10;
  if (local_24 == pcVar6) {
    return pcVar6;
  }
  puVar8 = PTR___stack_chk_fail_0006a574;
  (*(code *)PTR___stack_chk_fail_0006a574)();
  local_78 = puVar8 + 0x33f18;
  local_5c = puVar10;
  local_68 = iVar26;
  local_64 = param_1;
  local_60 = param_2;
  local_58 = &local_28;
  local_54 = iVar5;
  iVar5 = bignum_bitcount(piVar14[4]);
  iVar25 = iVar5 + 8;
  if (iVar25 < 0) {
    iVar25 = iVar5 + 0xf;
  }
  iVar33 = iVar25 >> 3;
  iVar5 = bignum_bitcount(piVar14[5]);
  iVar26 = iVar5 + 8;
  if (iVar26 < 0) {
    iVar26 = iVar5 + 0xf;
  }
  iVar31 = iVar26 >> 3;
  iVar5 = bignum_bitcount(piVar14[6]);
  iVar29 = iVar5 + 8;
  if (iVar29 < 0) {
    iVar29 = iVar5 + 0xf;
  }
  iVar30 = iVar29 >> 3;
  iVar5 = bignum_bitcount(piVar14[7]);
  iVar27 = iVar5 + 8;
  if (iVar27 < 0) {
    iVar27 = iVar5 + 0xf;
  }
  iVar28 = iVar27 >> 3;
  pcVar35 = (char *)(iVar33 + 0x10 + iVar31 + iVar30);
  iVar5 = iVar33 + -1;
  local_70 = pcVar35 + iVar28;
  local_6c = (char *)safemalloc(local_70,1);
  *local_6c = (char)(iVar25 >> 0x1b);
  local_6c[1] = (char)(iVar25 >> 0x13);
  pcVar36 = local_6c + 4;
  local_6c[2] = (char)(iVar25 >> 0xb);
  local_6c[3] = (char)iVar33;
  pcVar6 = pcVar36;
  if (iVar33 != 0) {
    do {
      pcVar35 = pcVar6 + 1;
      iVar25 = iVar5 + -1;
      cVar12 = bignum_byte(piVar14[4],iVar5);
      *pcVar6 = cVar12;
      pcVar6 = pcVar35;
      iVar5 = iVar25;
    } while (iVar25 != -1);
    pcVar36 = pcVar36 + iVar33;
    iVar5 = -1;
  }
  pcVar36[3] = (char)iVar31;
  *pcVar36 = (char)(iVar26 >> 0x1b);
  pcVar36[1] = (char)(iVar26 >> 0x13);
  pcVar34 = pcVar36 + 4;
  pcVar36[2] = (char)(iVar26 >> 0xb);
  pcVar6 = (char *)(iVar31 + -1);
  pcVar36 = pcVar34;
  if (iVar31 != 0) {
    do {
      pcVar35 = pcVar36 + 1;
      pcVar37 = pcVar6 + -1;
      cVar12 = bignum_byte(piVar14[5],pcVar6);
      *pcVar36 = cVar12;
      pcVar36 = pcVar35;
      pcVar6 = pcVar37;
    } while (pcVar37 != (char *)0xffffffff);
    pcVar34 = pcVar34 + iVar31;
    pcVar6 = (char *)0xffffffff;
  }
  pcVar34[3] = (char)iVar30;
  *pcVar34 = (char)(iVar29 >> 0x1b);
  pcVar34[1] = (char)(iVar29 >> 0x13);
  pcVar37 = pcVar34 + 4;
  pcVar34[2] = (char)(iVar29 >> 0xb);
  pcVar36 = (char *)(iVar30 + -1);
  pcVar34 = pcVar37;
  if (iVar30 != 0) {
    do {
      pcVar6 = pcVar34 + 1;
      pcVar32 = pcVar36 + -1;
      cVar12 = bignum_byte(piVar14[6],pcVar36);
      *pcVar34 = cVar12;
      pcVar36 = pcVar32;
      pcVar34 = pcVar6;
    } while (pcVar32 != (char *)0xffffffff);
    pcVar37 = pcVar37 + iVar30;
    pcVar36 = (char *)0xffffffff;
  }
  pcVar37[3] = (char)iVar28;
  *pcVar37 = (char)(iVar27 >> 0x1b);
  pcVar37[1] = (char)(iVar27 >> 0x13);
  pcVar34 = pcVar37 + 4;
  pcVar37[2] = (char)(iVar27 >> 0xb);
  iStack_a8 = iVar28 + -1;
  if (iVar28 != 0) {
    pcVar37 = (char *)0xffffffff;
    pcVar32 = pcVar34;
    do {
      pcVar36 = pcVar32 + 1;
      iVar25 = iStack_a8 + -1;
      cVar12 = bignum_byte(piVar14[7],iStack_a8);
      *pcVar32 = cVar12;
      iStack_a8 = iVar25;
      pcVar32 = pcVar36;
    } while (iVar25 != -1);
    pcVar34 = pcVar34 + iVar28;
    iStack_a8 = -1;
  }
  if (pcVar34 == local_6c + (int)local_70) {
    *puVar15 = local_70;
    return local_6c;
  }
  uVar18 = 0x2b0;
  pcVar38 = *(code **)(local_78 + -0x7bb8);
  pbVar20 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7584);
  pbVar16 = (byte *)(*(int *)(local_78 + -0x7fc8) + 0x7480);
  pcVar39 = FUN_0003e3e0;
  puVar13 = (undefined4 *)(*(int *)(local_78 + -0x7fc8) + 0x311c);
  (*pcVar38)();
  piVar7 = *(int **)(pcVar38 + 0x2c1b4);
  pcStack_b4 = (char *)*piVar7;
  puVar15 = puVar13;
  pbVar17 = pbVar16;
  piStack_b0 = piVar14;
  iStack_ac = iVar28;
  pcStack_a4 = pcVar36;
  pcStack_a0 = pcVar34;
  pcStack_9c = pcVar35;
  pcStack_98 = pcVar37;
  pcStack_94 = pcVar6;
  iStack_90 = iVar5;
  pcStack_8c = pcVar39;
  if (0 < (int)local_78) {
    puVar8 = (undefined *)puVar13[5];
    puVar10 = puVar8;
    if ((int)local_78 <= (int)puVar8) {
      puVar10 = local_78;
    }
    if ((int)puVar8 < 0x41) {
      pbVar17 = pbVar20;
      puVar8 = local_78;
      iVar5 = 0;
      do {
        iStack_f8 = iVar5;
        puVar15 = (undefined4 *)(*(code *)*puVar13)();
        (*(code *)puVar13[2])(puVar15,pbVar16,uVar18);
        (*(code *)puVar13[2])(puVar15,&iStack_f8,4);
        (*(code *)puVar13[3])(puVar15,abStack_f4);
        if (0 < (int)puVar10) {
          pbVar20 = abStack_f4;
          pbVar21 = pbVar17;
          do {
            pbVar22 = pbVar21 + 1;
            bVar1 = *pbVar20;
            puVar15 = (undefined4 *)(uint)bVar1;
            pbVar20 = pbVar20 + 1;
            *pbVar21 = *pbVar21 ^ bVar1;
            pbVar21 = pbVar22;
          } while (pbVar17 + (int)puVar10 != pbVar22);
        }
        pbVar17 = puVar10 + (int)pbVar17;
        puVar8 = puVar8 + -(int)puVar10;
        if ((int)puVar8 < 1) goto LAB_0003e530;
        puVar9 = (undefined *)puVar13[5];
        puVar10 = puVar9;
        if ((int)puVar8 < (int)puVar9) {
          puVar10 = puVar8;
        }
        iVar5 = iVar5 + 1;
      } while ((int)puVar9 < 0x41);
    }
    pbVar17 = (byte *)(*(int *)(pcVar38 + 0x2bc88) + 0x7480);
    puVar15 = (undefined4 *)(*(int *)(pcVar38 + 0x2bc88) + 0x748c);
    (**(code **)(pcVar38 + 0x2c098))(puVar15,pbVar17,0x3be,*(int *)(pcVar38 + 0x2bc88) + 0x7550);
  }
LAB_0003e530:
  pcVar6 = (char *)*piVar7;
  if (pcStack_b4 == pcVar6) {
    return pcVar6;
  }
  pcVar38 = *(code **)(pcVar38 + 0x2c194);
  (*pcVar38)();
  iVar5 = bignum_bitcount(puVar15[3]);
  iVar25 = iVar5 + 8;
  if (iVar25 < 0) {
    iVar25 = iVar5 + 0xf;
  }
  iVar26 = iVar25 >> 3;
  iVar5 = bignum_bitcount(puVar15[2]);
  iVar33 = iVar5 + 8;
  if (iVar33 < 0) {
    iVar33 = iVar5 + 0xf;
  }
  iVar31 = iVar33 >> 3;
  iVar27 = iVar26 + 0x13 + iVar31;
  iVar5 = iVar26 + -1;
  pcVar35 = (char *)safemalloc(iVar27,1);
  pcVar35[3] = '\a';
  *pcVar35 = '\0';
  iVar29 = *(int *)(pcVar38 + 0x2baec);
  pcVar35[1] = '\0';
  pcVar36 = pcVar35 + 0xf;
  pcVar35[2] = '\0';
  uVar23 = *(uint *)(iVar29 + -0x1ac0);
  cVar12 = *(char *)(iVar29 + -0x1abc);
  cVar2 = *(char *)(iVar29 + -0x1abb);
  cVar3 = *(char *)(iVar29 + -0x1aba);
  pcVar6 = pcVar35 + 4;
  uVar4 = (uint)pcVar6 & 3;
  *(uint *)(pcVar6 + -uVar4) =
       *(uint *)(pcVar6 + -uVar4) & -1 << (4 - uVar4) * 8 | uVar23 >> uVar4 * 8;
  pcVar6 = pcVar35 + 7;
  uVar4 = (uint)pcVar6 & 3;
  *(uint *)(pcVar6 + -uVar4) =
       *(uint *)(pcVar6 + -uVar4) & 0xffffffffU >> (uVar4 + 1) * 8 | uVar23 << (3 - uVar4) * 8;
  pcVar35[8] = cVar12;
  pcVar35[9] = cVar2;
  pcVar35[10] = cVar3;
  pcVar35[0xb] = (char)(iVar25 >> 0x1b);
  pcVar35[0xc] = (char)(iVar25 >> 0x13);
  pcVar35[0xd] = (char)(iVar25 >> 0xb);
  pcVar35[0xe] = (char)iVar26;
  pcVar6 = pcVar36;
  if (iVar26 != 0) {
    do {
      iVar25 = iVar5 + -1;
      cVar12 = bignum_byte(puVar15[3],iVar5);
      *pcVar6 = cVar12;
      iVar5 = iVar25;
      pcVar6 = pcVar6 + 1;
    } while (iVar25 != -1);
    pcVar36 = pcVar36 + iVar26;
  }
  pcVar36[3] = (char)iVar31;
  *pcVar36 = (char)(iVar33 >> 0x1b);
  pcVar36[1] = (char)(iVar33 >> 0x13);
  pcVar34 = pcVar36 + 4;
  pcVar36[2] = (char)(iVar33 >> 0xb);
  iVar5 = iVar31 + -1;
  pcVar6 = pcVar34;
  if (iVar31 != 0) {
    do {
      iVar25 = iVar5 + -1;
      cVar12 = bignum_byte(puVar15[2],iVar5);
      *pcVar6 = cVar12;
      iVar5 = iVar25;
      pcVar6 = pcVar6 + 1;
    } while (iVar25 != -1);
    pcVar34 = pcVar34 + iVar31;
  }
  if (pcVar34 != pcVar35 + iVar27) {
    piVar19 = (int *)&DAT_00000288;
    piVar24 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7570);
    piVar7 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x7480);
    piVar14 = (int *)(*(int *)(pcVar38 + 0x2baec) + 0x311c);
    (**(code **)(pcVar38 + 0x2befc))();
    iVar5 = *piVar7;
    *piVar19 = 0;
    if ((char *)(uint)(iVar5 < 4) == (char *)0x0) {
      pcVar6 = (char *)toint(*(undefined4 *)*piVar14);
      *piVar24 = (int)pcVar6;
      if (-1 < (int)pcVar6) {
        pcVar6 = (char *)(*piVar7 + -4);
        iVar5 = *piVar14 + 4;
        *piVar7 = (int)pcVar6;
        *piVar14 = iVar5;
        iVar25 = *piVar24;
        if (iVar25 <= (int)pcVar6) {
          *piVar19 = iVar5;
          pcVar6 = pcVar6 + -iVar25;
          *piVar14 = iVar5 + iVar25;
          *piVar7 = (int)pcVar6;
        }
      }
      return pcVar6;
    }
    return (char *)(uint)(iVar5 < 4);
  }
  *(int *)pbVar17 = iVar27;
  return pcVar35;
}

