
Bignum rsa_privkey_op(Bignum input,RSAKey *key)

{
  Bignum_conflict bn;
  SHA512_State ss;
  uchar seqbuf [4];
  uchar digest512 [64];
  
  bn = copybn((Bignum_conflict)key->modulus);
                    /* WARNING: Subroutine does not return */
  bignum_bitcount(bn);
}



undefined1 * FUN_000819b0(undefined4 param_1,int param_2)

{
  undefined1 uVar1;
  undefined1 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined1 *puVar8;
  undefined1 *puVar9;
  undefined1 uVar10;
  undefined *puVar11;
  code *pcVar12;
  undefined1 *puVar13;
  uint uVar14;
  undefined4 uVar15;
  int *piVar16;
  int *piVar17;
  int iVar18;
  int iVar19;
  int *piVar20;
  uint uVar21;
  undefined *puVar22;
  int iVar23;
  uint unaff_s7;
  undefined *puVar24;
  undefined4 uVar25;
  int local_1b8 [5];
  int local_1a4 [2];
  undefined4 local_19c;
  undefined4 local_198;
  undefined4 local_194;
  undefined4 local_190;
  undefined *local_18c;
  int local_188;
  undefined4 local_184;
  uint local_180;
  undefined4 local_17c;
  undefined4 local_168;
  undefined4 local_164;
  SHA512_CTX SStack_144;
  byte abStack_6c [64];
  int local_2c;
  
  puVar24 = PTR___stack_chk_guard_00112630;
  puVar22 = PTR_Zero_00111978;
  local_2c = *(int *)PTR___stack_chk_guard_00112630;
  puVar11 = PTR_DAT_001112f8 + 0x3d60;
  uVar21 = 0;
  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);
  iVar18 = 0x40;
  while( true ) {
    uVar3 = copybn(*(undefined4 *)(param_2 + 8));
    iVar4 = bignum_bitcount(uVar3);
    iVar23 = iVar4 + -1;
    if (iVar4 != 0) {
      iVar4 = 0;
      unaff_s7 = 0;
      do {
        if (iVar4 == 0) {
          if (iVar18 == 0x40) {
            uVar14 = uVar21 + 1;
            SStack_144.md_len = uVar21;
            SHA512_Init(&SStack_144);
            SHA512_Bytes(&SStack_144,puVar11,0x1a);
            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);
            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));
            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);
            SHA512_Init(&SStack_144);
            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);
            (*pcVar12)(&SStack_144,param_1);
            iVar19 = 1;
            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);
            iVar18 = 0;
          }
          else {
            iVar19 = iVar18 + 1;
            uVar14 = uVar21;
          }
          iVar4 = 7;
          unaff_s7 = (uint)abStack_6c[iVar18];
          iVar18 = iVar19;
          uVar21 = uVar14;
        }
        else {
          iVar4 = iVar4 + -1;
        }
        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);
        iVar23 = iVar23 + -1;
        unaff_s7 = (int)unaff_s7 >> 1;
      } while (iVar23 != -1);
    }
    bn_restore_invariant(uVar3);
    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);
    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&
       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;
    freebn(uVar3);
  }
  local_164 = *(undefined4 *)(param_2 + 0x1c);
  local_168 = *(undefined4 *)(param_2 + 0x18);
  puVar22 = PTR_crt_modpow_00111aac;
  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),
                     *(undefined4 *)(param_2 + 0x14));
  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));
  local_164 = *(undefined4 *)(param_2 + 0x1c);
  local_168 = *(undefined4 *)(param_2 + 0x18);
  piVar17 = *(int **)(param_2 + 0x14);
  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));
  uVar15 = *(undefined4 *)(param_2 + 8);
  iVar18 = iVar4;
  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);
  freebn(uVar7);
  freebn(uVar6);
  freebn(iVar4);
  freebn(uVar5);
  freebn(uVar3);
  if (local_2c != *(int *)puVar24) {
    uVar25 = 0x81d2c;
    iVar4 = local_2c;
    puVar24 = PTR___stack_chk_fail_001122c8;
    (*(code *)PTR___stack_chk_fail_001122c8)();
    piVar20 = *(int **)(puVar24 + 0x90904);
    piVar16 = local_1b8;
    local_1a4[0] = *piVar20;
    local_19c = uVar3;
    local_198 = uVar5;
    local_194 = uVar7;
    local_190 = uVar6;
    local_18c = puVar22;
    local_188 = iVar23;
    local_184 = param_1;
    local_180 = unaff_s7;
    local_17c = uVar25;
    SHA_Simple(iVar18,uVar15,piVar16);
    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));
    iVar23 = iVar18 + -1;
    if (iVar23 < 0) {
      iVar23 = iVar18 + 6;
    }
    iVar23 = iVar23 >> 3;
    if (0x128 < iVar18) {
      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);
      iVar18 = iVar23 + -0x24;
      *puVar8 = 1;
      if (1 < iVar18) {
        puVar9 = puVar8 + 1;
        do {
          *puVar9 = 0xff;
          puVar9 = puVar9 + 1;
        } while (puVar9 != puVar8 + iVar18);
      }
      puVar13 = puVar8 + iVar18;
      iVar18 = *(int *)(puVar24 + 0x8f5cc);
      uVar10 = 0;
      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);
      while( true ) {
        *puVar13 = uVar10;
        puVar13 = puVar13 + 1;
        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;
        uVar10 = *puVar9;
        puVar9 = puVar9 + 1;
      }
      puVar9 = puVar8 + iVar23 + -0x14;
      do {
        uVar10 = *(undefined1 *)piVar16;
        piVar16 = (int *)((int)piVar16 + 1);
        *puVar9 = uVar10;
        puVar9 = puVar9 + 1;
      } while (piVar16 != local_1a4);
      uVar3 = bignum_from_bytes(puVar8,iVar23);
      (**(code **)(puVar24 + 0x8f5c4))(puVar8);
      uVar5 = FUN_000819b0(uVar3,iVar4);
      freebn(uVar3);
      iVar18 = bignum_bitcount(uVar5);
      iVar4 = iVar18 + 7;
      if (iVar4 < 0) {
        iVar4 = iVar18 + 0xe;
      }
      iVar19 = iVar4 >> 3;
      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);
      puVar9[3] = 7;
      *puVar9 = 0;
      iVar23 = *(int *)(puVar24 + 0x8f5cc);
      puVar9[1] = 0;
      puVar9[2] = 0;
      uVar14 = *(uint *)(iVar23 + -0x52f0);
      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);
      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);
      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);
      puVar8 = puVar9 + 4;
      uVar21 = (uint)puVar8 & 3;
      *(uint *)(puVar8 + -uVar21) =
           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;
      puVar8 = puVar9 + 7;
      uVar21 = (uint)puVar8 & 3;
      *(uint *)(puVar8 + -uVar21) =
           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |
           uVar14 << (3 - uVar21) * 8;
      puVar9[8] = uVar10;
      puVar9[9] = uVar1;
      puVar9[10] = uVar2;
      puVar9[0xb] = (char)(iVar4 >> 0x1b);
      puVar9[0xc] = (char)(iVar4 >> 0x13);
      puVar9[0xd] = (char)(iVar4 >> 0xb);
      puVar9[0xe] = (char)iVar19;
      if (0 < iVar18) {
        iVar18 = 0;
        do {
          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);
          iVar4 = iVar18 + 1;
          puVar9[iVar18 + 0xf] = uVar10;
          iVar18 = iVar4;
        } while (iVar4 < iVar19);
      }
      freebn(uVar5);
      iVar18 = *piVar20;
      *piVar17 = iVar19 + 0xf;
      if (local_1a4[0] == iVar18) {
        return puVar9;
      }
      (**(code **)(puVar24 + 0x9059c))();
    }
    (**(code **)(puVar24 + 0x90224))
              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,
               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);
    puVar8 = (undefined1 *)FUN_000819b0();
    return puVar8;
  }
  return puVar8;
}


lui gp,0x9
addiu gp,gp,0x7900
addu gp,gp,t9
addiu sp,sp,-0x178
lw v0,-0x6c80(gp)
lw v1,-0x7938(gp)
sw s5,0x164(sp)
sw s4,0x160(sp)
sw v1,0x28(sp)
sw v0,0x2c(sp)
lw s5,-0x7fb8(gp)
lw s4,-0x7888(gp)
lw v0,0x0(v0)
addiu v1,s5,0x3d60
sw s3,0x15c(sp)
sw s1,0x154(sp)
or s3,zero,zero
sw v1,0x24(sp)
addiu v1,s4,0x280
li s1,0x40
sw s6,0x168(sp)
sw s2,0x158(sp)
or s6,a0,zero
sw gp,0x18(sp)
or s2,a1,zero
sw ra,0x174(sp)
sw s8,0x170(sp)
sw s7,0x16c(sp)
sw s0,0x150(sp)
sw v1,0x20(sp)
sw v0,0x14c(sp)
lw t9,-0x793c(gp)
bal 0x00067950
_lw a0,0x8(s2)
lw gp,0x18(sp)
or a0,v0,zero
lw t9,-0x7b50(gp)
bal 0x000682a8
_or s0,v0,zero
lw gp,0x18(sp)
beq v0,zero,0x00081b80
_addiu s5,v0,-0x1
or s4,zero,zero
or s7,zero,zero
b 0x00081a94
_addiu s8,sp,0x34
addiu s4,s4,-0x1
lw t9,-0x7a40(gp)
andi a2,s7,0x1
or a1,s5,zero
bal 0x000684ac
_or a0,s0,zero
addiu s5,s5,-0x1
li a0,-0x1
lw gp,0x18(sp)
beq s5,a0,0x00081b80
_sra s7,s7,0x1
bne s4,zero,0x00081a68
_li v0,0x40
beq s1,v0,0x00081ac0
_lw t9,-0x78dc(gp)
or s4,s1,zero
addiu s1,s1,0x1
addiu v0,sp,0x150
addu v0,v0,s4
li s4,0x7
b 0x00081a6c
_lbu s7,-0x44(v0)
or a0,s8,zero
sw s3,0x108(sp)
addiu s1,sp,0x10c
bal 0x000847e8
_addiu s3,s3,0x1
li a2,0x1a
lw gp,0x18(sp)
or a0,s8,zero
lw t9,-0x78d8(gp)
bal 0x00084888
_lw a1,0x24(sp)
li a2,0x4
lw gp,0x18(sp)
addiu a1,sp,0x108
lw t9,-0x78d8(gp)
bal 0x00084888
_or a0,s8,zero
or a0,s8,zero
lw t9,0x20(sp)
jalr t9
_lw a1,0x10(s2)
or a1,s1,zero
lw gp,0x18(sp)
lw t9,-0x78d4(gp)
bal 0x00085c98
_or a0,s8,zero
lw gp,0x18(sp)
lw t9,-0x78dc(gp)
bal 0x000847e8
_or a0,s8,zero
li a2,0x40
lw gp,0x18(sp)
or a1,s1,zero
lw t9,-0x78d8(gp)
bal 0x00084888
_or a0,s8,zero
or a1,s6,zero
lw t9,0x20(sp)
jalr t9
_or a0,s8,zero
or a1,s1,zero
lw gp,0x18(sp)
or a0,s8,zero
lw t9,-0x78d4(gp)
bal 0x00085c98
_li s1,0x1
b 0x00081aac
_lw gp,0x18(sp)
lw t9,-0x78b8(gp)
bal 0x00067908
_or a0,s0,zero
or a0,s0,zero
lw gp,0x18(sp)
lw v0,0x28(sp)
lw t9,-0x7944(gp)
bal 0x000686d8
_lw a1,0x0(v0)
blez v0,0x00081d0c
_lw gp,0x18(sp)
lw t9,-0x7944(gp)
or a0,s0,zero
bal 0x000686d8
_lw a1,0x8(s2)
bgez v0,0x00081d0c
_lw gp,0x18(sp)
lw t9,-0x791c(gp)
or a0,s0,zero
bal 0x0006a16c
_lw a1,0x8(s2)
lw gp,0x18(sp)
beq v0,zero,0x00081d0c
_or s8,v0,zero
lw t0,0x1c(s2)
or a0,s0,zero
lw v0,0x18(s2)
lw s4,-0x7804(gp)
lw a3,0x14(s2)
lw a2,0x8(s2)
lw a1,0xc(s2)
or t9,s4,zero
sw t0,0x14(sp)
bal 0x00081748
_sw v0,0x10(sp)
or a0,s6,zero
lw gp,0x18(sp)
or a1,v0,zero
lw a2,0x8(s2)
lw t9,-0x7918(gp)
bal 0x00067a14
_or s1,v0,zero
or t9,s4,zero
lw t0,0x1c(s2)
or s3,v0,zero
lw v0,0x18(s2)
or a0,s3,zero
lw a3,0x14(s2)
lw a2,0x8(s2)
lw a1,0x10(s2)
sw t0,0x14(sp)
bal 0x00081748
_sw v0,0x10(sp)
or a1,s8,zero
lw gp,0x18(sp)
or a0,v0,zero
lw a2,0x8(s2)
lw t9,-0x7918(gp)
bal 0x00067a14
_or s2,v0,zero
or a0,s2,zero
lw gp,0x18(sp)
lw t9,-0x7a34(gp)
bal 0x000679c4
_sw v0,0x20(sp)
lw gp,0x18(sp)
lw t9,-0x7a34(gp)
bal 0x000679c4
_or a0,s3,zero
lw gp,0x18(sp)
lw t9,-0x7a34(gp)
bal 0x000679c4
_or a0,s8,zero
lw gp,0x18(sp)
lw t9,-0x7a34(gp)
bal 0x000679c4
_or a0,s1,zero
lw gp,0x18(sp)
lw t9,-0x7a34(gp)
bal 0x000679c4
_or a0,s0,zero
lw v1,0x2c(sp)
lw a0,0x14c(sp)
lw gp,0x18(sp)
lw v0,0x20(sp)
lw v1,0x0(v1)
bne a0,v1,0x00081d20
_lw ra,0x174(sp)
lw s8,0x170(sp)
lw s7,0x16c(sp)
lw s6,0x168(sp)
lw s5,0x164(sp)
lw s4,0x160(sp)
lw s3,0x15c(sp)
lw s2,0x158(sp)
lw s1,0x154(sp)
lw s0,0x150(sp)
jr ra
_addiu sp,sp,0x178
lw t9,-0x7a34(gp)
bal 0x000679c4
_or a0,s0,zero
b 0x00081a2c
_lw gp,0x18(sp)
lw t9,-0x6fe8(gp)
jalr t9
_nop
lui gp,0x9
addiu gp,gp,0x7584
addu gp,gp,t9
addiu sp,sp,-0x58
lw t9,-0x78ec(gp)
sw s1,0x38(sp)
lw s1,-0x6c80(gp)
sw s0,0x34(sp)
addiu s0,sp,0x18
sw gp,0x10(sp)
sw ra,0x54(sp)
sw s4,0x44(sp)
sw s3,0x40(sp)
or s3,a3,zero
sw s2,0x3c(sp)
or s2,a0,zero
sw s7,0x50(sp)
or a0,a1,zero
sw s6,0x4c(sp)
or a1,a2,zero
sw s5,0x48(sp)
or a2,s0,zero
lw v0,0x0(s1)
sw v0,0x2c(sp)
bal 0x00087318
_nop
lw gp,0x10(sp)
lw t9,-0x7b50(gp)
bal 0x000682a8
_lw a0,0x8(s2)
addiu s4,v0,-0x1
bgez s4,0x00081db4
_lw gp,0x10(sp)
addiu s4,v0,0x6
slti v0,v0,0x129
bne v0,zero,0x00081fe4
_sra s4,s4,0x3
lw t9,-0x7fc4(gp)
li a1,0x1
jalr t9
_or a0,s4,zero
addiu a0,s4,-0x24
or s5,v0,zero
lw gp,0x10(sp)
li v1,0x1
slti v0,a0,0x2
bne v0,zero,0x00081fd0
_sb v1,0x0(s5)
addiu v0,s5,0x1
addu a0,s5,a0
li v1,-0x1
sb v1,0x0(v0)
addiu v0,v0,0x1
bne v0,a0,0x00081df8
_nop
lw v0,-0x7fb8(gp)
addiu v1,s4,-0x14
lw a2,-0x7fb8(gp)
or a1,zero,zero
addiu v0,v0,0x3e69
b 0x00081e2c
_addiu a2,a2,0x3e78
lbu a1,0x0(v0)
addiu v0,v0,0x1
sb a1,0x0(a0)
bne v0,a2,0x00081e24
_addiu a0,a0,0x1
addu v0,s5,v1
addiu a0,sp,0x2c
or a2,s0,zero
lbu v1,0x0(a2)
addiu v0,v0,0x1
addiu a2,a2,0x1
bne a2,a0,0x00081e44
_sb v1,-0x1(v0)
lw t9,-0x7b54(gp)
or a1,s4,zero
bal 0x00067f70
_or a0,s5,zero
or a0,s5,zero
lw gp,0x10(sp)
lw t9,-0x7fc0(gp)
jalr t9
_or s0,v0,zero
or a0,s0,zero
lw gp,0x10(sp)
lw t9,-0x7888(gp)
addiu t9,t9,0x19b0
bal 0x000819b0
_or a1,s2,zero
or a0,s0,zero
lw gp,0x10(sp)
lw t9,-0x7a34(gp)
bal 0x000679c4
_or s5,v0,zero
lw gp,0x10(sp)
lw t9,-0x7b50(gp)
bal 0x000682a8
_or a0,s5,zero
addiu s0,v0,0x7
lw gp,0x10(sp)
bgez s0,0x00081ecc
_or s6,v0,zero
addiu s0,v0,0xe
sra s4,s0,0x3
lw t9,-0x7fc4(gp)
li a1,0x1
addiu s7,s4,0xf
jalr t9
_or a0,s7,zero
li a3,0x7
lw gp,0x10(sp)
or s2,v0,zero
addiu v0,v0,0x4
sb a3,0x3(s2)
sra a2,s0,0x1b
sra a1,s0,0x13
sb zero,0x0(s2)
lw a0,-0x7fb8(gp)
sra s0,s0,0xb
sb zero,0x1(s2)
sb zero,0x2(s2)
addiu v1,a0,-0x52f0
lw a0,-0x52f0(a0)
lbu t0,0x4(v1)
lbu a3,0x5(v1)
lbu v1,0x6(v1)
swl a0,0x4(s2)
swr a0,0x3(v0)
sb t0,0x4(v0)
sb a3,0x5(v0)
sb v1,0x6(v0)
sb a2,0xb(s2)
sb a1,0xc(s2)
sb s0,0xd(s2)
blez s6,0x00081f80
_sb s4,0xe(s2)
or s0,zero,zero
addiu s6,s4,-0x1
lw t9,-0x7b4c(gp)
subu a1,s6,s0
bal 0x00068410
_or a0,s5,zero
addu a0,s2,s0
addiu s0,s0,0x1
lw gp,0x10(sp)
slt v1,s0,s4
bne v1,zero,0x00081f58
_sb v0,0xf(a0)
lw t9,-0x7a34(gp)
bal 0x000679c4
_or a0,s5,zero
or v0,s2,zero
lw a0,0x2c(sp)
lw v1,0x0(s1)
lw gp,0x10(sp)
bne a0,v1,0x00081fd8
_sw s7,0x0(s3)
lw ra,0x54(sp)
lw s7,0x50(sp)
lw s6,0x4c(sp)
lw s5,0x48(sp)
lw s4,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x58
b 0x00081e08
_addu a0,s5,a0
lw t9,-0x6fe8(gp)
jalr t9
_nop
lw a3,-0x7fb8(gp)
li a2,0x372
lw a1,-0x7fb8(gp)
lw a0,-0x7fb8(gp)
lw t9,-0x7360(gp)
addiu a3,a3,0x3e48
addiu a1,a1,0x3d30
jalr t9
_addiu a0,a0,0x3d7c
(translation_unit "undefined1 * FUN_000819b0(undefined4 param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  undefined1 uVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  undefined4 uVar15;\n  int *piVar16;\n  int *piVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  undefined *puVar22;\n  int iVar23;\n  uint unaff_s7;\n  undefined *puVar24;\n  undefined4 uVar25;\n  int local_1b8 [5];\n  int local_1a4 [2];\n  undefined4 local_19c;\n  undefined4 local_198;\n  undefined4 local_194;\n  undefined4 local_190;\n  undefined *local_18c;\n  int local_188;\n  undefined4 local_184;\n  uint local_180;\n  undefined4 local_17c;\n  undefined4 local_168;\n  undefined4 local_164;\n  SHA512_CTX SStack_144;\n  byte abStack_6c [64];\n  int local_2c;\n  \n  puVar24 = PTR___stack_chk_guard_00112630;\n  puVar22 = PTR_Zero_00111978;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  puVar11 = PTR_DAT_001112f8 + 0x3d60;\n  uVar21 = 0;\n  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);\n  iVar18 = 0x40;\n  while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  puVar22 = PTR_crt_modpow_00111aac;\n  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));\n  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  piVar17 = *(int **)(param_2 + 0x14);\n  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));\n  uVar15 = *(undefined4 *)(param_2 + 8);\n  iVar18 = iVar4;\n  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);\n  freebn(uVar7);\n  freebn(uVar6);\n  freebn(iVar4);\n  freebn(uVar5);\n  freebn(uVar3);\n  if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }\n  return puVar8;\n}\n\n" (function_definition "undefined1 * FUN_000819b0(undefined4 param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  undefined1 uVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  undefined4 uVar15;\n  int *piVar16;\n  int *piVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  undefined *puVar22;\n  int iVar23;\n  uint unaff_s7;\n  undefined *puVar24;\n  undefined4 uVar25;\n  int local_1b8 [5];\n  int local_1a4 [2];\n  undefined4 local_19c;\n  undefined4 local_198;\n  undefined4 local_194;\n  undefined4 local_190;\n  undefined *local_18c;\n  int local_188;\n  undefined4 local_184;\n  uint local_180;\n  undefined4 local_17c;\n  undefined4 local_168;\n  undefined4 local_164;\n  SHA512_CTX SStack_144;\n  byte abStack_6c [64];\n  int local_2c;\n  \n  puVar24 = PTR___stack_chk_guard_00112630;\n  puVar22 = PTR_Zero_00111978;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  puVar11 = PTR_DAT_001112f8 + 0x3d60;\n  uVar21 = 0;\n  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);\n  iVar18 = 0x40;\n  while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  puVar22 = PTR_crt_modpow_00111aac;\n  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));\n  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  piVar17 = *(int **)(param_2 + 0x14);\n  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));\n  uVar15 = *(undefined4 *)(param_2 + 8);\n  iVar18 = iVar4;\n  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);\n  freebn(uVar7);\n  freebn(uVar6);\n  freebn(iVar4);\n  freebn(uVar5);\n  freebn(uVar3);\n  if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }\n  return puVar8;\n}" type_identifier (pointer_declarator "* FUN_000819b0(undefined4 param_1,int param_2)" * (function_declarator "FUN_000819b0(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  undefined1 uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  undefined1 uVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  undefined4 uVar15;\n  int *piVar16;\n  int *piVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  undefined *puVar22;\n  int iVar23;\n  uint unaff_s7;\n  undefined *puVar24;\n  undefined4 uVar25;\n  int local_1b8 [5];\n  int local_1a4 [2];\n  undefined4 local_19c;\n  undefined4 local_198;\n  undefined4 local_194;\n  undefined4 local_190;\n  undefined *local_18c;\n  int local_188;\n  undefined4 local_184;\n  uint local_180;\n  undefined4 local_17c;\n  undefined4 local_168;\n  undefined4 local_164;\n  SHA512_CTX SStack_144;\n  byte abStack_6c [64];\n  int local_2c;\n  \n  puVar24 = PTR___stack_chk_guard_00112630;\n  puVar22 = PTR_Zero_00111978;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  puVar11 = PTR_DAT_001112f8 + 0x3d60;\n  uVar21 = 0;\n  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);\n  iVar18 = 0x40;\n  while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  puVar22 = PTR_crt_modpow_00111aac;\n  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));\n  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  piVar17 = *(int **)(param_2 + 0x14);\n  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));\n  uVar15 = *(undefined4 *)(param_2 + 8);\n  iVar18 = iVar4;\n  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);\n  freebn(uVar7);\n  freebn(uVar6);\n  freebn(iVar4);\n  freebn(uVar5);\n  freebn(uVar3);\n  if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }\n  return puVar8;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined1 uVar10;" type_identifier identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "uint unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "undefined4 uVar25;" type_identifier identifier ;) (declaration "int local_1b8 [5];" primitive_type (array_declarator "local_1b8 [5]" identifier [ number_literal ]) ;) (declaration "int local_1a4 [2];" primitive_type (array_declarator "local_1a4 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 local_19c;" type_identifier identifier ;) (declaration "undefined4 local_198;" type_identifier identifier ;) (declaration "undefined4 local_194;" type_identifier identifier ;) (declaration "undefined4 local_190;" type_identifier identifier ;) (declaration "undefined *local_18c;" type_identifier (pointer_declarator "*local_18c" * identifier) ;) (declaration "int local_188;" primitive_type identifier ;) (declaration "undefined4 local_184;" type_identifier identifier ;) (declaration "uint local_180;" type_identifier identifier ;) (declaration "undefined4 local_17c;" type_identifier identifier ;) (declaration "undefined4 local_168;" type_identifier identifier ;) (declaration "undefined4 local_164;" type_identifier identifier ;) (declaration "SHA512_CTX SStack_144;" type_identifier identifier ;) (declaration "byte abStack_6c [64];" type_identifier (array_declarator "abStack_6c [64]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar24 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar24 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "puVar22 = PTR_Zero_00111978;" (assignment_expression "puVar22 = PTR_Zero_00111978" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar11 = PTR_DAT_001112f8 + 0x3d60;" (assignment_expression "puVar11 = PTR_DAT_001112f8 + 0x3d60" identifier = (binary_expression "PTR_DAT_001112f8 + 0x3d60" identifier + number_literal)) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);" (assignment_expression "pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280)" identifier = (cast_expression "(code *)(PTR_LAB_00111a28 + 0x280)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111a28 + 0x280)" ( (binary_expression "PTR_LAB_00111a28 + 0x280" identifier + number_literal) )))) ;) (expression_statement "iVar18 = 0x40;" (assignment_expression "iVar18 = 0x40" identifier = number_literal) ;) (while_statement "while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }" { (expression_statement "uVar3 = copybn(*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(param_2 + 8))" identifier = (call_expression "copybn(*(undefined4 *)(param_2 + 8))" identifier (argument_list "(*(undefined4 *)(param_2 + 8))" ( (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar4 = bignum_bitcount(uVar3);" (assignment_expression "iVar4 = bignum_bitcount(uVar3)" identifier = (call_expression "bignum_bitcount(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "iVar23 = iVar4 + -1;" (assignment_expression "iVar23 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "unaff_s7 = 0;" (assignment_expression "unaff_s7 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);" do (compound_statement "{\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      }" { (if_statement "if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }" { (if_statement "if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" if (parenthesized_expression "(iVar18 == 0x40)" ( (binary_expression "iVar18 == 0x40" identifier == number_literal) )) (compound_statement "{\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }" { (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "SStack_144.md_len = uVar21;" (assignment_expression "SStack_144.md_len = uVar21" (field_expression "SStack_144.md_len" identifier . field_identifier) = identifier) ;) (expression_statement "SHA512_Init(&SStack_144);" (call_expression "SHA512_Init(&SStack_144)" identifier (argument_list "(&SStack_144)" ( (pointer_expression "&SStack_144" & identifier) ))) ;) (expression_statement "SHA512_Bytes(&SStack_144,puVar11,0x1a);" (call_expression "SHA512_Bytes(&SStack_144,puVar11,0x1a)" identifier (argument_list "(&SStack_144,puVar11,0x1a)" ( (pointer_expression "&SStack_144" & identifier) , identifier , number_literal ))) ;) (expression_statement "SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);" (call_expression "SHA512_Bytes(&SStack_144,&SStack_144.md_len,4)" identifier (argument_list "(&SStack_144,&SStack_144.md_len,4)" ( (pointer_expression "&SStack_144" & identifier) , (pointer_expression "&SStack_144.md_len" & (field_expression "SStack_144.md_len" identifier . field_identifier)) , number_literal ))) ;) (expression_statement "(*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));" (call_expression "(*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10))" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(&SStack_144,*(undefined4 *)(param_2 + 0x10))" ( (pointer_expression "&SStack_144" & identifier) , (pointer_expression "*(undefined4 *)(param_2 + 0x10)" * (cast_expression "(undefined4 *)(param_2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);" (call_expression "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" identifier (argument_list "((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" ( (cast_expression "(uchar *)&SStack_144" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SStack_144" & identifier)) , (cast_expression "(SHA512_CTX *)abStack_6c" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "SHA512_Init(&SStack_144);" (call_expression "SHA512_Init(&SStack_144)" identifier (argument_list "(&SStack_144)" ( (pointer_expression "&SStack_144" & identifier) ))) ;) (expression_statement "SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);" (call_expression "SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40)" identifier (argument_list "(&SStack_144,(SHA512_CTX *)abStack_6c,0x40)" ( (pointer_expression "&SStack_144" & identifier) , (cast_expression "(SHA512_CTX *)abStack_6c" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "(*pcVar12)(&SStack_144,param_1);" (call_expression "(*pcVar12)(&SStack_144,param_1)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(&SStack_144,param_1)" ( (pointer_expression "&SStack_144" & identifier) , identifier ))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (expression_statement "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);" (call_expression "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" identifier (argument_list "((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" ( (cast_expression "(uchar *)&SStack_144" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SStack_144" & identifier)) , (cast_expression "(SHA512_CTX *)abStack_6c" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" else (compound_statement "{\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" { (expression_statement "iVar19 = iVar18 + 1;" (assignment_expression "iVar19 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar21;" (assignment_expression "uVar14 = uVar21" identifier = identifier) ;) }))) (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" identifier = number_literal) ;) (expression_statement "unaff_s7 = (uint)abStack_6c[iVar18];" (assignment_expression "unaff_s7 = (uint)abStack_6c[iVar18]" identifier = (cast_expression "(uint)abStack_6c[iVar18]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "abStack_6c[iVar18]" identifier [ identifier ]))) ;) (expression_statement "iVar18 = iVar19;" (assignment_expression "iVar18 = iVar19" identifier = identifier) ;) (expression_statement "uVar21 = uVar14;" (assignment_expression "uVar21 = uVar14" identifier = identifier) ;) }) (else_clause "else {\n          iVar4 = iVar4 + -1;\n        }" else (compound_statement "{\n          iVar4 = iVar4 + -1;\n        }" { (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) }))) (expression_statement "bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);" (call_expression "bignum_set_bit(uVar3,iVar23,unaff_s7 & 1)" identifier (argument_list "(uVar3,iVar23,unaff_s7 & 1)" ( identifier , identifier , (binary_expression "unaff_s7 & 1" identifier & number_literal) ))) ;) (expression_statement "iVar23 = iVar23 + -1;" (assignment_expression "iVar23 = iVar23 + -1" identifier = (binary_expression "iVar23 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s7 = (int)unaff_s7 >> 1;" (assignment_expression "unaff_s7 = (int)unaff_s7 >> 1" identifier = (binary_expression "(int)unaff_s7 >> 1" (cast_expression "(int)unaff_s7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) while (parenthesized_expression "(iVar23 != -1)" ( (binary_expression "iVar23 != -1" identifier != number_literal) )) ;) })) (expression_statement "bn_restore_invariant(uVar3);" (call_expression "bn_restore_invariant(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22)" identifier = (call_expression "bignum_cmp(uVar3,*(undefined4 *)puVar22)" identifier (argument_list "(uVar3,*(undefined4 *)puVar22)" ( identifier , (pointer_expression "*(undefined4 *)puVar22" * (cast_expression "(undefined4 *)puVar22" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )))) ;) (if_statement "if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;" if (parenthesized_expression "(((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0))" ( (binary_expression "((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)" (parenthesized_expression "((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0))" ( (binary_expression "(0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)" (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) && (parenthesized_expression "(iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)" ( (comma_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0" (assignment_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8))" identifier = (call_expression "bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8))" identifier (argument_list "(uVar3,*(undefined4 *)(param_2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) , (binary_expression "iVar4 < 0" identifier < number_literal)) ))) )) && (parenthesized_expression "(iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)" ( (comma_expression "iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0" (assignment_expression "iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8))" identifier = (call_expression "modinv(uVar3,*(undefined4 *)(param_2 + 8))" identifier (argument_list "(uVar3,*(undefined4 *)(param_2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) })) (expression_statement "local_164 = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "local_164 = *(undefined4 *)(param_2 + 0x1c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" * (cast_expression "(undefined4 *)(param_2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_168 = *(undefined4 *)(param_2 + 0x18);" (assignment_expression "local_168 = *(undefined4 *)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = PTR_crt_modpow_00111aac;" (assignment_expression "puVar22 = PTR_crt_modpow_00111aac" identifier = identifier) ;) (expression_statement "uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));" (assignment_expression "uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" identifier = (call_expression "crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" identifier (argument_list "(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8))" identifier = (call_expression "modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8))" identifier (argument_list "(param_1,uVar5,*(undefined4 *)(param_2 + 8))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "local_164 = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "local_164 = *(undefined4 *)(param_2 + 0x1c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" * (cast_expression "(undefined4 *)(param_2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_168 = *(undefined4 *)(param_2 + 0x18);" (assignment_expression "local_168 = *(undefined4 *)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "piVar17 = *(int **)(param_2 + 0x14);" (assignment_expression "piVar17 = *(int **)(param_2 + 0x14)" identifier = (pointer_expression "*(int **)(param_2 + 0x14)" * (cast_expression "(int **)(param_2 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" identifier = (call_expression "crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" identifier (argument_list "(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x10)" * (cast_expression "(undefined4 *)(param_2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "uVar15 = *(undefined4 *)(param_2 + 8);" (assignment_expression "uVar15 = *(undefined4 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = iVar4;" (assignment_expression "iVar18 = iVar4" identifier = identifier) ;) (expression_statement "puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);" (assignment_expression "puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15)" identifier = (cast_expression "(undefined1 *)modmul(uVar7,iVar4,uVar15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "modmul(uVar7,iVar4,uVar15)" identifier (argument_list "(uVar7,iVar4,uVar15)" ( identifier , identifier , identifier ))))) ;) (expression_statement "freebn(uVar7);" (call_expression "freebn(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "freebn(uVar6);" (call_expression "freebn(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "freebn(iVar4);" (call_expression "freebn(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }" if (parenthesized_expression "(local_2c != *(int *)puVar24)" ( (binary_expression "local_2c != *(int *)puVar24" identifier != (pointer_expression "*(int *)puVar24" * (cast_expression "(int *)puVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }" { (expression_statement "uVar25 = 0x81d2c;" (assignment_expression "uVar25 = 0x81d2c" identifier = number_literal) ;) (expression_statement "iVar4 = local_2c;" (assignment_expression "iVar4 = local_2c" identifier = identifier) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar24 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar20 = *(int **)(puVar24 + 0x90904);" (assignment_expression "piVar20 = *(int **)(puVar24 + 0x90904)" identifier = (pointer_expression "*(int **)(puVar24 + 0x90904)" * (cast_expression "(int **)(puVar24 + 0x90904)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x90904)" ( (binary_expression "puVar24 + 0x90904" identifier + number_literal) ))))) ;) (expression_statement "piVar16 = local_1b8;" (assignment_expression "piVar16 = local_1b8" identifier = identifier) ;) (expression_statement "local_1a4[0] = *piVar20;" (assignment_expression "local_1a4[0] = *piVar20" (subscript_expression "local_1a4[0]" identifier [ number_literal ]) = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "local_19c = uVar3;" (assignment_expression "local_19c = uVar3" identifier = identifier) ;) (expression_statement "local_198 = uVar5;" (assignment_expression "local_198 = uVar5" identifier = identifier) ;) (expression_statement "local_194 = uVar7;" (assignment_expression "local_194 = uVar7" identifier = identifier) ;) (expression_statement "local_190 = uVar6;" (assignment_expression "local_190 = uVar6" identifier = identifier) ;) (expression_statement "local_18c = puVar22;" (assignment_expression "local_18c = puVar22" identifier = identifier) ;) (expression_statement "local_188 = iVar23;" (assignment_expression "local_188 = iVar23" identifier = identifier) ;) (expression_statement "local_184 = param_1;" (assignment_expression "local_184 = param_1" identifier = identifier) ;) (expression_statement "local_180 = unaff_s7;" (assignment_expression "local_180 = unaff_s7" identifier = identifier) ;) (expression_statement "local_17c = uVar25;" (assignment_expression "local_17c = uVar25" identifier = identifier) ;) (expression_statement "SHA_Simple(iVar18,uVar15,piVar16);" (call_expression "SHA_Simple(iVar18,uVar15,piVar16)" identifier (argument_list "(iVar18,uVar15,piVar16)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));" (assignment_expression "iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8))" identifier = (call_expression "bignum_bitcount(*(undefined4 *)(iVar4 + 8))" identifier (argument_list "(*(undefined4 *)(iVar4 + 8))" ( (pointer_expression "*(undefined4 *)(iVar4 + 8)" * (cast_expression "(undefined4 *)(iVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar23 = iVar18 + -1;" (assignment_expression "iVar23 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }" if (parenthesized_expression "(iVar23 < 0)" ( (binary_expression "iVar23 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar23 = iVar18 + 6;\n    }" { (expression_statement "iVar23 = iVar18 + 6;" (assignment_expression "iVar23 = iVar18 + 6" identifier = (binary_expression "iVar18 + 6" identifier + number_literal)) ;) })) (expression_statement "iVar23 = iVar23 >> 3;" (assignment_expression "iVar23 = iVar23 >> 3" identifier = (binary_expression "iVar23 >> 3" identifier >> number_literal)) ;) (if_statement "if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }" if (parenthesized_expression "(0x128 < iVar18)" ( (binary_expression "0x128 < iVar18" number_literal < identifier) )) (compound_statement "{\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }" { (expression_statement "puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);" (assignment_expression "puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" identifier = (cast_expression "(undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c0))" ( (pointer_expression "**(code **)(puVar24 + 0x8f5c0)" * (pointer_expression "*(code **)(puVar24 + 0x8f5c0)" * (cast_expression "(code **)(puVar24 + 0x8f5c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x8f5c0)" ( (binary_expression "puVar24 + 0x8f5c0" identifier + number_literal) ))))) )) (argument_list "(iVar23,1)" ( identifier , number_literal ))))) ;) (expression_statement "iVar18 = iVar23 + -0x24;" (assignment_expression "iVar18 = iVar23 + -0x24" identifier = (binary_expression "iVar23 + -0x24" identifier + number_literal)) ;) (expression_statement "*puVar8 = 1;" (assignment_expression "*puVar8 = 1" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (if_statement "if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }" if (parenthesized_expression "(1 < iVar18)" ( (binary_expression "1 < iVar18" number_literal < identifier) )) (compound_statement "{\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }" { (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);" do (compound_statement "{\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        }" { (expression_statement "*puVar9 = 0xff;" (assignment_expression "*puVar9 = 0xff" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != puVar8 + iVar18)" ( (binary_expression "puVar9 != puVar8 + iVar18" identifier != (binary_expression "puVar8 + iVar18" identifier + identifier)) )) ;) })) (expression_statement "puVar13 = puVar8 + iVar18;" (assignment_expression "puVar13 = puVar8 + iVar18" identifier = (binary_expression "puVar8 + iVar18" identifier + identifier)) ;) (expression_statement "iVar18 = *(int *)(puVar24 + 0x8f5cc);" (assignment_expression "iVar18 = *(int *)(puVar24 + 0x8f5cc)" identifier = (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);" (assignment_expression "puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" identifier = (cast_expression "(undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" ( (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3e69" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) )))) + number_literal) )))) ;) (while_statement "while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }" { (expression_statement "*puVar13 = uVar10;" (assignment_expression "*puVar13 = uVar10" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (if_statement "if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;" if (parenthesized_expression "(puVar9 == (undefined1 *)(iVar18 + 0x3e78))" ( (binary_expression "puVar9 == (undefined1 *)(iVar18 + 0x3e78)" identifier == (cast_expression "(undefined1 *)(iVar18 + 0x3e78)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3e78)" ( (binary_expression "iVar18 + 0x3e78" identifier + number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = *puVar9;" (assignment_expression "uVar10 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar9 = puVar8 + iVar23 + -0x14;" (assignment_expression "puVar9 = puVar8 + iVar23 + -0x14" identifier = (binary_expression "puVar8 + iVar23 + -0x14" (binary_expression "puVar8 + iVar23" identifier + identifier) + number_literal)) ;) (do_statement "do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);" do (compound_statement "{\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      }" { (expression_statement "uVar10 = *(undefined1 *)piVar16;" (assignment_expression "uVar10 = *(undefined1 *)piVar16" identifier = (pointer_expression "*(undefined1 *)piVar16" * (cast_expression "(undefined1 *)piVar16" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar16 = (int *)((int)piVar16 + 1);" (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" identifier = (cast_expression "(int *)((int)piVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 1)" ( (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar9 = uVar10;" (assignment_expression "*puVar9 = uVar10" (pointer_expression "*puVar9" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar16 != local_1a4)" ( (binary_expression "piVar16 != local_1a4" identifier != identifier) )) ;) (expression_statement "uVar3 = bignum_from_bytes(puVar8,iVar23);" (assignment_expression "uVar3 = bignum_from_bytes(puVar8,iVar23)" identifier = (call_expression "bignum_from_bytes(puVar8,iVar23)" identifier (argument_list "(puVar8,iVar23)" ( identifier , identifier )))) ;) (expression_statement "(**(code **)(puVar24 + 0x8f5c4))(puVar8);" (call_expression "(**(code **)(puVar24 + 0x8f5c4))(puVar8)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c4))" ( (pointer_expression "**(code **)(puVar24 + 0x8f5c4)" * (pointer_expression "*(code **)(puVar24 + 0x8f5c4)" * (cast_expression "(code **)(puVar24 + 0x8f5c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x8f5c4)" ( (binary_expression "puVar24 + 0x8f5c4" identifier + number_literal) ))))) )) (argument_list "(puVar8)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_000819b0(uVar3,iVar4);" (assignment_expression "uVar5 = FUN_000819b0(uVar3,iVar4)" identifier = (call_expression "FUN_000819b0(uVar3,iVar4)" identifier (argument_list "(uVar3,iVar4)" ( identifier , identifier )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar18 = bignum_bitcount(uVar5);" (assignment_expression "iVar18 = bignum_bitcount(uVar5)" identifier = (call_expression "bignum_bitcount(uVar5)" identifier (argument_list "(uVar5)" ( identifier )))) ;) (expression_statement "iVar4 = iVar18 + 7;" (assignment_expression "iVar4 = iVar18 + 7" identifier = (binary_expression "iVar18 + 7" identifier + number_literal)) ;) (if_statement "if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar4 = iVar18 + 0xe;\n      }" { (expression_statement "iVar4 = iVar18 + 0xe;" (assignment_expression "iVar4 = iVar18 + 0xe" identifier = (binary_expression "iVar18 + 0xe" identifier + number_literal)) ;) })) (expression_statement "iVar19 = iVar4 >> 3;" (assignment_expression "iVar19 = iVar4 >> 3" identifier = (binary_expression "iVar4 >> 3" identifier >> number_literal)) ;) (expression_statement "puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);" (assignment_expression "puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" identifier = (cast_expression "(undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c0))" ( (pointer_expression "**(code **)(puVar24 + 0x8f5c0)" * (pointer_expression "*(code **)(puVar24 + 0x8f5c0)" * (cast_expression "(code **)(puVar24 + 0x8f5c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x8f5c0)" ( (binary_expression "puVar24 + 0x8f5c0" identifier + number_literal) ))))) )) (argument_list "(iVar19 + 0xf,1)" ( (binary_expression "iVar19 + 0xf" identifier + number_literal) , number_literal ))))) ;) (expression_statement "puVar9[3] = 7;" (assignment_expression "puVar9[3] = 7" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "iVar23 = *(int *)(puVar24 + 0x8f5cc);" (assignment_expression "iVar23 = *(int *)(puVar24 + 0x8f5cc)" identifier = (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) ))))) ;) (expression_statement "puVar9[1] = 0;" (assignment_expression "puVar9[1] = 0" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar14 = *(uint *)(iVar23 + -0x52f0);" (assignment_expression "uVar14 = *(uint *)(iVar23 + -0x52f0)" identifier = (pointer_expression "*(uint *)(iVar23 + -0x52f0)" * (cast_expression "(uint *)(iVar23 + -0x52f0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + -0x52f0)" ( (binary_expression "iVar23 + -0x52f0" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(undefined1 *)(iVar23 + -0x52ec);" (assignment_expression "uVar10 = *(undefined1 *)(iVar23 + -0x52ec)" identifier = (pointer_expression "*(undefined1 *)(iVar23 + -0x52ec)" * (cast_expression "(undefined1 *)(iVar23 + -0x52ec)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + -0x52ec)" ( (binary_expression "iVar23 + -0x52ec" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(undefined1 *)(iVar23 + -0x52eb);" (assignment_expression "uVar1 = *(undefined1 *)(iVar23 + -0x52eb)" identifier = (pointer_expression "*(undefined1 *)(iVar23 + -0x52eb)" * (cast_expression "(undefined1 *)(iVar23 + -0x52eb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + -0x52eb)" ( (binary_expression "iVar23 + -0x52eb" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined1 *)(iVar23 + -0x52ea);" (assignment_expression "uVar2 = *(undefined1 *)(iVar23 + -0x52ea)" identifier = (pointer_expression "*(undefined1 *)(iVar23 + -0x52ea)" * (cast_expression "(undefined1 *)(iVar23 + -0x52ea)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + -0x52ea)" ( (binary_expression "iVar23 + -0x52ea" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "uVar21 = (uint)puVar8 & 3;" (assignment_expression "uVar21 = (uint)puVar8 & 3" identifier = (binary_expression "(uint)puVar8 & 3" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;" (assignment_expression "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" * (cast_expression "(uint *)(puVar8 + -uVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -uVar21)" ( (binary_expression "puVar8 + -uVar21" identifier + (unary_expression "-uVar21" - identifier)) )))) = (binary_expression "*(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8" (binary_expression "*(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" * (cast_expression "(uint *)(puVar8 + -uVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -uVar21)" ( (binary_expression "puVar8 + -uVar21" identifier + (unary_expression "-uVar21" - identifier)) )))) & (binary_expression "-1 << (4 - uVar21) * 8" number_literal << (binary_expression "(4 - uVar21) * 8" (parenthesized_expression "(4 - uVar21)" ( (binary_expression "4 - uVar21" number_literal - identifier) )) * number_literal))) | (binary_expression "uVar14 >> uVar21 * 8" identifier >> (binary_expression "uVar21 * 8" identifier * number_literal)))) ;) (expression_statement "puVar8 = puVar9 + 7;" (assignment_expression "puVar8 = puVar9 + 7" identifier = (binary_expression "puVar9 + 7" identifier + number_literal)) ;) (expression_statement "uVar21 = (uint)puVar8 & 3;" (assignment_expression "uVar21 = (uint)puVar8 & 3" identifier = (binary_expression "(uint)puVar8 & 3" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;" (assignment_expression "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" * (cast_expression "(uint *)(puVar8 + -uVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -uVar21)" ( (binary_expression "puVar8 + -uVar21" identifier + (unary_expression "-uVar21" - identifier)) )))) = (binary_expression "*(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8" (binary_expression "*(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" * (cast_expression "(uint *)(puVar8 + -uVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -uVar21)" ( (binary_expression "puVar8 + -uVar21" identifier + (unary_expression "-uVar21" - identifier)) )))) & (binary_expression "0xffffffffU >> (uVar21 + 1) * 8" number_literal >> (binary_expression "(uVar21 + 1) * 8" (parenthesized_expression "(uVar21 + 1)" ( (binary_expression "uVar21 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar14 << (3 - uVar21) * 8" identifier << (binary_expression "(3 - uVar21) * 8" (parenthesized_expression "(3 - uVar21)" ( (binary_expression "3 - uVar21" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar9[8] = uVar10;" (assignment_expression "puVar9[8] = uVar10" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[9] = uVar1;" (assignment_expression "puVar9[9] = uVar1" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[10] = uVar2;" (assignment_expression "puVar9[10] = uVar2" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[0xb] = (char)(iVar4 >> 0x1b);" (assignment_expression "puVar9[0xb] = (char)(iVar4 >> 0x1b)" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) = (cast_expression "(char)(iVar4 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar4 >> 0x1b)" ( (binary_expression "iVar4 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "puVar9[0xc] = (char)(iVar4 >> 0x13);" (assignment_expression "puVar9[0xc] = (char)(iVar4 >> 0x13)" (subscript_expression "puVar9[0xc]" identifier [ number_literal ]) = (cast_expression "(char)(iVar4 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar4 >> 0x13)" ( (binary_expression "iVar4 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "puVar9[0xd] = (char)(iVar4 >> 0xb);" (assignment_expression "puVar9[0xd] = (char)(iVar4 >> 0xb)" (subscript_expression "puVar9[0xd]" identifier [ number_literal ]) = (cast_expression "(char)(iVar4 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar4 >> 0xb)" ( (binary_expression "iVar4 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "puVar9[0xe] = (char)iVar19;" (assignment_expression "puVar9[0xe] = (char)iVar19" (subscript_expression "puVar9[0xe]" identifier [ number_literal ]) = (cast_expression "(char)iVar19" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }" if (parenthesized_expression "(0 < iVar18)" ( (binary_expression "0 < iVar18" number_literal < identifier) )) (compound_statement "{\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);" do (compound_statement "{\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        }" { (expression_statement "uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);" (assignment_expression "uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18)" identifier = (call_expression "bignum_byte(uVar5,(iVar19 + -1) - iVar18)" identifier (argument_list "(uVar5,(iVar19 + -1) - iVar18)" ( identifier , (binary_expression "(iVar19 + -1) - iVar18" (parenthesized_expression "(iVar19 + -1)" ( (binary_expression "iVar19 + -1" identifier + number_literal) )) - identifier) )))) ;) (expression_statement "iVar4 = iVar18 + 1;" (assignment_expression "iVar4 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar9[iVar18 + 0xf] = uVar10;" (assignment_expression "puVar9[iVar18 + 0xf] = uVar10" (subscript_expression "puVar9[iVar18 + 0xf]" identifier [ (binary_expression "iVar18 + 0xf" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar18 = iVar4;" (assignment_expression "iVar18 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 < iVar19)" ( (binary_expression "iVar4 < iVar19" identifier < identifier) )) ;) })) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "*piVar17 = iVar19 + 0xf;" (assignment_expression "*piVar17 = iVar19 + 0xf" (pointer_expression "*piVar17" * identifier) = (binary_expression "iVar19 + 0xf" identifier + number_literal)) ;) (if_statement "if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }" if (parenthesized_expression "(local_1a4[0] == iVar18)" ( (binary_expression "local_1a4[0] == iVar18" (subscript_expression "local_1a4[0]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n        return puVar9;\n      }" { (return_statement "return puVar9;" return identifier ;) })) (expression_statement "(**(code **)(puVar24 + 0x9059c))();" (call_expression "(**(code **)(puVar24 + 0x9059c))()" (parenthesized_expression "(**(code **)(puVar24 + 0x9059c))" ( (pointer_expression "**(code **)(puVar24 + 0x9059c)" * (pointer_expression "*(code **)(puVar24 + 0x9059c)" * (cast_expression "(code **)(puVar24 + 0x9059c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x9059c)" ( (binary_expression "puVar24 + 0x9059c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "(**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);" (call_expression "(**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48)" (parenthesized_expression "(**(code **)(puVar24 + 0x90224))" ( (pointer_expression "**(code **)(puVar24 + 0x90224)" * (pointer_expression "*(code **)(puVar24 + 0x90224)" * (cast_expression "(code **)(puVar24 + 0x90224)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x90224)" ( (binary_expression "puVar24 + 0x90224" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48)" ( (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3d7c" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3d30" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3e48" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "puVar8 = (undefined1 *)FUN_000819b0();" (assignment_expression "puVar8 = (undefined1 *)FUN_000819b0()" identifier = (cast_expression "(undefined1 *)FUN_000819b0()" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000819b0()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar8;" return identifier ;) })) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit "Bignum rsa_privkey_op(Bignum input,RSAKey *key)\n\n{\n  Bignum_conflict bn;\n  SHA512_State ss;\n  uchar seqbuf [4];\n  uchar digest512 [64];\n  \n  bn = copybn((Bignum_conflict)key->modulus);\n                    /* WARNING: Subroutine does not return */\n  bignum_bitcount(bn);\n}\n\n" (function_definition "Bignum rsa_privkey_op(Bignum input,RSAKey *key)\n\n{\n  Bignum_conflict bn;\n  SHA512_State ss;\n  uchar seqbuf [4];\n  uchar digest512 [64];\n  \n  bn = copybn((Bignum_conflict)key->modulus);\n                    /* WARNING: Subroutine does not return */\n  bignum_bitcount(bn);\n}" type_identifier (function_declarator "rsa_privkey_op(Bignum input,RSAKey *key)" identifier (parameter_list "(Bignum input,RSAKey *key)" ( (parameter_declaration "Bignum input" type_identifier identifier) , (parameter_declaration "RSAKey *key" type_identifier (pointer_declarator "*key" * identifier)) ))) (compound_statement "{\n  Bignum_conflict bn;\n  SHA512_State ss;\n  uchar seqbuf [4];\n  uchar digest512 [64];\n  \n  bn = copybn((Bignum_conflict)key->modulus);\n                    /* WARNING: Subroutine does not return */\n  bignum_bitcount(bn);\n}" { (declaration "Bignum_conflict bn;" type_identifier identifier ;) (declaration "SHA512_State ss;" type_identifier identifier ;) (declaration "uchar seqbuf [4];" type_identifier (array_declarator "seqbuf [4]" identifier [ number_literal ]) ;) (declaration "uchar digest512 [64];" type_identifier (array_declarator "digest512 [64]" identifier [ number_literal ]) ;) (expression_statement "bn = copybn((Bignum_conflict)key->modulus);" (assignment_expression "bn = copybn((Bignum_conflict)key->modulus)" identifier = (call_expression "copybn((Bignum_conflict)key->modulus)" identifier (argument_list "((Bignum_conflict)key->modulus)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) comment (expression_statement "bignum_bitcount(bn);" (call_expression "bignum_bitcount(bn)" identifier (argument_list "(bn)" ( identifier ))) ;) })))
(translation_unit "undefined1 * FUN_000819b0(undefined4 param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  undefined1 uVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  undefined4 uVar15;\n  int *piVar16;\n  int *piVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  undefined *puVar22;\n  int iVar23;\n  uint unaff_s7;\n  undefined *puVar24;\n  undefined4 uVar25;\n  int local_1b8 [5];\n  int local_1a4 [2];\n  undefined4 local_19c;\n  undefined4 local_198;\n  undefined4 local_194;\n  undefined4 local_190;\n  undefined *local_18c;\n  int local_188;\n  undefined4 local_184;\n  uint local_180;\n  undefined4 local_17c;\n  undefined4 local_168;\n  undefined4 local_164;\n  SHA512_CTX SStack_144;\n  byte abStack_6c [64];\n  int local_2c;\n  \n  puVar24 = PTR___stack_chk_guard_00112630;\n  puVar22 = PTR_Zero_00111978;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  puVar11 = PTR_DAT_001112f8 + 0x3d60;\n  uVar21 = 0;\n  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);\n  iVar18 = 0x40;\n  while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  puVar22 = PTR_crt_modpow_00111aac;\n  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));\n  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  piVar17 = *(int **)(param_2 + 0x14);\n  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));\n  uVar15 = *(undefined4 *)(param_2 + 8);\n  iVar18 = iVar4;\n  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);\n  freebn(uVar7);\n  freebn(uVar6);\n  freebn(iVar4);\n  freebn(uVar5);\n  freebn(uVar3);\n  if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }\n  return puVar8;\n}\n\n" (function_definition "undefined1 * FUN_000819b0(undefined4 param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  undefined1 uVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  undefined4 uVar15;\n  int *piVar16;\n  int *piVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  undefined *puVar22;\n  int iVar23;\n  uint unaff_s7;\n  undefined *puVar24;\n  undefined4 uVar25;\n  int local_1b8 [5];\n  int local_1a4 [2];\n  undefined4 local_19c;\n  undefined4 local_198;\n  undefined4 local_194;\n  undefined4 local_190;\n  undefined *local_18c;\n  int local_188;\n  undefined4 local_184;\n  uint local_180;\n  undefined4 local_17c;\n  undefined4 local_168;\n  undefined4 local_164;\n  SHA512_CTX SStack_144;\n  byte abStack_6c [64];\n  int local_2c;\n  \n  puVar24 = PTR___stack_chk_guard_00112630;\n  puVar22 = PTR_Zero_00111978;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  puVar11 = PTR_DAT_001112f8 + 0x3d60;\n  uVar21 = 0;\n  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);\n  iVar18 = 0x40;\n  while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  puVar22 = PTR_crt_modpow_00111aac;\n  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));\n  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  piVar17 = *(int **)(param_2 + 0x14);\n  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));\n  uVar15 = *(undefined4 *)(param_2 + 8);\n  iVar18 = iVar4;\n  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);\n  freebn(uVar7);\n  freebn(uVar6);\n  freebn(iVar4);\n  freebn(uVar5);\n  freebn(uVar3);\n  if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }\n  return puVar8;\n}" type_identifier (pointer_declarator "* FUN_000819b0(undefined4 param_1,int param_2)" * (function_declarator "FUN_000819b0(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  undefined1 uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  undefined1 uVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  undefined4 uVar15;\n  int *piVar16;\n  int *piVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  undefined *puVar22;\n  int iVar23;\n  uint unaff_s7;\n  undefined *puVar24;\n  undefined4 uVar25;\n  int local_1b8 [5];\n  int local_1a4 [2];\n  undefined4 local_19c;\n  undefined4 local_198;\n  undefined4 local_194;\n  undefined4 local_190;\n  undefined *local_18c;\n  int local_188;\n  undefined4 local_184;\n  uint local_180;\n  undefined4 local_17c;\n  undefined4 local_168;\n  undefined4 local_164;\n  SHA512_CTX SStack_144;\n  byte abStack_6c [64];\n  int local_2c;\n  \n  puVar24 = PTR___stack_chk_guard_00112630;\n  puVar22 = PTR_Zero_00111978;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  puVar11 = PTR_DAT_001112f8 + 0x3d60;\n  uVar21 = 0;\n  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);\n  iVar18 = 0x40;\n  while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  puVar22 = PTR_crt_modpow_00111aac;\n  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));\n  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  piVar17 = *(int **)(param_2 + 0x14);\n  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));\n  uVar15 = *(undefined4 *)(param_2 + 8);\n  iVar18 = iVar4;\n  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);\n  freebn(uVar7);\n  freebn(uVar6);\n  freebn(iVar4);\n  freebn(uVar5);\n  freebn(uVar3);\n  if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }\n  return puVar8;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined1 uVar10;" type_identifier identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "uint unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "undefined4 uVar25;" type_identifier identifier ;) (declaration "int local_1b8 [5];" primitive_type (array_declarator "local_1b8 [5]" identifier [ number_literal ]) ;) (declaration "int local_1a4 [2];" primitive_type (array_declarator "local_1a4 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 local_19c;" type_identifier identifier ;) (declaration "undefined4 local_198;" type_identifier identifier ;) (declaration "undefined4 local_194;" type_identifier identifier ;) (declaration "undefined4 local_190;" type_identifier identifier ;) (declaration "undefined *local_18c;" type_identifier (pointer_declarator "*local_18c" * identifier) ;) (declaration "int local_188;" primitive_type identifier ;) (declaration "undefined4 local_184;" type_identifier identifier ;) (declaration "uint local_180;" type_identifier identifier ;) (declaration "undefined4 local_17c;" type_identifier identifier ;) (declaration "undefined4 local_168;" type_identifier identifier ;) (declaration "undefined4 local_164;" type_identifier identifier ;) (declaration "SHA512_CTX SStack_144;" type_identifier identifier ;) (declaration "byte abStack_6c [64];" type_identifier (array_declarator "abStack_6c [64]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar24 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar24 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "puVar22 = PTR_Zero_00111978;" (assignment_expression "puVar22 = PTR_Zero_00111978" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar11 = PTR_DAT_001112f8 + 0x3d60;" (assignment_expression "puVar11 = PTR_DAT_001112f8 + 0x3d60" identifier = (binary_expression "PTR_DAT_001112f8 + 0x3d60" identifier + number_literal)) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);" (assignment_expression "pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280)" identifier = (cast_expression "(code *)(PTR_LAB_00111a28 + 0x280)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111a28 + 0x280)" ( (binary_expression "PTR_LAB_00111a28 + 0x280" identifier + number_literal) )))) ;) (expression_statement "iVar18 = 0x40;" (assignment_expression "iVar18 = 0x40" identifier = number_literal) ;) (while_statement "while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }" { (expression_statement "uVar3 = copybn(*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(param_2 + 8))" identifier = (call_expression "copybn(*(undefined4 *)(param_2 + 8))" identifier (argument_list "(*(undefined4 *)(param_2 + 8))" ( (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar4 = bignum_bitcount(uVar3);" (assignment_expression "iVar4 = bignum_bitcount(uVar3)" identifier = (call_expression "bignum_bitcount(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "iVar23 = iVar4 + -1;" (assignment_expression "iVar23 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "unaff_s7 = 0;" (assignment_expression "unaff_s7 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);" do (compound_statement "{\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      }" { (if_statement "if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }" { (if_statement "if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" if (parenthesized_expression "(iVar18 == 0x40)" ( (binary_expression "iVar18 == 0x40" identifier == number_literal) )) (compound_statement "{\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }" { (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "SStack_144.md_len = uVar21;" (assignment_expression "SStack_144.md_len = uVar21" (field_expression "SStack_144.md_len" identifier . field_identifier) = identifier) ;) (expression_statement "SHA512_Init(&SStack_144);" (call_expression "SHA512_Init(&SStack_144)" identifier (argument_list "(&SStack_144)" ( (pointer_expression "&SStack_144" & identifier) ))) ;) (expression_statement "SHA512_Bytes(&SStack_144,puVar11,0x1a);" (call_expression "SHA512_Bytes(&SStack_144,puVar11,0x1a)" identifier (argument_list "(&SStack_144,puVar11,0x1a)" ( (pointer_expression "&SStack_144" & identifier) , identifier , number_literal ))) ;) (expression_statement "SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);" (call_expression "SHA512_Bytes(&SStack_144,&SStack_144.md_len,4)" identifier (argument_list "(&SStack_144,&SStack_144.md_len,4)" ( (pointer_expression "&SStack_144" & identifier) , (pointer_expression "&SStack_144.md_len" & (field_expression "SStack_144.md_len" identifier . field_identifier)) , number_literal ))) ;) (expression_statement "(*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));" (call_expression "(*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10))" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(&SStack_144,*(undefined4 *)(param_2 + 0x10))" ( (pointer_expression "&SStack_144" & identifier) , (pointer_expression "*(undefined4 *)(param_2 + 0x10)" * (cast_expression "(undefined4 *)(param_2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);" (call_expression "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" identifier (argument_list "((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" ( (cast_expression "(uchar *)&SStack_144" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SStack_144" & identifier)) , (cast_expression "(SHA512_CTX *)abStack_6c" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "SHA512_Init(&SStack_144);" (call_expression "SHA512_Init(&SStack_144)" identifier (argument_list "(&SStack_144)" ( (pointer_expression "&SStack_144" & identifier) ))) ;) (expression_statement "SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);" (call_expression "SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40)" identifier (argument_list "(&SStack_144,(SHA512_CTX *)abStack_6c,0x40)" ( (pointer_expression "&SStack_144" & identifier) , (cast_expression "(SHA512_CTX *)abStack_6c" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "(*pcVar12)(&SStack_144,param_1);" (call_expression "(*pcVar12)(&SStack_144,param_1)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(&SStack_144,param_1)" ( (pointer_expression "&SStack_144" & identifier) , identifier ))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (expression_statement "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);" (call_expression "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" identifier (argument_list "((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" ( (cast_expression "(uchar *)&SStack_144" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SStack_144" & identifier)) , (cast_expression "(SHA512_CTX *)abStack_6c" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" else (compound_statement "{\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" { (expression_statement "iVar19 = iVar18 + 1;" (assignment_expression "iVar19 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar21;" (assignment_expression "uVar14 = uVar21" identifier = identifier) ;) }))) (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" identifier = number_literal) ;) (expression_statement "unaff_s7 = (uint)abStack_6c[iVar18];" (assignment_expression "unaff_s7 = (uint)abStack_6c[iVar18]" identifier = (cast_expression "(uint)abStack_6c[iVar18]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "abStack_6c[iVar18]" identifier [ identifier ]))) ;) (expression_statement "iVar18 = iVar19;" (assignment_expression "iVar18 = iVar19" identifier = identifier) ;) (expression_statement "uVar21 = uVar14;" (assignment_expression "uVar21 = uVar14" identifier = identifier) ;) }) (else_clause "else {\n          iVar4 = iVar4 + -1;\n        }" else (compound_statement "{\n          iVar4 = iVar4 + -1;\n        }" { (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) }))) (expression_statement "bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);" (call_expression "bignum_set_bit(uVar3,iVar23,unaff_s7 & 1)" identifier (argument_list "(uVar3,iVar23,unaff_s7 & 1)" ( identifier , identifier , (binary_expression "unaff_s7 & 1" identifier & number_literal) ))) ;) (expression_statement "iVar23 = iVar23 + -1;" (assignment_expression "iVar23 = iVar23 + -1" identifier = (binary_expression "iVar23 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s7 = (int)unaff_s7 >> 1;" (assignment_expression "unaff_s7 = (int)unaff_s7 >> 1" identifier = (binary_expression "(int)unaff_s7 >> 1" (cast_expression "(int)unaff_s7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) while (parenthesized_expression "(iVar23 != -1)" ( (binary_expression "iVar23 != -1" identifier != number_literal) )) ;) })) (expression_statement "bn_restore_invariant(uVar3);" (call_expression "bn_restore_invariant(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22)" identifier = (call_expression "bignum_cmp(uVar3,*(undefined4 *)puVar22)" identifier (argument_list "(uVar3,*(undefined4 *)puVar22)" ( identifier , (pointer_expression "*(undefined4 *)puVar22" * (cast_expression "(undefined4 *)puVar22" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )))) ;) (if_statement "if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;" if (parenthesized_expression "(((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0))" ( (binary_expression "((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)" (parenthesized_expression "((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0))" ( (binary_expression "(0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)" (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) && (parenthesized_expression "(iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)" ( (comma_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0" (assignment_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8))" identifier = (call_expression "bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8))" identifier (argument_list "(uVar3,*(undefined4 *)(param_2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) , (binary_expression "iVar4 < 0" identifier < number_literal)) ))) )) && (parenthesized_expression "(iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)" ( (comma_expression "iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0" (assignment_expression "iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8))" identifier = (call_expression "modinv(uVar3,*(undefined4 *)(param_2 + 8))" identifier (argument_list "(uVar3,*(undefined4 *)(param_2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) })) (expression_statement "local_164 = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "local_164 = *(undefined4 *)(param_2 + 0x1c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" * (cast_expression "(undefined4 *)(param_2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_168 = *(undefined4 *)(param_2 + 0x18);" (assignment_expression "local_168 = *(undefined4 *)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = PTR_crt_modpow_00111aac;" (assignment_expression "puVar22 = PTR_crt_modpow_00111aac" identifier = identifier) ;) (expression_statement "uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));" (assignment_expression "uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" identifier = (call_expression "crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" identifier (argument_list "(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8))" identifier = (call_expression "modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8))" identifier (argument_list "(param_1,uVar5,*(undefined4 *)(param_2 + 8))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "local_164 = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "local_164 = *(undefined4 *)(param_2 + 0x1c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" * (cast_expression "(undefined4 *)(param_2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_168 = *(undefined4 *)(param_2 + 0x18);" (assignment_expression "local_168 = *(undefined4 *)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "piVar17 = *(int **)(param_2 + 0x14);" (assignment_expression "piVar17 = *(int **)(param_2 + 0x14)" identifier = (pointer_expression "*(int **)(param_2 + 0x14)" * (cast_expression "(int **)(param_2 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" identifier = (call_expression "crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" identifier (argument_list "(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x10)" * (cast_expression "(undefined4 *)(param_2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "uVar15 = *(undefined4 *)(param_2 + 8);" (assignment_expression "uVar15 = *(undefined4 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = iVar4;" (assignment_expression "iVar18 = iVar4" identifier = identifier) ;) (expression_statement "puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);" (assignment_expression "puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15)" identifier = (cast_expression "(undefined1 *)modmul(uVar7,iVar4,uVar15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "modmul(uVar7,iVar4,uVar15)" identifier (argument_list "(uVar7,iVar4,uVar15)" ( identifier , identifier , identifier ))))) ;) (expression_statement "freebn(uVar7);" (call_expression "freebn(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "freebn(uVar6);" (call_expression "freebn(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "freebn(iVar4);" (call_expression "freebn(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }" if (parenthesized_expression "(local_2c != *(int *)puVar24)" ( (binary_expression "local_2c != *(int *)puVar24" identifier != (pointer_expression "*(int *)puVar24" * (cast_expression "(int *)puVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }" { (expression_statement "uVar25 = 0x81d2c;" (assignment_expression "uVar25 = 0x81d2c" identifier = number_literal) ;) (expression_statement "iVar4 = local_2c;" (assignment_expression "iVar4 = local_2c" identifier = identifier) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar24 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar20 = *(int **)(puVar24 + 0x90904);" (assignment_expression "piVar20 = *(int **)(puVar24 + 0x90904)" identifier = (pointer_expression "*(int **)(puVar24 + 0x90904)" * (cast_expression "(int **)(puVar24 + 0x90904)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x90904)" ( (binary_expression "puVar24 + 0x90904" identifier + number_literal) ))))) ;) (expression_statement "piVar16 = local_1b8;" (assignment_expression "piVar16 = local_1b8" identifier = identifier) ;) (expression_statement "local_1a4[0] = *piVar20;" (assignment_expression "local_1a4[0] = *piVar20" (subscript_expression "local_1a4[0]" identifier [ number_literal ]) = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "local_19c = uVar3;" (assignment_expression "local_19c = uVar3" identifier = identifier) ;) (expression_statement "local_198 = uVar5;" (assignment_expression "local_198 = uVar5" identifier = identifier) ;) (expression_statement "local_194 = uVar7;" (assignment_expression "local_194 = uVar7" identifier = identifier) ;) (expression_statement "local_190 = uVar6;" (assignment_expression "local_190 = uVar6" identifier = identifier) ;) (expression_statement "local_18c = puVar22;" (assignment_expression "local_18c = puVar22" identifier = identifier) ;) (expression_statement "local_188 = iVar23;" (assignment_expression "local_188 = iVar23" identifier = identifier) ;) (expression_statement "local_184 = param_1;" (assignment_expression "local_184 = param_1" identifier = identifier) ;) (expression_statement "local_180 = unaff_s7;" (assignment_expression "local_180 = unaff_s7" identifier = identifier) ;) (expression_statement "local_17c = uVar25;" (assignment_expression "local_17c = uVar25" identifier = identifier) ;) (expression_statement "SHA_Simple(iVar18,uVar15,piVar16);" (call_expression "SHA_Simple(iVar18,uVar15,piVar16)" identifier (argument_list "(iVar18,uVar15,piVar16)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));" (assignment_expression "iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8))" identifier = (call_expression "bignum_bitcount(*(undefined4 *)(iVar4 + 8))" identifier (argument_list "(*(undefined4 *)(iVar4 + 8))" ( (pointer_expression "*(undefined4 *)(iVar4 + 8)" * (cast_expression "(undefined4 *)(iVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar23 = iVar18 + -1;" (assignment_expression "iVar23 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }" if (parenthesized_expression "(iVar23 < 0)" ( (binary_expression "iVar23 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar23 = iVar18 + 6;\n    }" { (expression_statement "iVar23 = iVar18 + 6;" (assignment_expression "iVar23 = iVar18 + 6" identifier = (binary_expression "iVar18 + 6" identifier + number_literal)) ;) })) (expression_statement "iVar23 = iVar23 >> 3;" (assignment_expression "iVar23 = iVar23 >> 3" identifier = (binary_expression "iVar23 >> 3" identifier >> number_literal)) ;) (if_statement "if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }" if (parenthesized_expression "(0x128 < iVar18)" ( (binary_expression "0x128 < iVar18" number_literal < identifier) )) (compound_statement "{\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }" { (expression_statement "puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);" (assignment_expression "puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" identifier = (cast_expression "(undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c0))" ( (pointer_expression "**(code **)(puVar24 + 0x8f5c0)" * (pointer_expression "*(code **)(puVar24 + 0x8f5c0)" * (cast_expression "(code **)(puVar24 + 0x8f5c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x8f5c0)" ( (binary_expression "puVar24 + 0x8f5c0" identifier + number_literal) ))))) )) (argument_list "(iVar23,1)" ( identifier , number_literal ))))) ;) (expression_statement "iVar18 = iVar23 + -0x24;" (assignment_expression "iVar18 = iVar23 + -0x24" identifier = (binary_expression "iVar23 + -0x24" identifier + number_literal)) ;) (expression_statement "*puVar8 = 1;" (assignment_expression "*puVar8 = 1" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (if_statement "if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }" if (parenthesized_expression "(1 < iVar18)" ( (binary_expression "1 < iVar18" number_literal < identifier) )) (compound_statement "{\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }" { (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);" do (compound_statement "{\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        }" { (expression_statement "*puVar9 = 0xff;" (assignment_expression "*puVar9 = 0xff" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != puVar8 + iVar18)" ( (binary_expression "puVar9 != puVar8 + iVar18" identifier != (binary_expression "puVar8 + iVar18" identifier + identifier)) )) ;) })) (expression_statement "puVar13 = puVar8 + iVar18;" (assignment_expression "puVar13 = puVar8 + iVar18" identifier = (binary_expression "puVar8 + iVar18" identifier + identifier)) ;) (expression_statement "iVar18 = *(int *)(puVar24 + 0x8f5cc);" (assignment_expression "iVar18 = *(int *)(puVar24 + 0x8f5cc)" identifier = (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);" (assignment_expression "puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" identifier = (cast_expression "(undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" ( (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3e69" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) )))) + number_literal) )))) ;) (while_statement "while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }" { (expression_statement "*puVar13 = uVar10;" (assignment_expression "*puVar13 = uVar10" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (if_statement "if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;" if (parenthesized_expression "(puVar9 == (undefined1 *)(iVar18 + 0x3e78))" ( (binary_expression "puVar9 == (undefined1 *)(iVar18 + 0x3e78)" identifier == (cast_expression "(undefined1 *)(iVar18 + 0x3e78)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3e78)" ( (binary_expression "iVar18 + 0x3e78" identifier + number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = *puVar9;" (assignment_expression "uVar10 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar9 = puVar8 + iVar23 + -0x14;" (assignment_expression "puVar9 = puVar8 + iVar23 + -0x14" identifier = (binary_expression "puVar8 + iVar23 + -0x14" (binary_expression "puVar8 + iVar23" identifier + identifier) + number_literal)) ;) (do_statement "do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);" do (compound_statement "{\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      }" { (expression_statement "uVar10 = *(undefined1 *)piVar16;" (assignment_expression "uVar10 = *(undefined1 *)piVar16" identifier = (pointer_expression "*(undefined1 *)piVar16" * (cast_expression "(undefined1 *)piVar16" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar16 = (int *)((int)piVar16 + 1);" (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" identifier = (cast_expression "(int *)((int)piVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 1)" ( (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*puVar9 = uVar10;" (assignment_expression "*puVar9 = uVar10" (pointer_expression "*puVar9" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar16 != local_1a4)" ( (binary_expression "piVar16 != local_1a4" identifier != identifier) )) ;) (expression_statement "uVar3 = bignum_from_bytes(puVar8,iVar23);" (assignment_expression "uVar3 = bignum_from_bytes(puVar8,iVar23)" identifier = (call_expression "bignum_from_bytes(puVar8,iVar23)" identifier (argument_list "(puVar8,iVar23)" ( identifier , identifier )))) ;) (expression_statement "(**(code **)(puVar24 + 0x8f5c4))(puVar8);" (call_expression "(**(code **)(puVar24 + 0x8f5c4))(puVar8)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c4))" ( (pointer_expression "**(code **)(puVar24 + 0x8f5c4)" * (pointer_expression "*(code **)(puVar24 + 0x8f5c4)" * (cast_expression "(code **)(puVar24 + 0x8f5c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x8f5c4)" ( (binary_expression "puVar24 + 0x8f5c4" identifier + number_literal) ))))) )) (argument_list "(puVar8)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_000819b0(uVar3,iVar4);" (assignment_expression "uVar5 = FUN_000819b0(uVar3,iVar4)" identifier = (call_expression "FUN_000819b0(uVar3,iVar4)" identifier (argument_list "(uVar3,iVar4)" ( identifier , identifier )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar18 = bignum_bitcount(uVar5);" (assignment_expression "iVar18 = bignum_bitcount(uVar5)" identifier = (call_expression "bignum_bitcount(uVar5)" identifier (argument_list "(uVar5)" ( identifier )))) ;) (expression_statement "iVar4 = iVar18 + 7;" (assignment_expression "iVar4 = iVar18 + 7" identifier = (binary_expression "iVar18 + 7" identifier + number_literal)) ;) (if_statement "if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar4 = iVar18 + 0xe;\n      }" { (expression_statement "iVar4 = iVar18 + 0xe;" (assignment_expression "iVar4 = iVar18 + 0xe" identifier = (binary_expression "iVar18 + 0xe" identifier + number_literal)) ;) })) (expression_statement "iVar19 = iVar4 >> 3;" (assignment_expression "iVar19 = iVar4 >> 3" identifier = (binary_expression "iVar4 >> 3" identifier >> number_literal)) ;) (expression_statement "puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);" (assignment_expression "puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" identifier = (cast_expression "(undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c0))" ( (pointer_expression "**(code **)(puVar24 + 0x8f5c0)" * (pointer_expression "*(code **)(puVar24 + 0x8f5c0)" * (cast_expression "(code **)(puVar24 + 0x8f5c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x8f5c0)" ( (binary_expression "puVar24 + 0x8f5c0" identifier + number_literal) ))))) )) (argument_list "(iVar19 + 0xf,1)" ( (binary_expression "iVar19 + 0xf" identifier + number_literal) , number_literal ))))) ;) (expression_statement "puVar9[3] = 7;" (assignment_expression "puVar9[3] = 7" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "iVar23 = *(int *)(puVar24 + 0x8f5cc);" (assignment_expression "iVar23 = *(int *)(puVar24 + 0x8f5cc)" identifier = (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) ))))) ;) (expression_statement "puVar9[1] = 0;" (assignment_expression "puVar9[1] = 0" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar14 = *(uint *)(iVar23 + -0x52f0);" (assignment_expression "uVar14 = *(uint *)(iVar23 + -0x52f0)" identifier = (pointer_expression "*(uint *)(iVar23 + -0x52f0)" * (cast_expression "(uint *)(iVar23 + -0x52f0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + -0x52f0)" ( (binary_expression "iVar23 + -0x52f0" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(undefined1 *)(iVar23 + -0x52ec);" (assignment_expression "uVar10 = *(undefined1 *)(iVar23 + -0x52ec)" identifier = (pointer_expression "*(undefined1 *)(iVar23 + -0x52ec)" * (cast_expression "(undefined1 *)(iVar23 + -0x52ec)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + -0x52ec)" ( (binary_expression "iVar23 + -0x52ec" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(undefined1 *)(iVar23 + -0x52eb);" (assignment_expression "uVar1 = *(undefined1 *)(iVar23 + -0x52eb)" identifier = (pointer_expression "*(undefined1 *)(iVar23 + -0x52eb)" * (cast_expression "(undefined1 *)(iVar23 + -0x52eb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + -0x52eb)" ( (binary_expression "iVar23 + -0x52eb" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined1 *)(iVar23 + -0x52ea);" (assignment_expression "uVar2 = *(undefined1 *)(iVar23 + -0x52ea)" identifier = (pointer_expression "*(undefined1 *)(iVar23 + -0x52ea)" * (cast_expression "(undefined1 *)(iVar23 + -0x52ea)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + -0x52ea)" ( (binary_expression "iVar23 + -0x52ea" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "uVar21 = (uint)puVar8 & 3;" (assignment_expression "uVar21 = (uint)puVar8 & 3" identifier = (binary_expression "(uint)puVar8 & 3" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;" (assignment_expression "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" * (cast_expression "(uint *)(puVar8 + -uVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -uVar21)" ( (binary_expression "puVar8 + -uVar21" identifier + (unary_expression "-uVar21" - identifier)) )))) = (binary_expression "*(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8" (binary_expression "*(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" * (cast_expression "(uint *)(puVar8 + -uVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -uVar21)" ( (binary_expression "puVar8 + -uVar21" identifier + (unary_expression "-uVar21" - identifier)) )))) & (binary_expression "-1 << (4 - uVar21) * 8" number_literal << (binary_expression "(4 - uVar21) * 8" (parenthesized_expression "(4 - uVar21)" ( (binary_expression "4 - uVar21" number_literal - identifier) )) * number_literal))) | (binary_expression "uVar14 >> uVar21 * 8" identifier >> (binary_expression "uVar21 * 8" identifier * number_literal)))) ;) (expression_statement "puVar8 = puVar9 + 7;" (assignment_expression "puVar8 = puVar9 + 7" identifier = (binary_expression "puVar9 + 7" identifier + number_literal)) ;) (expression_statement "uVar21 = (uint)puVar8 & 3;" (assignment_expression "uVar21 = (uint)puVar8 & 3" identifier = (binary_expression "(uint)puVar8 & 3" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;" (assignment_expression "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" * (cast_expression "(uint *)(puVar8 + -uVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -uVar21)" ( (binary_expression "puVar8 + -uVar21" identifier + (unary_expression "-uVar21" - identifier)) )))) = (binary_expression "*(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8" (binary_expression "*(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" * (cast_expression "(uint *)(puVar8 + -uVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + -uVar21)" ( (binary_expression "puVar8 + -uVar21" identifier + (unary_expression "-uVar21" - identifier)) )))) & (binary_expression "0xffffffffU >> (uVar21 + 1) * 8" number_literal >> (binary_expression "(uVar21 + 1) * 8" (parenthesized_expression "(uVar21 + 1)" ( (binary_expression "uVar21 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar14 << (3 - uVar21) * 8" identifier << (binary_expression "(3 - uVar21) * 8" (parenthesized_expression "(3 - uVar21)" ( (binary_expression "3 - uVar21" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar9[8] = uVar10;" (assignment_expression "puVar9[8] = uVar10" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[9] = uVar1;" (assignment_expression "puVar9[9] = uVar1" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[10] = uVar2;" (assignment_expression "puVar9[10] = uVar2" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[0xb] = (char)(iVar4 >> 0x1b);" (assignment_expression "puVar9[0xb] = (char)(iVar4 >> 0x1b)" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) = (cast_expression "(char)(iVar4 >> 0x1b)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar4 >> 0x1b)" ( (binary_expression "iVar4 >> 0x1b" identifier >> number_literal) )))) ;) (expression_statement "puVar9[0xc] = (char)(iVar4 >> 0x13);" (assignment_expression "puVar9[0xc] = (char)(iVar4 >> 0x13)" (subscript_expression "puVar9[0xc]" identifier [ number_literal ]) = (cast_expression "(char)(iVar4 >> 0x13)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar4 >> 0x13)" ( (binary_expression "iVar4 >> 0x13" identifier >> number_literal) )))) ;) (expression_statement "puVar9[0xd] = (char)(iVar4 >> 0xb);" (assignment_expression "puVar9[0xd] = (char)(iVar4 >> 0xb)" (subscript_expression "puVar9[0xd]" identifier [ number_literal ]) = (cast_expression "(char)(iVar4 >> 0xb)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(iVar4 >> 0xb)" ( (binary_expression "iVar4 >> 0xb" identifier >> number_literal) )))) ;) (expression_statement "puVar9[0xe] = (char)iVar19;" (assignment_expression "puVar9[0xe] = (char)iVar19" (subscript_expression "puVar9[0xe]" identifier [ number_literal ]) = (cast_expression "(char)iVar19" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }" if (parenthesized_expression "(0 < iVar18)" ( (binary_expression "0 < iVar18" number_literal < identifier) )) (compound_statement "{\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);" do (compound_statement "{\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        }" { (expression_statement "uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);" (assignment_expression "uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18)" identifier = (call_expression "bignum_byte(uVar5,(iVar19 + -1) - iVar18)" identifier (argument_list "(uVar5,(iVar19 + -1) - iVar18)" ( identifier , (binary_expression "(iVar19 + -1) - iVar18" (parenthesized_expression "(iVar19 + -1)" ( (binary_expression "iVar19 + -1" identifier + number_literal) )) - identifier) )))) ;) (expression_statement "iVar4 = iVar18 + 1;" (assignment_expression "iVar4 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar9[iVar18 + 0xf] = uVar10;" (assignment_expression "puVar9[iVar18 + 0xf] = uVar10" (subscript_expression "puVar9[iVar18 + 0xf]" identifier [ (binary_expression "iVar18 + 0xf" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar18 = iVar4;" (assignment_expression "iVar18 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 < iVar19)" ( (binary_expression "iVar4 < iVar19" identifier < identifier) )) ;) })) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "*piVar17 = iVar19 + 0xf;" (assignment_expression "*piVar17 = iVar19 + 0xf" (pointer_expression "*piVar17" * identifier) = (binary_expression "iVar19 + 0xf" identifier + number_literal)) ;) (if_statement "if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }" if (parenthesized_expression "(local_1a4[0] == iVar18)" ( (binary_expression "local_1a4[0] == iVar18" (subscript_expression "local_1a4[0]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n        return puVar9;\n      }" { (return_statement "return puVar9;" return identifier ;) })) (expression_statement "(**(code **)(puVar24 + 0x9059c))();" (call_expression "(**(code **)(puVar24 + 0x9059c))()" (parenthesized_expression "(**(code **)(puVar24 + 0x9059c))" ( (pointer_expression "**(code **)(puVar24 + 0x9059c)" * (pointer_expression "*(code **)(puVar24 + 0x9059c)" * (cast_expression "(code **)(puVar24 + 0x9059c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x9059c)" ( (binary_expression "puVar24 + 0x9059c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "(**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);" (call_expression "(**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48)" (parenthesized_expression "(**(code **)(puVar24 + 0x90224))" ( (pointer_expression "**(code **)(puVar24 + 0x90224)" * (pointer_expression "*(code **)(puVar24 + 0x90224)" * (cast_expression "(code **)(puVar24 + 0x90224)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x90224)" ( (binary_expression "puVar24 + 0x90224" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48)" ( (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3d7c" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3d30" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3e48" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" * (cast_expression "(int *)(puVar24 + 0x8f5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x8f5cc)" ( (binary_expression "puVar24 + 0x8f5cc" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "puVar8 = (undefined1 *)FUN_000819b0();" (assignment_expression "puVar8 = (undefined1 *)FUN_000819b0()" identifier = (cast_expression "(undefined1 *)FUN_000819b0()" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000819b0()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar8;" return identifier ;) })) (return_statement "return puVar8;" 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 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 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) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_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 = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & (field_expression IDENT . field_identifier)) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , 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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) , (binary_expression IDENT < LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) , (binary_expression IDENT != LIT)) ))) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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)) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (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 = 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) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (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 ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 ( (binary_expression IDENT + LIT) , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (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 (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 ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (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 *)) ) (call_expression IDENT (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined1 * FUN_000819b0(undefined4 param_1,int param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  undefined1 uVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  undefined4 uVar15;\n  int *piVar16;\n  int *piVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  undefined *puVar22;\n  int iVar23;\n  uint unaff_s7;\n  undefined *puVar24;\n  undefined4 uVar25;\n  int local_1b8 [5];\n  int local_1a4 [2];\n  undefined4 local_19c;\n  undefined4 local_198;\n  undefined4 local_194;\n  undefined4 local_190;\n  undefined *local_18c;\n  int local_188;\n  undefined4 local_184;\n  uint local_180;\n  undefined4 local_17c;\n  undefined4 local_168;\n  undefined4 local_164;\n  SHA512_CTX SStack_144;\n  byte abStack_6c [64];\n  int local_2c;\n  \n  puVar24 = PTR___stack_chk_guard_00112630;\n  puVar22 = PTR_Zero_00111978;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  puVar11 = PTR_DAT_001112f8 + 0x3d60;\n  uVar21 = 0;\n  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);\n  iVar18 = 0x40;\n  while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  puVar22 = PTR_crt_modpow_00111aac;\n  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));\n  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  piVar17 = *(int **)(param_2 + 0x14);\n  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));\n  uVar15 = *(undefined4 *)(param_2 + 8);\n  iVar18 = iVar4;\n  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);\n  freebn(uVar7);\n  freebn(uVar6);\n  freebn(iVar4);\n  freebn(uVar5);\n  freebn(uVar3);\n  if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }\n  return puVar8;\n}" (type_identifier "undefined1") (pointer_declarator "* FUN_000819b0(undefined4 param_1,int param_2)" (* "*") (function_declarator "FUN_000819b0(undefined4 param_1,int param_2)" (identifier "FUN_000819b0") (parameter_list "(undefined4 param_1,int param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")")))) (compound_statement "{\n  undefined1 uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  undefined1 uVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  undefined4 uVar15;\n  int *piVar16;\n  int *piVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  undefined *puVar22;\n  int iVar23;\n  uint unaff_s7;\n  undefined *puVar24;\n  undefined4 uVar25;\n  int local_1b8 [5];\n  int local_1a4 [2];\n  undefined4 local_19c;\n  undefined4 local_198;\n  undefined4 local_194;\n  undefined4 local_190;\n  undefined *local_18c;\n  int local_188;\n  undefined4 local_184;\n  uint local_180;\n  undefined4 local_17c;\n  undefined4 local_168;\n  undefined4 local_164;\n  SHA512_CTX SStack_144;\n  byte abStack_6c [64];\n  int local_2c;\n  \n  puVar24 = PTR___stack_chk_guard_00112630;\n  puVar22 = PTR_Zero_00111978;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  puVar11 = PTR_DAT_001112f8 + 0x3d60;\n  uVar21 = 0;\n  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);\n  iVar18 = 0x40;\n  while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  puVar22 = PTR_crt_modpow_00111aac;\n  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));\n  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));\n  local_164 = *(undefined4 *)(param_2 + 0x1c);\n  local_168 = *(undefined4 *)(param_2 + 0x18);\n  piVar17 = *(int **)(param_2 + 0x14);\n  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));\n  uVar15 = *(undefined4 *)(param_2 + 8);\n  iVar18 = iVar4;\n  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);\n  freebn(uVar7);\n  freebn(uVar6);\n  freebn(iVar4);\n  freebn(uVar5);\n  freebn(uVar3);\n  if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }\n  return puVar8;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined1 uVar10;" (type_identifier "undefined1") (identifier "uVar10") (; ";")) (declaration "undefined *puVar11;" (type_identifier "undefined") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "undefined4 uVar15;" (type_identifier "undefined4") (identifier "uVar15") (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "int *piVar20;" (primitive_type "int") (pointer_declarator "*piVar20" (* "*") (identifier "piVar20")) (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "undefined *puVar22;" (type_identifier "undefined") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "int iVar23;" (primitive_type "int") (identifier "iVar23") (; ";")) (declaration "uint unaff_s7;" (type_identifier "uint") (identifier "unaff_s7") (; ";")) (declaration "undefined *puVar24;" (type_identifier "undefined") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "undefined4 uVar25;" (type_identifier "undefined4") (identifier "uVar25") (; ";")) (declaration "int local_1b8 [5];" (primitive_type "int") (array_declarator "local_1b8 [5]" (identifier "local_1b8") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "int local_1a4 [2];" (primitive_type "int") (array_declarator "local_1a4 [2]" (identifier "local_1a4") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined4 local_19c;" (type_identifier "undefined4") (identifier "local_19c") (; ";")) (declaration "undefined4 local_198;" (type_identifier "undefined4") (identifier "local_198") (; ";")) (declaration "undefined4 local_194;" (type_identifier "undefined4") (identifier "local_194") (; ";")) (declaration "undefined4 local_190;" (type_identifier "undefined4") (identifier "local_190") (; ";")) (declaration "undefined *local_18c;" (type_identifier "undefined") (pointer_declarator "*local_18c" (* "*") (identifier "local_18c")) (; ";")) (declaration "int local_188;" (primitive_type "int") (identifier "local_188") (; ";")) (declaration "undefined4 local_184;" (type_identifier "undefined4") (identifier "local_184") (; ";")) (declaration "uint local_180;" (type_identifier "uint") (identifier "local_180") (; ";")) (declaration "undefined4 local_17c;" (type_identifier "undefined4") (identifier "local_17c") (; ";")) (declaration "undefined4 local_168;" (type_identifier "undefined4") (identifier "local_168") (; ";")) (declaration "undefined4 local_164;" (type_identifier "undefined4") (identifier "local_164") (; ";")) (declaration "SHA512_CTX SStack_144;" (type_identifier "SHA512_CTX") (identifier "SStack_144") (; ";")) (declaration "byte abStack_6c [64];" (type_identifier "byte") (array_declarator "abStack_6c [64]" (identifier "abStack_6c") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar24 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar24 = PTR___stack_chk_guard_00112630" (identifier "puVar24") (= "=") (identifier "PTR___stack_chk_guard_00112630")) (; ";")) (expression_statement "puVar22 = PTR_Zero_00111978;" (assignment_expression "puVar22 = PTR_Zero_00111978" (identifier "puVar22") (= "=") (identifier "PTR_Zero_00111978")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00112630" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00112630")))) (; ";")) (expression_statement "puVar11 = PTR_DAT_001112f8 + 0x3d60;" (assignment_expression "puVar11 = PTR_DAT_001112f8 + 0x3d60" (identifier "puVar11") (= "=") (binary_expression "PTR_DAT_001112f8 + 0x3d60" (identifier "PTR_DAT_001112f8") (+ "+") (number_literal "0x3d60"))) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);" (assignment_expression "pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280)" (identifier "pcVar12") (= "=") (cast_expression "(code *)(PTR_LAB_00111a28 + 0x280)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00111a28 + 0x280)" (( "(") (binary_expression "PTR_LAB_00111a28 + 0x280" (identifier "PTR_LAB_00111a28") (+ "+") (number_literal "0x280")) () ")")))) (; ";")) (expression_statement "iVar18 = 0x40;" (assignment_expression "iVar18 = 0x40" (identifier "iVar18") (= "=") (number_literal "0x40")) (; ";")) (while_statement "while( true ) {\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    uVar3 = copybn(*(undefined4 *)(param_2 + 8));\n    iVar4 = bignum_bitcount(uVar3);\n    iVar23 = iVar4 + -1;\n    if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }\n    bn_restore_invariant(uVar3);\n    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);\n    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;\n    freebn(uVar3);\n  }" ({ "{") (expression_statement "uVar3 = copybn(*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(param_2 + 8))" (identifier "uVar3") (= "=") (call_expression "copybn(*(undefined4 *)(param_2 + 8))" (identifier "copybn") (argument_list "(*(undefined4 *)(param_2 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar4 = bignum_bitcount(uVar3);" (assignment_expression "iVar4 = bignum_bitcount(uVar3)" (identifier "iVar4") (= "=") (call_expression "bignum_bitcount(uVar3)" (identifier "bignum_bitcount") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "iVar23 = iVar4 + -1;" (assignment_expression "iVar23 = iVar4 + -1" (identifier "iVar23") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar4 != 0) {\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar4 = 0;\n      unaff_s7 = 0;\n      do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);\n    }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s7 = 0;" (assignment_expression "unaff_s7 = 0" (identifier "unaff_s7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      } while (iVar23 != -1);" (do "do") (compound_statement "{\n        if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }\n        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);\n        iVar23 = iVar23 + -1;\n        unaff_s7 = (int)unaff_s7 >> 1;\n      }" ({ "{") (if_statement "if (iVar4 == 0) {\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }\n        else {\n          iVar4 = iVar4 + -1;\n        }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }\n          iVar4 = 7;\n          unaff_s7 = (uint)abStack_6c[iVar18];\n          iVar18 = iVar19;\n          uVar21 = uVar14;\n        }" ({ "{") (if_statement "if (iVar18 == 0x40) {\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }\n          else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" (if "if") (parenthesized_expression "(iVar18 == 0x40)" (( "(") (binary_expression "iVar18 == 0x40" (identifier "iVar18") (== "==") (number_literal "0x40")) () ")")) (compound_statement "{\n            uVar14 = uVar21 + 1;\n            SStack_144.md_len = uVar21;\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,puVar11,0x1a);\n            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);\n            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            SHA512_Init(&SStack_144);\n            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);\n            (*pcVar12)(&SStack_144,param_1);\n            iVar19 = 1;\n            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);\n            iVar18 = 0;\n          }" ({ "{") (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "SStack_144.md_len = uVar21;" (assignment_expression "SStack_144.md_len = uVar21" (field_expression "SStack_144.md_len" (identifier "SStack_144") (. ".") (field_identifier "md_len")) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "SHA512_Init(&SStack_144);" (call_expression "SHA512_Init(&SStack_144)" (identifier "SHA512_Init") (argument_list "(&SStack_144)" (( "(") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144")) () ")"))) (; ";")) (expression_statement "SHA512_Bytes(&SStack_144,puVar11,0x1a);" (call_expression "SHA512_Bytes(&SStack_144,puVar11,0x1a)" (identifier "SHA512_Bytes") (argument_list "(&SStack_144,puVar11,0x1a)" (( "(") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144")) (, ",") (identifier "puVar11") (, ",") (number_literal "0x1a") () ")"))) (; ";")) (expression_statement "SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);" (call_expression "SHA512_Bytes(&SStack_144,&SStack_144.md_len,4)" (identifier "SHA512_Bytes") (argument_list "(&SStack_144,&SStack_144.md_len,4)" (( "(") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144")) (, ",") (pointer_expression "&SStack_144.md_len" (& "&") (field_expression "SStack_144.md_len" (identifier "SStack_144") (. ".") (field_identifier "md_len"))) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "(*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));" (call_expression "(*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10))" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(&SStack_144,*(undefined4 *)(param_2 + 0x10))" (( "(") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144")) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (expression_statement "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);" (call_expression "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" (identifier "SHA512_Final") (argument_list "((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" (( "(") (cast_expression "(uchar *)&SStack_144" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144"))) (, ",") (cast_expression "(SHA512_CTX *)abStack_6c" (( "(") (type_descriptor "SHA512_CTX *" (type_identifier "SHA512_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "abStack_6c")) () ")"))) (; ";")) (expression_statement "SHA512_Init(&SStack_144);" (call_expression "SHA512_Init(&SStack_144)" (identifier "SHA512_Init") (argument_list "(&SStack_144)" (( "(") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144")) () ")"))) (; ";")) (expression_statement "SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);" (call_expression "SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40)" (identifier "SHA512_Bytes") (argument_list "(&SStack_144,(SHA512_CTX *)abStack_6c,0x40)" (( "(") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144")) (, ",") (cast_expression "(SHA512_CTX *)abStack_6c" (( "(") (type_descriptor "SHA512_CTX *" (type_identifier "SHA512_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "abStack_6c")) (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "(*pcVar12)(&SStack_144,param_1);" (call_expression "(*pcVar12)(&SStack_144,param_1)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(&SStack_144,param_1)" (( "(") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (expression_statement "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);" (call_expression "SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" (identifier "SHA512_Final") (argument_list "((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c)" (( "(") (cast_expression "(uchar *)&SStack_144" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&SStack_144" (& "&") (identifier "SStack_144"))) (, ",") (cast_expression "(SHA512_CTX *)abStack_6c" (( "(") (type_descriptor "SHA512_CTX *" (type_identifier "SHA512_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "abStack_6c")) () ")"))) (; ";")) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" (else "else") (compound_statement "{\n            iVar19 = iVar18 + 1;\n            uVar14 = uVar21;\n          }" ({ "{") (expression_statement "iVar19 = iVar18 + 1;" (assignment_expression "iVar19 = iVar18 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar14 = uVar21;" (assignment_expression "uVar14 = uVar21" (identifier "uVar14") (= "=") (identifier "uVar21")) (; ";")) (} "}")))) (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" (identifier "iVar4") (= "=") (number_literal "7")) (; ";")) (expression_statement "unaff_s7 = (uint)abStack_6c[iVar18];" (assignment_expression "unaff_s7 = (uint)abStack_6c[iVar18]" (identifier "unaff_s7") (= "=") (cast_expression "(uint)abStack_6c[iVar18]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "abStack_6c[iVar18]" (identifier "abStack_6c") ([ "[") (identifier "iVar18") (] "]")))) (; ";")) (expression_statement "iVar18 = iVar19;" (assignment_expression "iVar18 = iVar19" (identifier "iVar18") (= "=") (identifier "iVar19")) (; ";")) (expression_statement "uVar21 = uVar14;" (assignment_expression "uVar21 = uVar14" (identifier "uVar21") (= "=") (identifier "uVar14")) (; ";")) (} "}")) (else_clause "else {\n          iVar4 = iVar4 + -1;\n        }" (else "else") (compound_statement "{\n          iVar4 = iVar4 + -1;\n        }" ({ "{") (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (} "}")))) (expression_statement "bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);" (call_expression "bignum_set_bit(uVar3,iVar23,unaff_s7 & 1)" (identifier "bignum_set_bit") (argument_list "(uVar3,iVar23,unaff_s7 & 1)" (( "(") (identifier "uVar3") (, ",") (identifier "iVar23") (, ",") (binary_expression "unaff_s7 & 1" (identifier "unaff_s7") (& "&") (number_literal "1")) () ")"))) (; ";")) (expression_statement "iVar23 = iVar23 + -1;" (assignment_expression "iVar23 = iVar23 + -1" (identifier "iVar23") (= "=") (binary_expression "iVar23 + -1" (identifier "iVar23") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "unaff_s7 = (int)unaff_s7 >> 1;" (assignment_expression "unaff_s7 = (int)unaff_s7 >> 1" (identifier "unaff_s7") (= "=") (binary_expression "(int)unaff_s7 >> 1" (cast_expression "(int)unaff_s7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s7")) (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar23 != -1)" (( "(") (binary_expression "iVar23 != -1" (identifier "iVar23") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "bn_restore_invariant(uVar3);" (call_expression "bn_restore_invariant(uVar3)" (identifier "bn_restore_invariant") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22)" (identifier "iVar4") (= "=") (call_expression "bignum_cmp(uVar3,*(undefined4 *)puVar22)" (identifier "bignum_cmp") (argument_list "(uVar3,*(undefined4 *)puVar22)" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*(undefined4 *)puVar22" (* "*") (cast_expression "(undefined4 *)puVar22" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar22"))) () ")")))) (; ";")) (if_statement "if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;" (if "if") (parenthesized_expression "(((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0))" (( "(") (binary_expression "((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&\n       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)" (parenthesized_expression "((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0))" (( "(") (binary_expression "(0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)" (parenthesized_expression "(0 < iVar4)" (( "(") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)" (( "(") (comma_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0" (assignment_expression "iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8))" (identifier "iVar4") (= "=") (call_expression "bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8))" (identifier "bignum_cmp") (argument_list "(uVar3,*(undefined4 *)(param_2 + 8))" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (, ",") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)" (( "(") (comma_expression "iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0" (assignment_expression "iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8))" (identifier "iVar4") (= "=") (call_expression "modinv(uVar3,*(undefined4 *)(param_2 + 8))" (identifier "modinv") (argument_list "(uVar3,*(undefined4 *)(param_2 + 8))" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (} "}"))) (expression_statement "local_164 = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "local_164 = *(undefined4 *)(param_2 + 0x1c)" (identifier "local_164") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "local_168 = *(undefined4 *)(param_2 + 0x18);" (assignment_expression "local_168 = *(undefined4 *)(param_2 + 0x18)" (identifier "local_168") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "puVar22 = PTR_crt_modpow_00111aac;" (assignment_expression "puVar22 = PTR_crt_modpow_00111aac" (identifier "puVar22") (= "=") (identifier "PTR_crt_modpow_00111aac")) (; ";")) (expression_statement "uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14));" (assignment_expression "uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" (identifier "uVar5") (= "=") (call_expression "crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" (identifier "crt_modpow") (argument_list "(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),\n                     *(undefined4 *)(param_2 + 0x14))" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8))" (identifier "uVar6") (= "=") (call_expression "modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8))" (identifier "modmul") (argument_list "(param_1,uVar5,*(undefined4 *)(param_2 + 8))" (( "(") (identifier "param_1") (, ",") (identifier "uVar5") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "local_164 = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "local_164 = *(undefined4 *)(param_2 + 0x1c)" (identifier "local_164") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "local_168 = *(undefined4 *)(param_2 + 0x18);" (assignment_expression "local_168 = *(undefined4 *)(param_2 + 0x18)" (identifier "local_168") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "piVar17 = *(int **)(param_2 + 0x14);" (assignment_expression "piVar17 = *(int **)(param_2 + 0x14)" (identifier "piVar17") (= "=") (pointer_expression "*(int **)(param_2 + 0x14)" (* "*") (cast_expression "(int **)(param_2 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" (identifier "uVar7") (= "=") (call_expression "crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" (identifier "crt_modpow") (argument_list "(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8))" (( "(") (identifier "uVar6") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar15 = *(undefined4 *)(param_2 + 8);" (assignment_expression "uVar15 = *(undefined4 *)(param_2 + 8)" (identifier "uVar15") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar18 = iVar4;" (assignment_expression "iVar18 = iVar4" (identifier "iVar18") (= "=") (identifier "iVar4")) (; ";")) (expression_statement "puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);" (assignment_expression "puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15)" (identifier "puVar8") (= "=") (cast_expression "(undefined1 *)modmul(uVar7,iVar4,uVar15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "modmul(uVar7,iVar4,uVar15)" (identifier "modmul") (argument_list "(uVar7,iVar4,uVar15)" (( "(") (identifier "uVar7") (, ",") (identifier "iVar4") (, ",") (identifier "uVar15") () ")"))))) (; ";")) (expression_statement "freebn(uVar7);" (call_expression "freebn(uVar7)" (identifier "freebn") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "freebn(uVar6);" (call_expression "freebn(uVar6)" (identifier "freebn") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "freebn(iVar4);" (call_expression "freebn(iVar4)" (identifier "freebn") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" (identifier "freebn") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if (local_2c != *(int *)puVar24) {\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }" (if "if") (parenthesized_expression "(local_2c != *(int *)puVar24)" (( "(") (binary_expression "local_2c != *(int *)puVar24" (identifier "local_2c") (!= "!=") (pointer_expression "*(int *)puVar24" (* "*") (cast_expression "(int *)puVar24" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar24")))) () ")")) (compound_statement "{\n    uVar25 = 0x81d2c;\n    iVar4 = local_2c;\n    puVar24 = PTR___stack_chk_fail_001122c8;\n    (*(code *)PTR___stack_chk_fail_001122c8)();\n    piVar20 = *(int **)(puVar24 + 0x90904);\n    piVar16 = local_1b8;\n    local_1a4[0] = *piVar20;\n    local_19c = uVar3;\n    local_198 = uVar5;\n    local_194 = uVar7;\n    local_190 = uVar6;\n    local_18c = puVar22;\n    local_188 = iVar23;\n    local_184 = param_1;\n    local_180 = unaff_s7;\n    local_17c = uVar25;\n    SHA_Simple(iVar18,uVar15,piVar16);\n    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));\n    iVar23 = iVar18 + -1;\n    if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }\n    iVar23 = iVar23 >> 3;\n    if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }\n    (**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);\n    puVar8 = (undefined1 *)FUN_000819b0();\n    return puVar8;\n  }" ({ "{") (expression_statement "uVar25 = 0x81d2c;" (assignment_expression "uVar25 = 0x81d2c" (identifier "uVar25") (= "=") (number_literal "0x81d2c")) (; ";")) (expression_statement "iVar4 = local_2c;" (assignment_expression "iVar4 = local_2c" (identifier "iVar4") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar24 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar24 = PTR___stack_chk_fail_001122c8" (identifier "puVar24") (= "=") (identifier "PTR___stack_chk_fail_001122c8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_001122c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_001122c8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar20 = *(int **)(puVar24 + 0x90904);" (assignment_expression "piVar20 = *(int **)(puVar24 + 0x90904)" (identifier "piVar20") (= "=") (pointer_expression "*(int **)(puVar24 + 0x90904)" (* "*") (cast_expression "(int **)(puVar24 + 0x90904)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x90904)" (( "(") (binary_expression "puVar24 + 0x90904" (identifier "puVar24") (+ "+") (number_literal "0x90904")) () ")"))))) (; ";")) (expression_statement "piVar16 = local_1b8;" (assignment_expression "piVar16 = local_1b8" (identifier "piVar16") (= "=") (identifier "local_1b8")) (; ";")) (expression_statement "local_1a4[0] = *piVar20;" (assignment_expression "local_1a4[0] = *piVar20" (subscript_expression "local_1a4[0]" (identifier "local_1a4") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (expression_statement "local_19c = uVar3;" (assignment_expression "local_19c = uVar3" (identifier "local_19c") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "local_198 = uVar5;" (assignment_expression "local_198 = uVar5" (identifier "local_198") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "local_194 = uVar7;" (assignment_expression "local_194 = uVar7" (identifier "local_194") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "local_190 = uVar6;" (assignment_expression "local_190 = uVar6" (identifier "local_190") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "local_18c = puVar22;" (assignment_expression "local_18c = puVar22" (identifier "local_18c") (= "=") (identifier "puVar22")) (; ";")) (expression_statement "local_188 = iVar23;" (assignment_expression "local_188 = iVar23" (identifier "local_188") (= "=") (identifier "iVar23")) (; ";")) (expression_statement "local_184 = param_1;" (assignment_expression "local_184 = param_1" (identifier "local_184") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_180 = unaff_s7;" (assignment_expression "local_180 = unaff_s7" (identifier "local_180") (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "local_17c = uVar25;" (assignment_expression "local_17c = uVar25" (identifier "local_17c") (= "=") (identifier "uVar25")) (; ";")) (expression_statement "SHA_Simple(iVar18,uVar15,piVar16);" (call_expression "SHA_Simple(iVar18,uVar15,piVar16)" (identifier "SHA_Simple") (argument_list "(iVar18,uVar15,piVar16)" (( "(") (identifier "iVar18") (, ",") (identifier "uVar15") (, ",") (identifier "piVar16") () ")"))) (; ";")) (expression_statement "iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));" (assignment_expression "iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8))" (identifier "iVar18") (= "=") (call_expression "bignum_bitcount(*(undefined4 *)(iVar4 + 8))" (identifier "bignum_bitcount") (argument_list "(*(undefined4 *)(iVar4 + 8))" (( "(") (pointer_expression "*(undefined4 *)(iVar4 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar23 = iVar18 + -1;" (assignment_expression "iVar23 = iVar18 + -1" (identifier "iVar23") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar23 < 0) {\n      iVar23 = iVar18 + 6;\n    }" (if "if") (parenthesized_expression "(iVar23 < 0)" (( "(") (binary_expression "iVar23 < 0" (identifier "iVar23") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar23 = iVar18 + 6;\n    }" ({ "{") (expression_statement "iVar23 = iVar18 + 6;" (assignment_expression "iVar23 = iVar18 + 6" (identifier "iVar23") (= "=") (binary_expression "iVar18 + 6" (identifier "iVar18") (+ "+") (number_literal "6"))) (; ";")) (} "}"))) (expression_statement "iVar23 = iVar23 >> 3;" (assignment_expression "iVar23 = iVar23 >> 3" (identifier "iVar23") (= "=") (binary_expression "iVar23 >> 3" (identifier "iVar23") (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if (0x128 < iVar18) {\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }" (if "if") (parenthesized_expression "(0x128 < iVar18)" (( "(") (binary_expression "0x128 < iVar18" (number_literal "0x128") (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);\n      iVar18 = iVar23 + -0x24;\n      *puVar8 = 1;\n      if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }\n      puVar13 = puVar8 + iVar18;\n      iVar18 = *(int *)(puVar24 + 0x8f5cc);\n      uVar10 = 0;\n      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);\n      while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }\n      puVar9 = puVar8 + iVar23 + -0x14;\n      do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);\n      uVar3 = bignum_from_bytes(puVar8,iVar23);\n      (**(code **)(puVar24 + 0x8f5c4))(puVar8);\n      uVar5 = FUN_000819b0(uVar3,iVar4);\n      freebn(uVar3);\n      iVar18 = bignum_bitcount(uVar5);\n      iVar4 = iVar18 + 7;\n      if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }\n      iVar19 = iVar4 >> 3;\n      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);\n      puVar9[3] = 7;\n      *puVar9 = 0;\n      iVar23 = *(int *)(puVar24 + 0x8f5cc);\n      puVar9[1] = 0;\n      puVar9[2] = 0;\n      uVar14 = *(uint *)(iVar23 + -0x52f0);\n      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);\n      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);\n      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);\n      puVar8 = puVar9 + 4;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;\n      puVar8 = puVar9 + 7;\n      uVar21 = (uint)puVar8 & 3;\n      *(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;\n      puVar9[8] = uVar10;\n      puVar9[9] = uVar1;\n      puVar9[10] = uVar2;\n      puVar9[0xb] = (char)(iVar4 >> 0x1b);\n      puVar9[0xc] = (char)(iVar4 >> 0x13);\n      puVar9[0xd] = (char)(iVar4 >> 0xb);\n      puVar9[0xe] = (char)iVar19;\n      if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }\n      freebn(uVar5);\n      iVar18 = *piVar20;\n      *piVar17 = iVar19 + 0xf;\n      if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }\n      (**(code **)(puVar24 + 0x9059c))();\n    }" ({ "{") (expression_statement "puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);" (assignment_expression "puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" (identifier "puVar8") (= "=") (cast_expression "(undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar24 + 0x8f5c0))(iVar23,1)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c0))" (( "(") (pointer_expression "**(code **)(puVar24 + 0x8f5c0)" (* "*") (pointer_expression "*(code **)(puVar24 + 0x8f5c0)" (* "*") (cast_expression "(code **)(puVar24 + 0x8f5c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x8f5c0)" (( "(") (binary_expression "puVar24 + 0x8f5c0" (identifier "puVar24") (+ "+") (number_literal "0x8f5c0")) () ")"))))) () ")")) (argument_list "(iVar23,1)" (( "(") (identifier "iVar23") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "iVar18 = iVar23 + -0x24;" (assignment_expression "iVar18 = iVar23 + -0x24" (identifier "iVar18") (= "=") (binary_expression "iVar23 + -0x24" (identifier "iVar23") (+ "+") (number_literal "-0x24"))) (; ";")) (expression_statement "*puVar8 = 1;" (assignment_expression "*puVar8 = 1" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (1 < iVar18) {\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }" (if "if") (parenthesized_expression "(1 < iVar18)" (( "(") (binary_expression "1 < iVar18" (number_literal "1") (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n        puVar9 = puVar8 + 1;\n        do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);\n      }" ({ "{") (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        } while (puVar9 != puVar8 + iVar18);" (do "do") (compound_statement "{\n          *puVar9 = 0xff;\n          puVar9 = puVar9 + 1;\n        }" ({ "{") (expression_statement "*puVar9 = 0xff;" (assignment_expression "*puVar9 = 0xff" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != puVar8 + iVar18)" (( "(") (binary_expression "puVar9 != puVar8 + iVar18" (identifier "puVar9") (!= "!=") (binary_expression "puVar8 + iVar18" (identifier "puVar8") (+ "+") (identifier "iVar18"))) () ")")) (; ";")) (} "}"))) (expression_statement "puVar13 = puVar8 + iVar18;" (assignment_expression "puVar13 = puVar8 + iVar18" (identifier "puVar13") (= "=") (binary_expression "puVar8 + iVar18" (identifier "puVar8") (+ "+") (identifier "iVar18"))) (; ";")) (expression_statement "iVar18 = *(int *)(puVar24 + 0x8f5cc);" (assignment_expression "iVar18 = *(int *)(puVar24 + 0x8f5cc)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" (* "*") (cast_expression "(int *)(puVar24 + 0x8f5cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x8f5cc)" (( "(") (binary_expression "puVar24 + 0x8f5cc" (identifier "puVar24") (+ "+") (number_literal "0x8f5cc")) () ")"))))) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);" (assignment_expression "puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" (identifier "puVar9") (= "=") (cast_expression "(undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar24 + 0x8f5cc) + 0x3e69)" (( "(") (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3e69" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" (* "*") (cast_expression "(int *)(puVar24 + 0x8f5cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x8f5cc)" (( "(") (binary_expression "puVar24 + 0x8f5cc" (identifier "puVar24") (+ "+") (number_literal "0x8f5cc")) () ")")))) (+ "+") (number_literal "0x3e69")) () ")")))) (; ";")) (while_statement "while( true ) {\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        *puVar13 = uVar10;\n        puVar13 = puVar13 + 1;\n        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;\n        uVar10 = *puVar9;\n        puVar9 = puVar9 + 1;\n      }" ({ "{") (expression_statement "*puVar13 = uVar10;" (assignment_expression "*puVar13 = uVar10" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;" (if "if") (parenthesized_expression "(puVar9 == (undefined1 *)(iVar18 + 0x3e78))" (( "(") (binary_expression "puVar9 == (undefined1 *)(iVar18 + 0x3e78)" (identifier "puVar9") (== "==") (cast_expression "(undefined1 *)(iVar18 + 0x3e78)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3e78)" (( "(") (binary_expression "iVar18 + 0x3e78" (identifier "iVar18") (+ "+") (number_literal "0x3e78")) () ")")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar10 = *puVar9;" (assignment_expression "uVar10 = *puVar9" (identifier "uVar10") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar9 = puVar8 + iVar23 + -0x14;" (assignment_expression "puVar9 = puVar8 + iVar23 + -0x14" (identifier "puVar9") (= "=") (binary_expression "puVar8 + iVar23 + -0x14" (binary_expression "puVar8 + iVar23" (identifier "puVar8") (+ "+") (identifier "iVar23")) (+ "+") (number_literal "-0x14"))) (; ";")) (do_statement "do {\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      } while (piVar16 != local_1a4);" (do "do") (compound_statement "{\n        uVar10 = *(undefined1 *)piVar16;\n        piVar16 = (int *)((int)piVar16 + 1);\n        *puVar9 = uVar10;\n        puVar9 = puVar9 + 1;\n      }" ({ "{") (expression_statement "uVar10 = *(undefined1 *)piVar16;" (assignment_expression "uVar10 = *(undefined1 *)piVar16" (identifier "uVar10") (= "=") (pointer_expression "*(undefined1 *)piVar16" (* "*") (cast_expression "(undefined1 *)piVar16" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar16")))) (; ";")) (expression_statement "piVar16 = (int *)((int)piVar16 + 1);" (assignment_expression "piVar16 = (int *)((int)piVar16 + 1)" (identifier "piVar16") (= "=") (cast_expression "(int *)((int)piVar16 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar16 + 1)" (( "(") (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar9 = uVar10;" (assignment_expression "*puVar9 = uVar10" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar16 != local_1a4)" (( "(") (binary_expression "piVar16 != local_1a4" (identifier "piVar16") (!= "!=") (identifier "local_1a4")) () ")")) (; ";")) (expression_statement "uVar3 = bignum_from_bytes(puVar8,iVar23);" (assignment_expression "uVar3 = bignum_from_bytes(puVar8,iVar23)" (identifier "uVar3") (= "=") (call_expression "bignum_from_bytes(puVar8,iVar23)" (identifier "bignum_from_bytes") (argument_list "(puVar8,iVar23)" (( "(") (identifier "puVar8") (, ",") (identifier "iVar23") () ")")))) (; ";")) (expression_statement "(**(code **)(puVar24 + 0x8f5c4))(puVar8);" (call_expression "(**(code **)(puVar24 + 0x8f5c4))(puVar8)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c4))" (( "(") (pointer_expression "**(code **)(puVar24 + 0x8f5c4)" (* "*") (pointer_expression "*(code **)(puVar24 + 0x8f5c4)" (* "*") (cast_expression "(code **)(puVar24 + 0x8f5c4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x8f5c4)" (( "(") (binary_expression "puVar24 + 0x8f5c4" (identifier "puVar24") (+ "+") (number_literal "0x8f5c4")) () ")"))))) () ")")) (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (; ";")) (expression_statement "uVar5 = FUN_000819b0(uVar3,iVar4);" (assignment_expression "uVar5 = FUN_000819b0(uVar3,iVar4)" (identifier "uVar5") (= "=") (call_expression "FUN_000819b0(uVar3,iVar4)" (identifier "FUN_000819b0") (argument_list "(uVar3,iVar4)" (( "(") (identifier "uVar3") (, ",") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar18 = bignum_bitcount(uVar5);" (assignment_expression "iVar18 = bignum_bitcount(uVar5)" (identifier "iVar18") (= "=") (call_expression "bignum_bitcount(uVar5)" (identifier "bignum_bitcount") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")")))) (; ";")) (expression_statement "iVar4 = iVar18 + 7;" (assignment_expression "iVar4 = iVar18 + 7" (identifier "iVar4") (= "=") (binary_expression "iVar18 + 7" (identifier "iVar18") (+ "+") (number_literal "7"))) (; ";")) (if_statement "if (iVar4 < 0) {\n        iVar4 = iVar18 + 0xe;\n      }" (if "if") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar4 = iVar18 + 0xe;\n      }" ({ "{") (expression_statement "iVar4 = iVar18 + 0xe;" (assignment_expression "iVar4 = iVar18 + 0xe" (identifier "iVar4") (= "=") (binary_expression "iVar18 + 0xe" (identifier "iVar18") (+ "+") (number_literal "0xe"))) (; ";")) (} "}"))) (expression_statement "iVar19 = iVar4 >> 3;" (assignment_expression "iVar19 = iVar4 >> 3" (identifier "iVar19") (= "=") (binary_expression "iVar4 >> 3" (identifier "iVar4") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);" (assignment_expression "puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" (identifier "puVar9") (= "=") (cast_expression "(undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1)" (parenthesized_expression "(**(code **)(puVar24 + 0x8f5c0))" (( "(") (pointer_expression "**(code **)(puVar24 + 0x8f5c0)" (* "*") (pointer_expression "*(code **)(puVar24 + 0x8f5c0)" (* "*") (cast_expression "(code **)(puVar24 + 0x8f5c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x8f5c0)" (( "(") (binary_expression "puVar24 + 0x8f5c0" (identifier "puVar24") (+ "+") (number_literal "0x8f5c0")) () ")"))))) () ")")) (argument_list "(iVar19 + 0xf,1)" (( "(") (binary_expression "iVar19 + 0xf" (identifier "iVar19") (+ "+") (number_literal "0xf")) (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "puVar9[3] = 7;" (assignment_expression "puVar9[3] = 7" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "7")) (; ";")) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar23 = *(int *)(puVar24 + 0x8f5cc);" (assignment_expression "iVar23 = *(int *)(puVar24 + 0x8f5cc)" (identifier "iVar23") (= "=") (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" (* "*") (cast_expression "(int *)(puVar24 + 0x8f5cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x8f5cc)" (( "(") (binary_expression "puVar24 + 0x8f5cc" (identifier "puVar24") (+ "+") (number_literal "0x8f5cc")) () ")"))))) (; ";")) (expression_statement "puVar9[1] = 0;" (assignment_expression "puVar9[1] = 0" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = *(uint *)(iVar23 + -0x52f0);" (assignment_expression "uVar14 = *(uint *)(iVar23 + -0x52f0)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(iVar23 + -0x52f0)" (* "*") (cast_expression "(uint *)(iVar23 + -0x52f0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar23 + -0x52f0)" (( "(") (binary_expression "iVar23 + -0x52f0" (identifier "iVar23") (+ "+") (number_literal "-0x52f0")) () ")"))))) (; ";")) (expression_statement "uVar10 = *(undefined1 *)(iVar23 + -0x52ec);" (assignment_expression "uVar10 = *(undefined1 *)(iVar23 + -0x52ec)" (identifier "uVar10") (= "=") (pointer_expression "*(undefined1 *)(iVar23 + -0x52ec)" (* "*") (cast_expression "(undefined1 *)(iVar23 + -0x52ec)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar23 + -0x52ec)" (( "(") (binary_expression "iVar23 + -0x52ec" (identifier "iVar23") (+ "+") (number_literal "-0x52ec")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(undefined1 *)(iVar23 + -0x52eb);" (assignment_expression "uVar1 = *(undefined1 *)(iVar23 + -0x52eb)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined1 *)(iVar23 + -0x52eb)" (* "*") (cast_expression "(undefined1 *)(iVar23 + -0x52eb)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar23 + -0x52eb)" (( "(") (binary_expression "iVar23 + -0x52eb" (identifier "iVar23") (+ "+") (number_literal "-0x52eb")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(undefined1 *)(iVar23 + -0x52ea);" (assignment_expression "uVar2 = *(undefined1 *)(iVar23 + -0x52ea)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined1 *)(iVar23 + -0x52ea)" (* "*") (cast_expression "(undefined1 *)(iVar23 + -0x52ea)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar23 + -0x52ea)" (( "(") (binary_expression "iVar23 + -0x52ea" (identifier "iVar23") (+ "+") (number_literal "-0x52ea")) () ")"))))) (; ";")) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" (identifier "puVar8") (= "=") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar21 = (uint)puVar8 & 3;" (assignment_expression "uVar21 = (uint)puVar8 & 3" (identifier "uVar21") (= "=") (binary_expression "(uint)puVar8 & 3" (cast_expression "(uint)puVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar8")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;" (assignment_expression "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" (* "*") (cast_expression "(uint *)(puVar8 + -uVar21)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -uVar21)" (( "(") (binary_expression "puVar8 + -uVar21" (identifier "puVar8") (+ "+") (unary_expression "-uVar21" (- "-") (identifier "uVar21"))) () ")")))) (= "=") (binary_expression "*(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8" (binary_expression "*(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" (* "*") (cast_expression "(uint *)(puVar8 + -uVar21)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -uVar21)" (( "(") (binary_expression "puVar8 + -uVar21" (identifier "puVar8") (+ "+") (unary_expression "-uVar21" (- "-") (identifier "uVar21"))) () ")")))) (& "&") (binary_expression "-1 << (4 - uVar21) * 8" (number_literal "-1") (<< "<<") (binary_expression "(4 - uVar21) * 8" (parenthesized_expression "(4 - uVar21)" (( "(") (binary_expression "4 - uVar21" (number_literal "4") (- "-") (identifier "uVar21")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "uVar14 >> uVar21 * 8" (identifier "uVar14") (>> ">>") (binary_expression "uVar21 * 8" (identifier "uVar21") (* "*") (number_literal "8"))))) (; ";")) (expression_statement "puVar8 = puVar9 + 7;" (assignment_expression "puVar8 = puVar9 + 7" (identifier "puVar8") (= "=") (binary_expression "puVar9 + 7" (identifier "puVar9") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar21 = (uint)puVar8 & 3;" (assignment_expression "uVar21 = (uint)puVar8 & 3" (identifier "uVar21") (= "=") (binary_expression "(uint)puVar8 & 3" (cast_expression "(uint)puVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar8")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8;" (assignment_expression "*(uint *)(puVar8 + -uVar21) =\n           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" (* "*") (cast_expression "(uint *)(puVar8 + -uVar21)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -uVar21)" (( "(") (binary_expression "puVar8 + -uVar21" (identifier "puVar8") (+ "+") (unary_expression "-uVar21" (- "-") (identifier "uVar21"))) () ")")))) (= "=") (binary_expression "*(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |\n           uVar14 << (3 - uVar21) * 8" (binary_expression "*(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8" (pointer_expression "*(uint *)(puVar8 + -uVar21)" (* "*") (cast_expression "(uint *)(puVar8 + -uVar21)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + -uVar21)" (( "(") (binary_expression "puVar8 + -uVar21" (identifier "puVar8") (+ "+") (unary_expression "-uVar21" (- "-") (identifier "uVar21"))) () ")")))) (& "&") (binary_expression "0xffffffffU >> (uVar21 + 1) * 8" (number_literal "0xffffffffU") (>> ">>") (binary_expression "(uVar21 + 1) * 8" (parenthesized_expression "(uVar21 + 1)" (( "(") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "uVar14 << (3 - uVar21) * 8" (identifier "uVar14") (<< "<<") (binary_expression "(3 - uVar21) * 8" (parenthesized_expression "(3 - uVar21)" (( "(") (binary_expression "3 - uVar21" (number_literal "3") (- "-") (identifier "uVar21")) () ")")) (* "*") (number_literal "8"))))) (; ";")) (expression_statement "puVar9[8] = uVar10;" (assignment_expression "puVar9[8] = uVar10" (subscript_expression "puVar9[8]" (identifier "puVar9") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar9[9] = uVar1;" (assignment_expression "puVar9[9] = uVar1" (subscript_expression "puVar9[9]" (identifier "puVar9") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar9[10] = uVar2;" (assignment_expression "puVar9[10] = uVar2" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar9[0xb] = (char)(iVar4 >> 0x1b);" (assignment_expression "puVar9[0xb] = (char)(iVar4 >> 0x1b)" (subscript_expression "puVar9[0xb]" (identifier "puVar9") ([ "[") (number_literal "0xb") (] "]")) (= "=") (cast_expression "(char)(iVar4 >> 0x1b)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar4 >> 0x1b)" (( "(") (binary_expression "iVar4 >> 0x1b" (identifier "iVar4") (>> ">>") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "puVar9[0xc] = (char)(iVar4 >> 0x13);" (assignment_expression "puVar9[0xc] = (char)(iVar4 >> 0x13)" (subscript_expression "puVar9[0xc]" (identifier "puVar9") ([ "[") (number_literal "0xc") (] "]")) (= "=") (cast_expression "(char)(iVar4 >> 0x13)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar4 >> 0x13)" (( "(") (binary_expression "iVar4 >> 0x13" (identifier "iVar4") (>> ">>") (number_literal "0x13")) () ")")))) (; ";")) (expression_statement "puVar9[0xd] = (char)(iVar4 >> 0xb);" (assignment_expression "puVar9[0xd] = (char)(iVar4 >> 0xb)" (subscript_expression "puVar9[0xd]" (identifier "puVar9") ([ "[") (number_literal "0xd") (] "]")) (= "=") (cast_expression "(char)(iVar4 >> 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(iVar4 >> 0xb)" (( "(") (binary_expression "iVar4 >> 0xb" (identifier "iVar4") (>> ">>") (number_literal "0xb")) () ")")))) (; ";")) (expression_statement "puVar9[0xe] = (char)iVar19;" (assignment_expression "puVar9[0xe] = (char)iVar19" (subscript_expression "puVar9[0xe]" (identifier "puVar9") ([ "[") (number_literal "0xe") (] "]")) (= "=") (cast_expression "(char)iVar19" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar19"))) (; ";")) (if_statement "if (0 < iVar18) {\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }" (if "if") (parenthesized_expression "(0 < iVar18)" (( "(") (binary_expression "0 < iVar18" (number_literal "0") (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n        iVar18 = 0;\n        do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);\n      }" ({ "{") (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        } while (iVar4 < iVar19);" (do "do") (compound_statement "{\n          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);\n          iVar4 = iVar18 + 1;\n          puVar9[iVar18 + 0xf] = uVar10;\n          iVar18 = iVar4;\n        }" ({ "{") (expression_statement "uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);" (assignment_expression "uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18)" (identifier "uVar10") (= "=") (call_expression "bignum_byte(uVar5,(iVar19 + -1) - iVar18)" (identifier "bignum_byte") (argument_list "(uVar5,(iVar19 + -1) - iVar18)" (( "(") (identifier "uVar5") (, ",") (binary_expression "(iVar19 + -1) - iVar18" (parenthesized_expression "(iVar19 + -1)" (( "(") (binary_expression "iVar19 + -1" (identifier "iVar19") (+ "+") (number_literal "-1")) () ")")) (- "-") (identifier "iVar18")) () ")")))) (; ";")) (expression_statement "iVar4 = iVar18 + 1;" (assignment_expression "iVar4 = iVar18 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar9[iVar18 + 0xf] = uVar10;" (assignment_expression "puVar9[iVar18 + 0xf] = uVar10" (subscript_expression "puVar9[iVar18 + 0xf]" (identifier "puVar9") ([ "[") (binary_expression "iVar18 + 0xf" (identifier "iVar18") (+ "+") (number_literal "0xf")) (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "iVar18 = iVar4;" (assignment_expression "iVar18 = iVar4" (identifier "iVar18") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 < iVar19)" (( "(") (binary_expression "iVar4 < iVar19" (identifier "iVar4") (< "<") (identifier "iVar19")) () ")")) (; ";")) (} "}"))) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" (identifier "freebn") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" (identifier "iVar18") (= "=") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (expression_statement "*piVar17 = iVar19 + 0xf;" (assignment_expression "*piVar17 = iVar19 + 0xf" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (= "=") (binary_expression "iVar19 + 0xf" (identifier "iVar19") (+ "+") (number_literal "0xf"))) (; ";")) (if_statement "if (local_1a4[0] == iVar18) {\n        return puVar9;\n      }" (if "if") (parenthesized_expression "(local_1a4[0] == iVar18)" (( "(") (binary_expression "local_1a4[0] == iVar18" (subscript_expression "local_1a4[0]" (identifier "local_1a4") ([ "[") (number_literal "0") (] "]")) (== "==") (identifier "iVar18")) () ")")) (compound_statement "{\n        return puVar9;\n      }" ({ "{") (return_statement "return puVar9;" (return "return") (identifier "puVar9") (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar24 + 0x9059c))();" (call_expression "(**(code **)(puVar24 + 0x9059c))()" (parenthesized_expression "(**(code **)(puVar24 + 0x9059c))" (( "(") (pointer_expression "**(code **)(puVar24 + 0x9059c)" (* "*") (pointer_expression "*(code **)(puVar24 + 0x9059c)" (* "*") (cast_expression "(code **)(puVar24 + 0x9059c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x9059c)" (( "(") (binary_expression "puVar24 + 0x9059c" (identifier "puVar24") (+ "+") (number_literal "0x9059c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);" (call_expression "(**(code **)(puVar24 + 0x90224))\n              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48)" (parenthesized_expression "(**(code **)(puVar24 + 0x90224))" (( "(") (pointer_expression "**(code **)(puVar24 + 0x90224)" (* "*") (pointer_expression "*(code **)(puVar24 + 0x90224)" (* "*") (cast_expression "(code **)(puVar24 + 0x90224)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x90224)" (( "(") (binary_expression "puVar24 + 0x90224" (identifier "puVar24") (+ "+") (number_literal "0x90224")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,\n               *(int *)(puVar24 + 0x8f5cc) + 0x3e48)" (( "(") (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3d7c" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" (* "*") (cast_expression "(int *)(puVar24 + 0x8f5cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x8f5cc)" (( "(") (binary_expression "puVar24 + 0x8f5cc" (identifier "puVar24") (+ "+") (number_literal "0x8f5cc")) () ")")))) (+ "+") (number_literal "0x3d7c")) (, ",") (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3d30" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" (* "*") (cast_expression "(int *)(puVar24 + 0x8f5cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x8f5cc)" (( "(") (binary_expression "puVar24 + 0x8f5cc" (identifier "puVar24") (+ "+") (number_literal "0x8f5cc")) () ")")))) (+ "+") (number_literal "0x3d30")) (, ",") (number_literal "0x372") (, ",") (binary_expression "*(int *)(puVar24 + 0x8f5cc) + 0x3e48" (pointer_expression "*(int *)(puVar24 + 0x8f5cc)" (* "*") (cast_expression "(int *)(puVar24 + 0x8f5cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x8f5cc)" (( "(") (binary_expression "puVar24 + 0x8f5cc" (identifier "puVar24") (+ "+") (number_literal "0x8f5cc")) () ")")))) (+ "+") (number_literal "0x3e48")) () ")"))) (; ";")) (expression_statement "puVar8 = (undefined1 *)FUN_000819b0();" (assignment_expression "puVar8 = (undefined1 *)FUN_000819b0()" (identifier "puVar8") (= "=") (cast_expression "(undefined1 *)FUN_000819b0()" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000819b0()" (identifier "FUN_000819b0") (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}"))) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}")))

type_1 function_1(type_1 input,type_2 *key)

{
  type_3 bn;
  type_4 ss;
  type_5 seqbuf [4];
  type_5 digest512 [64];
  
  bn = var_1((type_3)key->modulus);
                    /* WARNING: Subroutine does not return */
  var_2(bn);
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier))) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (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 (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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: (primitive_type)) value: (identifier)) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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)))))))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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)))))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (break_statement)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (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))))) (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) 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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (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: (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) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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)))))) (while_statement condition: (parenthesized_expression (true)) body: (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: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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 (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: (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 (binary_expression left: (identifier) right: (number_literal)) (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (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: (type_identifier) 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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (parenthesized_expression (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: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (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 (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 (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)) (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)) (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))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (return_statement (identifier)))) (return_statement (identifier)))))

undefined1 * MASKED(undefined4 param_1,int param_2)

{
  undefined1 uVar1;
  undefined1 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined1 *puVar8;
  undefined1 *puVar9;
  undefined1 uVar10;
  undefined *puVar11;
  code *pcVar12;
  undefined1 *puVar13;
  uint uVar14;
  undefined4 uVar15;
  int *piVar16;
  int *piVar17;
  int iVar18;
  int iVar19;
  int *piVar20;
  uint uVar21;
  undefined *puVar22;
  int iVar23;
  uint unaff_s7;
  undefined *puVar24;
  undefined4 uVar25;
  int local_1b8 [5];
  int local_1a4 [2];
  undefined4 local_19c;
  undefined4 local_198;
  undefined4 local_194;
  undefined4 local_190;
  undefined *local_18c;
  int local_188;
  undefined4 local_184;
  uint local_180;
  undefined4 local_17c;
  undefined4 local_168;
  undefined4 local_164;
  SHA512_CTX SStack_144;
  byte abStack_6c [64];
  int local_2c;
  
  puVar24 = PTR___stack_chk_guard_00112630;
  puVar22 = PTR_Zero_00111978;
  local_2c = *(int *)PTR___stack_chk_guard_00112630;
  puVar11 = PTR_DAT_001112f8 + 0x3d60;
  uVar21 = 0;
  pcVar12 = (code *)(PTR_LAB_00111a28 + 0x280);
  iVar18 = 0x40;
  while( true ) {
    uVar3 = copybn(*(undefined4 *)(param_2 + 8));
    iVar4 = bignum_bitcount(uVar3);
    iVar23 = iVar4 + -1;
    if (iVar4 != 0) {
      iVar4 = 0;
      unaff_s7 = 0;
      do {
        if (iVar4 == 0) {
          if (iVar18 == 0x40) {
            uVar14 = uVar21 + 1;
            SStack_144.md_len = uVar21;
            SHA512_Init(&SStack_144);
            SHA512_Bytes(&SStack_144,puVar11,0x1a);
            SHA512_Bytes(&SStack_144,&SStack_144.md_len,4);
            (*pcVar12)(&SStack_144,*(undefined4 *)(param_2 + 0x10));
            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);
            SHA512_Init(&SStack_144);
            SHA512_Bytes(&SStack_144,(SHA512_CTX *)abStack_6c,0x40);
            (*pcVar12)(&SStack_144,param_1);
            iVar19 = 1;
            SHA512_Final((uchar *)&SStack_144,(SHA512_CTX *)abStack_6c);
            iVar18 = 0;
          }
          else {
            iVar19 = iVar18 + 1;
            uVar14 = uVar21;
          }
          iVar4 = 7;
          unaff_s7 = (uint)abStack_6c[iVar18];
          iVar18 = iVar19;
          uVar21 = uVar14;
        }
        else {
          iVar4 = iVar4 + -1;
        }
        bignum_set_bit(uVar3,iVar23,unaff_s7 & 1);
        iVar23 = iVar23 + -1;
        unaff_s7 = (int)unaff_s7 >> 1;
      } while (iVar23 != -1);
    }
    bn_restore_invariant(uVar3);
    iVar4 = bignum_cmp(uVar3,*(undefined4 *)puVar22);
    if (((0 < iVar4) && (iVar4 = bignum_cmp(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 < 0)) &&
       (iVar4 = modinv(uVar3,*(undefined4 *)(param_2 + 8)), iVar4 != 0)) break;
    freebn(uVar3);
  }
  local_164 = *(undefined4 *)(param_2 + 0x1c);
  local_168 = *(undefined4 *)(param_2 + 0x18);
  puVar22 = PTR_crt_modpow_00111aac;
  uVar5 = crt_modpow(uVar3,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 8),
                     *(undefined4 *)(param_2 + 0x14));
  uVar6 = modmul(param_1,uVar5,*(undefined4 *)(param_2 + 8));
  local_164 = *(undefined4 *)(param_2 + 0x1c);
  local_168 = *(undefined4 *)(param_2 + 0x18);
  piVar17 = *(int **)(param_2 + 0x14);
  uVar7 = crt_modpow(uVar6,*(undefined4 *)(param_2 + 0x10),*(undefined4 *)(param_2 + 8));
  uVar15 = *(undefined4 *)(param_2 + 8);
  iVar18 = iVar4;
  puVar8 = (undefined1 *)modmul(uVar7,iVar4,uVar15);
  freebn(uVar7);
  freebn(uVar6);
  freebn(iVar4);
  freebn(uVar5);
  freebn(uVar3);
  if (local_2c != *(int *)puVar24) {
    uVar25 = 0x81d2c;
    iVar4 = local_2c;
    puVar24 = PTR___stack_chk_fail_001122c8;
    (*(code *)PTR___stack_chk_fail_001122c8)();
    piVar20 = *(int **)(puVar24 + 0x90904);
    piVar16 = local_1b8;
    local_1a4[0] = *piVar20;
    local_19c = uVar3;
    local_198 = uVar5;
    local_194 = uVar7;
    local_190 = uVar6;
    local_18c = puVar22;
    local_188 = iVar23;
    local_184 = param_1;
    local_180 = unaff_s7;
    local_17c = uVar25;
    SHA_Simple(iVar18,uVar15,piVar16);
    iVar18 = bignum_bitcount(*(undefined4 *)(iVar4 + 8));
    iVar23 = iVar18 + -1;
    if (iVar23 < 0) {
      iVar23 = iVar18 + 6;
    }
    iVar23 = iVar23 >> 3;
    if (0x128 < iVar18) {
      puVar8 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar23,1);
      iVar18 = iVar23 + -0x24;
      *puVar8 = 1;
      if (1 < iVar18) {
        puVar9 = puVar8 + 1;
        do {
          *puVar9 = 0xff;
          puVar9 = puVar9 + 1;
        } while (puVar9 != puVar8 + iVar18);
      }
      puVar13 = puVar8 + iVar18;
      iVar18 = *(int *)(puVar24 + 0x8f5cc);
      uVar10 = 0;
      puVar9 = (undefined1 *)(*(int *)(puVar24 + 0x8f5cc) + 0x3e69);
      while( true ) {
        *puVar13 = uVar10;
        puVar13 = puVar13 + 1;
        if (puVar9 == (undefined1 *)(iVar18 + 0x3e78)) break;
        uVar10 = *puVar9;
        puVar9 = puVar9 + 1;
      }
      puVar9 = puVar8 + iVar23 + -0x14;
      do {
        uVar10 = *(undefined1 *)piVar16;
        piVar16 = (int *)((int)piVar16 + 1);
        *puVar9 = uVar10;
        puVar9 = puVar9 + 1;
      } while (piVar16 != local_1a4);
      uVar3 = bignum_from_bytes(puVar8,iVar23);
      (**(code **)(puVar24 + 0x8f5c4))(puVar8);
      uVar5 = MASKED(uVar3,iVar4);
      freebn(uVar3);
      iVar18 = bignum_bitcount(uVar5);
      iVar4 = iVar18 + 7;
      if (iVar4 < 0) {
        iVar4 = iVar18 + 0xe;
      }
      iVar19 = iVar4 >> 3;
      puVar9 = (undefined1 *)(**(code **)(puVar24 + 0x8f5c0))(iVar19 + 0xf,1);
      puVar9[3] = 7;
      *puVar9 = 0;
      iVar23 = *(int *)(puVar24 + 0x8f5cc);
      puVar9[1] = 0;
      puVar9[2] = 0;
      uVar14 = *(uint *)(iVar23 + -0x52f0);
      uVar10 = *(undefined1 *)(iVar23 + -0x52ec);
      uVar1 = *(undefined1 *)(iVar23 + -0x52eb);
      uVar2 = *(undefined1 *)(iVar23 + -0x52ea);
      puVar8 = puVar9 + 4;
      uVar21 = (uint)puVar8 & 3;
      *(uint *)(puVar8 + -uVar21) =
           *(uint *)(puVar8 + -uVar21) & -1 << (4 - uVar21) * 8 | uVar14 >> uVar21 * 8;
      puVar8 = puVar9 + 7;
      uVar21 = (uint)puVar8 & 3;
      *(uint *)(puVar8 + -uVar21) =
           *(uint *)(puVar8 + -uVar21) & 0xffffffffU >> (uVar21 + 1) * 8 |
           uVar14 << (3 - uVar21) * 8;
      puVar9[8] = uVar10;
      puVar9[9] = uVar1;
      puVar9[10] = uVar2;
      puVar9[0xb] = (char)(iVar4 >> 0x1b);
      puVar9[0xc] = (char)(iVar4 >> 0x13);
      puVar9[0xd] = (char)(iVar4 >> 0xb);
      puVar9[0xe] = (char)iVar19;
      if (0 < iVar18) {
        iVar18 = 0;
        do {
          uVar10 = bignum_byte(uVar5,(iVar19 + -1) - iVar18);
          iVar4 = iVar18 + 1;
          puVar9[iVar18 + 0xf] = uVar10;
          iVar18 = iVar4;
        } while (iVar4 < iVar19);
      }
      freebn(uVar5);
      iVar18 = *piVar20;
      *piVar17 = iVar19 + 0xf;
      if (local_1a4[0] == iVar18) {
        return puVar9;
      }
      (**(code **)(puVar24 + 0x9059c))();
    }
    (**(code **)(puVar24 + 0x90224))
              (*(int *)(puVar24 + 0x8f5cc) + 0x3d7c,*(int *)(puVar24 + 0x8f5cc) + 0x3d30,0x372,
               *(int *)(puVar24 + 0x8f5cc) + 0x3e48);
    puVar8 = (undefined1 *)MASKED();
    return puVar8;
  }
  return puVar8;
}

