
void rsa_fingerprint(char *str,int len,RSAKey *key)

{
  int iVar1;
  uchar c;
  MD5Context md5c;
  uchar digest [16];
  char buffer [88];
  
  MD5Init(&md5c);
  iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);
  if (iVar1 != 2) {
                    /* WARNING: Subroutine does not return */
    bignum_byte((Bignum_conflict)key->modulus,iVar1 + -3);
  }
  iVar1 = ssh1_bignum_length((Bignum_conflict)key->exponent);
  if (iVar1 != 2) {
                    /* WARNING: Subroutine does not return */
    bignum_byte((Bignum_conflict)key->exponent,iVar1 + -3);
  }
  MD5Final(digest,&md5c);
                    /* WARNING: Subroutine does not return */
  bignum_bitcount((Bignum_conflict)key->modulus);
}



uint rsa_fingerprint(int param_1,int param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined4 *puVar6;
  undefined *puVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined1 local_f1;
  undefined1 auStack_f0 [92];
  undefined1 local_94 [16];
  undefined1 auStack_84 [88];
  uint local_2c;
  
  puVar9 = PTR___stack_chk_guard_000adcd4;
  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;
  MD5Init(auStack_f0);
  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));
  if (iVar1 != 2) {
    iVar1 = iVar1 + -3;
    do {
      iVar4 = iVar1 + -1;
      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);
      MD5Update(auStack_f0,&local_f1,1);
      iVar1 = iVar4;
    } while (iVar4 != -1);
  }
  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));
  iVar1 = iVar4 + -3;
  if (iVar4 != 2) {
    do {
      iVar4 = iVar1 + -1;
      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);
      MD5Update(auStack_f0,&local_f1,1);
      iVar1 = iVar4;
    } while (iVar4 != -1);
  }
  puVar5 = local_94;
  MD5Final(puVar5,auStack_f0);
  iVar1 = 0;
  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));
  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);
  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;
  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;
  while( true ) {
    while( true ) {
      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);
      if (iVar1 != 0) break;
      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);
      iVar1 = 1;
      puVar5 = puVar5 + 1;
    }
    (*(code *)PTR___sprintf_chk_000adaf0)();
    if (iVar1 == 0xf) break;
    iVar1 = iVar1 + 1;
    puVar5 = puVar5 + 1;
  }
  puVar5 = (undefined1 *)(param_1 + param_2 + -1);
  iVar1 = param_1;
  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);
  *puVar5 = 0;
  if ((*(int *)(param_3 + 0x20) != 0) &&
     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,
     iVar4 < param_2 + -1)) {
    *(undefined1 *)(param_1 + iVar4) = 0x20;
    iVar1 = param_1 + iVar4 + 1;
    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);
    *puVar5 = 0;
  }
  if (local_2c != *(uint *)puVar9) {
    puVar9 = PTR___stack_chk_fail_000adca4;
    (*(code *)PTR___stack_chk_fail_000adca4)();
    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));
    if (iVar4 != 0) {
      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));
      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));
      freebn(uVar2);
      if (iVar4 == 0) {
        puVar6 = *(undefined4 **)(puVar9 + 0x43284);
        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));
        decbn(uVar2);
        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);
        freebn(uVar2);
        iVar4 = bignum_cmp(uVar3,*puVar6);
        freebn(uVar3);
        if (iVar4 == 0) {
          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));
          decbn(uVar2);
          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);
          freebn(uVar2);
          iVar4 = bignum_cmp(uVar3,*puVar6);
          freebn(uVar3);
          if (iVar4 == 0) {
            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));
            if (iVar4 < 1) {
              uVar2 = *(undefined4 *)(iVar1 + 0x14);
              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);
              *(undefined4 *)(iVar1 + 0x18) = uVar2;
              freebn(*(undefined4 *)(iVar1 + 0x1c));
              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));
              *(int *)(iVar1 + 0x1c) = iVar4;
              if (iVar4 == 0) {
                return 0;
              }
            }
            else {
              iVar4 = *(int *)(iVar1 + 0x1c);
            }
            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));
            iVar1 = bignum_cmp(uVar2,*puVar6);
            freebn(uVar2);
            return (uint)(iVar1 == 0);
          }
        }
      }
    }
    return 0;
  }
  return *(uint *)puVar9;
}


lui gp,0x5
addiu gp,gp,-0x50a8
addu gp,gp,t9
lw v0,-0x75bc(gp)
addiu sp,sp,-0x120
lw t9,-0x7a78(gp)
sw v0,0x24(sp)
sw s1,0xfc(sp)
addiu s1,sp,0x30
sw gp,0x18(sp)
sw ra,0x11c(sp)
sw s8,0x118(sp)
or s8,a0,zero
sw s3,0x104(sp)
or a0,s1,zero
sw a1,0x124(sp)
or s3,a2,zero
sw s7,0x114(sp)
sw s6,0x110(sp)
sw s5,0x10c(sp)
sw s4,0x108(sp)
sw s2,0x100(sp)
sw s0,0xf8(sp)
lw v0,0x0(v0)
sw v0,0xf4(sp)
bal 0x00061764
_nop
lw gp,0x18(sp)
lw t9,-0x7bd8(gp)
bal 0x00050330
_lw a0,0x8(s3)
li v1,0x2
beq v0,v1,0x0006a404
_lw gp,0x18(sp)
addiu s2,sp,0x2f
addiu s0,v0,-0x3
li s4,-0x1
lw t9,-0x7c34(gp)
or a1,s0,zero
lw a0,0x8(s3)
bal 0x00050420
_addiu s0,s0,-0x1
li a2,0x1
lw gp,0x18(sp)
or a1,s2,zero
or a0,s1,zero
lw t9,-0x7a74(gp)
bal 0x000617a4
_sb v0,0x2f(sp)
bne s0,s4,0x0006a3cc
_lw gp,0x18(sp)
lw t9,-0x7bd8(gp)
addiu s2,sp,0x2f
lw a0,0xc(s3)
bal 0x00050330
_li s4,-0x1
li v1,0x2
lw gp,0x18(sp)
beq v0,v1,0x0006a460
_addiu s0,v0,-0x3
lw t9,-0x7c34(gp)
or a1,s0,zero
lw a0,0xc(s3)
bal 0x00050420
_addiu s0,s0,-0x1
li a2,0x1
lw gp,0x18(sp)
or a1,s2,zero
or a0,s1,zero
lw t9,-0x7a74(gp)
bal 0x000617a4
_sb v0,0x2f(sp)
bne s0,s4,0x0006a428
_lw gp,0x18(sp)
lw t9,-0x7a70(gp)
or a1,s1,zero
addiu s1,sp,0x8c
addiu s2,sp,0x9c
bal 0x00062400
_or a0,s1,zero
or s0,zero,zero
lw gp,0x18(sp)
li s6,0xf
lw t9,-0x7c38(gp)
bal 0x000502b8
_lw a0,0x8(s3)
li a2,0x58
lw gp,0x18(sp)
li a1,0x1
or a0,s2,zero
sw v0,0x10(sp)
lw a3,-0x7fc8(gp)
lw t9,-0x77a0(gp)
jalr t9
_addiu a3,a3,0x66f8
lw gp,0x18(sp)
lw s5,-0x7fc8(gp)
lw s4,-0x7fc8(gp)
lw s7,-0x7fc8(gp)
addiu s5,s5,0x7b40
addiu s4,s4,0x66fc
addiu s7,s7,-0x22a4
lw t9,-0x7668(gp)
jalr t9
_or a0,s2,zero
li a2,-0x1
lw gp,0x18(sp)
addu a0,s2,v0
lbu v0,0x0(s1)
li a1,0x1
lw t9,-0x77a0(gp)
beq s0,zero,0x0006a5a4
_sw v0,0x14(sp)
sw s5,0x10(sp)
jalr t9
_or a3,s4,zero
beq s0,s6,0x0006a51c
_lw gp,0x18(sp)
addiu s0,s0,0x1
b 0x0006a4d0
_addiu s1,s1,0x1
lw v0,0x124(sp)
or a1,s2,zero
lw t9,-0x76b8(gp)
or a0,s8,zero
addiu s0,v0,-0x1
or a2,v0,zero
jalr t9
_addu s1,s8,s0
lw gp,0x18(sp)
sb zero,0x0(s1)
lw v0,0x20(s3)
beq v0,zero,0x0006a564
_lw t9,-0x7668(gp)
jalr t9
_or a0,s8,zero
slt s0,v0,s0
bne s0,zero,0x0006a5c0
_lw gp,0x18(sp)
lw v0,0x24(sp)
lw v1,0xf4(sp)
lw v0,0x0(v0)
bne v1,v0,0x0006a5f8
_lw ra,0x11c(sp)
lw s8,0x118(sp)
lw s7,0x114(sp)
lw s6,0x110(sp)
lw s5,0x10c(sp)
lw s4,0x108(sp)
lw s3,0x104(sp)
lw s2,0x100(sp)
lw s1,0xfc(sp)
lw s0,0xf8(sp)
jr ra
_addiu sp,sp,0x120
sw s7,0x10(sp)
jalr t9
_or a3,s4,zero
addiu s0,s0,0x1
lw gp,0x18(sp)
b 0x0006a4d0
_addiu s1,s1,0x1
lw a0,0x124(sp)
addu v1,s8,v0
lw t9,-0x76b8(gp)
subu a2,a0,v0
li a0,0x20
addiu v0,v0,0x1
sb a0,0x0(v1)
addiu a2,a2,-0x1
lw a1,0x20(s3)
jalr t9
_addu a0,s8,v0
lw gp,0x18(sp)
b 0x0006a564
_sb zero,0x0(s1)
lw t9,-0x75ec(gp)
jalr t9
_nop
(translation_unit "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [92];\n  undefined1 local_94 [16];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_000adcd4;\n  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;\n  MD5Init(auStack_f0);\n  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar1 = iVar4 + -3;\n  if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  puVar5 = local_94;\n  MD5Final(puVar5,auStack_f0);\n  iVar1 = 0;\n  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);\n  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;\n  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;\n  while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  puVar5 = (undefined1 *)(param_1 + param_2 + -1);\n  iVar1 = param_1;\n  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);\n  *puVar5 = 0;\n  if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }\n  if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }\n  return *(uint *)puVar9;\n}\n\n" (function_definition "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [92];\n  undefined1 local_94 [16];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_000adcd4;\n  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;\n  MD5Init(auStack_f0);\n  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar1 = iVar4 + -3;\n  if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  puVar5 = local_94;\n  MD5Final(puVar5,auStack_f0);\n  iVar1 = 0;\n  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);\n  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;\n  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;\n  while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  puVar5 = (undefined1 *)(param_1 + param_2 + -1);\n  iVar1 = param_1;\n  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);\n  *puVar5 = 0;\n  if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }\n  if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }\n  return *(uint *)puVar9;\n}" type_identifier (function_declarator "rsa_fingerprint(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [92];\n  undefined1 local_94 [16];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_000adcd4;\n  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;\n  MD5Init(auStack_f0);\n  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar1 = iVar4 + -3;\n  if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  puVar5 = local_94;\n  MD5Final(puVar5,auStack_f0);\n  iVar1 = 0;\n  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);\n  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;\n  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;\n  while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  puVar5 = (undefined1 *)(param_1 + param_2 + -1);\n  iVar1 = param_1;\n  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);\n  *puVar5 = 0;\n  if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }\n  if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }\n  return *(uint *)puVar9;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined1 local_f1;" type_identifier identifier ;) (declaration "undefined1 auStack_f0 [92];" type_identifier (array_declarator "auStack_f0 [92]" identifier [ number_literal ]) ;) (declaration "undefined1 local_94 [16];" type_identifier (array_declarator "local_94 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_84 [88];" type_identifier (array_declarator "auStack_84 [88]" identifier [ number_literal ]) ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "puVar9 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar9 = PTR___stack_chk_guard_000adcd4" identifier = identifier) ;) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_000adcd4" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_000adcd4" * (cast_expression "(uint *)PTR___stack_chk_guard_000adcd4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "MD5Init(auStack_f0);" (call_expression "MD5Init(auStack_f0)" identifier (argument_list "(auStack_f0)" ( identifier ))) ;) (expression_statement "iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));" (assignment_expression "iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" identifier = (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" identifier (argument_list "(*(undefined4 *)(param_3 + 8))" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" if (parenthesized_expression "(iVar1 != 2)" ( (binary_expression "iVar1 != 2" identifier != number_literal) )) (compound_statement "{\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" { (expression_statement "iVar1 = iVar1 + -3;" (assignment_expression "iVar1 = iVar1 + -3" identifier = (binary_expression "iVar1 + -3" identifier + number_literal)) ;) (do_statement "do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);" do (compound_statement "{\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    }" { (expression_statement "iVar4 = iVar1 + -1;" (assignment_expression "iVar4 = iVar1 + -1" identifier = (binary_expression "iVar1 + -1" identifier + number_literal)) ;) (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1)" identifier = (call_expression "bignum_byte(*(undefined4 *)(param_3 + 8),iVar1)" identifier (argument_list "(*(undefined4 *)(param_3 + 8),iVar1)" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" identifier (argument_list "(auStack_f0,&local_f1,1)" ( identifier , (pointer_expression "&local_f1" & identifier) , number_literal ))) ;) (expression_statement "iVar1 = iVar4;" (assignment_expression "iVar1 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));" (assignment_expression "iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" identifier = (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_3 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_3 + 0xc)" * (cast_expression "(undefined4 *)(param_3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "iVar1 = iVar4 + -3;" (assignment_expression "iVar1 = iVar4 + -3" identifier = (binary_expression "iVar4 + -3" identifier + number_literal)) ;) (if_statement "if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" if (parenthesized_expression "(iVar4 != 2)" ( (binary_expression "iVar4 != 2" identifier != number_literal) )) (compound_statement "{\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" { (do_statement "do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);" do (compound_statement "{\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    }" { (expression_statement "iVar4 = iVar1 + -1;" (assignment_expression "iVar4 = iVar1 + -1" identifier = (binary_expression "iVar1 + -1" identifier + number_literal)) ;) (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1)" identifier = (call_expression "bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1)" identifier (argument_list "(*(undefined4 *)(param_3 + 0xc),iVar1)" ( (pointer_expression "*(undefined4 *)(param_3 + 0xc)" * (cast_expression "(undefined4 *)(param_3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" identifier (argument_list "(auStack_f0,&local_f1,1)" ( identifier , (pointer_expression "&local_f1" & identifier) , number_literal ))) ;) (expression_statement "iVar1 = iVar4;" (assignment_expression "iVar1 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) })) (expression_statement "puVar5 = local_94;" (assignment_expression "puVar5 = local_94" identifier = identifier) ;) (expression_statement "MD5Final(puVar5,auStack_f0);" (call_expression "MD5Final(puVar5,auStack_f0)" identifier (argument_list "(puVar5,auStack_f0)" ( identifier , identifier ))) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));" (assignment_expression "uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8))" identifier = (call_expression "bignum_bitcount(*(undefined4 *)(param_3 + 8))" identifier (argument_list "(*(undefined4 *)(param_3 + 8))" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" ( (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" * (cast_expression "(code *)PTR___sprintf_chk_000adaf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2)" ( identifier , number_literal , number_literal , (binary_expression "PTR_DAT_000ad2c8 + 0x66f8" identifier + number_literal) , identifier ))) ;) (expression_statement "puVar7 = PTR_DAT_000ad2c8 + 0x66fc;" (assignment_expression "puVar7 = PTR_DAT_000ad2c8 + 0x66fc" identifier = (binary_expression "PTR_DAT_000ad2c8 + 0x66fc" identifier + number_literal)) ;) (expression_statement "puVar8 = PTR_DAT_000ad2c8 + -0x22a4;" (assignment_expression "puVar8 = PTR_DAT_000ad2c8 + -0x22a4" identifier = (binary_expression "PTR_DAT_000ad2c8 + -0x22a4" identifier + number_literal)) ;) (while_statement "while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }" { (while_statement "while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);" (assignment_expression "iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84)" identifier = (call_expression "(*(code *)PTR_strlen_000adc28)(auStack_84)" (parenthesized_expression "(*(code *)PTR_strlen_000adc28)" ( (pointer_expression "*(code *)PTR_strlen_000adc28" * (cast_expression "(code *)PTR_strlen_000adc28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) break;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" ( (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" * (cast_expression "(code *)PTR___sprintf_chk_000adaf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5)" ( (binary_expression "auStack_84 + iVar4" identifier + identifier) , number_literal , number_literal , identifier , identifier , (pointer_expression "*puVar5" * identifier) ))) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)();" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)()" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" ( (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" * (cast_expression "(code *)PTR___sprintf_chk_000adaf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar1 == 0xf) break;" if (parenthesized_expression "(iVar1 == 0xf)" ( (binary_expression "iVar1 == 0xf" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar5 = (undefined1 *)(param_1 + param_2 + -1);" (assignment_expression "puVar5 = (undefined1 *)(param_1 + param_2 + -1)" identifier = (cast_expression "(undefined1 *)(param_1 + param_2 + -1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_2 + -1)" ( (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal) )))) ;) (expression_statement "iVar1 = param_1;" (assignment_expression "iVar1 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);" (call_expression "(*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2)" (parenthesized_expression "(*(code *)PTR_strncpy_000adbd8)" ( (pointer_expression "*(code *)PTR_strncpy_000adbd8" * (cast_expression "(code *)PTR_strncpy_000adbd8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_84,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (if_statement "if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }" if (parenthesized_expression "((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1))" ( (binary_expression "(*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)" (parenthesized_expression "(*(int *)(param_3 + 0x20) != 0)" ( (binary_expression "*(int *)(param_3 + 0x20) != 0" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)" ( (comma_expression "iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "iVar1 = param_1" identifier = identifier) , (comma_expression "iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "iVar4 = (*(code *)PTR_strlen_000adc28)()" identifier = (call_expression "(*(code *)PTR_strlen_000adc28)()" (parenthesized_expression "(*(code *)PTR_strlen_000adc28)" ( (pointer_expression "*(code *)PTR_strlen_000adc28" * (cast_expression "(code *)PTR_strlen_000adc28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) , (comma_expression "puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "puVar7 = PTR_strncpy_000adbd8" identifier = identifier) , (binary_expression "iVar4 < param_2 + -1" identifier < (binary_expression "param_2 + -1" identifier + number_literal))))) ))) )) (compound_statement "{\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }" { (expression_statement "*(undefined1 *)(param_1 + iVar4) = 0x20;" (assignment_expression "*(undefined1 *)(param_1 + iVar4) = 0x20" (pointer_expression "*(undefined1 *)(param_1 + iVar4)" * (cast_expression "(undefined1 *)(param_1 + iVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar4)" ( (binary_expression "param_1 + iVar4" identifier + identifier) )))) = number_literal) ;) (expression_statement "iVar1 = param_1 + iVar4 + 1;" (assignment_expression "iVar1 = param_1 + iVar4 + 1" identifier = (binary_expression "param_1 + iVar4 + 1" (binary_expression "param_1 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "(*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);" (call_expression "(*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1)" (parenthesized_expression "(*(code *)puVar7)" ( (pointer_expression "*(code *)puVar7" * (cast_expression "(code *)puVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1)" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , (binary_expression "(param_2 - iVar4) + -1" (parenthesized_expression "(param_2 - iVar4)" ( (binary_expression "param_2 - iVar4" identifier - identifier) )) + number_literal) ))) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) })) (if_statement "if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }" if (parenthesized_expression "(local_2c != *(uint *)puVar9)" ( (binary_expression "local_2c != *(uint *)puVar9" identifier != (pointer_expression "*(uint *)puVar9" * (cast_expression "(uint *)puVar9" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }" { (expression_statement "puVar9 = PTR___stack_chk_fail_000adca4;" (assignment_expression "puVar9 = PTR___stack_chk_fail_000adca4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" * (cast_expression "(code *)PTR___stack_chk_fail_000adca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));" (assignment_expression "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" identifier = (call_expression "bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" identifier (argument_list "(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" ( (pointer_expression "*(undefined4 *)(iVar1 + 8)" * (cast_expression "(undefined4 *)(iVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) , (pointer_expression "**(undefined4 **)(puVar9 + 0x4326c)" * (pointer_expression "*(undefined4 **)(puVar9 + 0x4326c)" * (cast_expression "(undefined4 **)(puVar9 + 0x4326c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x4326c)" ( (binary_expression "puVar9 + 0x4326c" identifier + number_literal) ))))) )))) ;) (if_statement "if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }" { (expression_statement "uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" identifier = (call_expression "bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));" (assignment_expression "iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8))" identifier = (call_expression "bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8))" identifier (argument_list "(uVar2,*(undefined4 *)(iVar1 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(iVar1 + 8)" * (cast_expression "(undefined4 *)(iVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (if_statement "if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }" { (expression_statement "puVar6 = *(undefined4 **)(puVar9 + 0x43284);" (assignment_expression "puVar6 = *(undefined4 **)(puVar9 + 0x43284)" identifier = (pointer_expression "*(undefined4 **)(puVar9 + 0x43284)" * (cast_expression "(undefined4 **)(puVar9 + 0x43284)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x43284)" ( (binary_expression "puVar9 + 0x43284" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14))" identifier = (call_expression "copybn(*(undefined4 *)(iVar1 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" identifier = (call_expression "modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" identifier (argument_list "(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" * (cast_expression "(undefined4 *)(iVar1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "iVar4 = bignum_cmp(uVar3,*puVar6);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*puVar6)" identifier = (call_expression "bignum_cmp(uVar3,*puVar6)" identifier (argument_list "(uVar3,*puVar6)" ( identifier , (pointer_expression "*puVar6" * identifier) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }" { (expression_statement "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18))" identifier = (call_expression "copybn(*(undefined4 *)(iVar1 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" identifier = (call_expression "modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" identifier (argument_list "(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" * (cast_expression "(undefined4 *)(iVar1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "iVar4 = bignum_cmp(uVar3,*puVar6);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*puVar6)" identifier = (call_expression "bignum_cmp(uVar3,*puVar6)" identifier (argument_list "(uVar3,*puVar6)" ( identifier , (pointer_expression "*puVar6" * identifier) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }" { (expression_statement "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" identifier = (call_expression "bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" if (parenthesized_expression "(iVar4 < 1)" ( (binary_expression "iVar4 < 1" identifier < number_literal) )) (compound_statement "{\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }" { (expression_statement "uVar2 = *(undefined4 *)(iVar1 + 0x14);" (assignment_expression "uVar2 = *(undefined4 *)(iVar1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);" (assignment_expression "*(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18)" (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0x18) = uVar2;" (assignment_expression "*(undefined4 *)(iVar1 + 0x18) = uVar2" (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "freebn(*(undefined4 *)(iVar1 + 0x1c));" (call_expression "freebn(*(undefined4 *)(iVar1 + 0x1c))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x1c))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x1c)" * (cast_expression "(undefined4 *)(iVar1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" identifier = (call_expression "modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "*(int *)(iVar1 + 0x1c) = iVar4;" (assignment_expression "*(int *)(iVar1 + 0x1c) = iVar4" (pointer_expression "*(int *)(iVar1 + 0x1c)" * (cast_expression "(int *)(iVar1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar4 == 0) {\n                return 0;\n              }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" else (compound_statement "{\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" { (expression_statement "iVar4 = *(int *)(iVar1 + 0x1c);" (assignment_expression "iVar4 = *(int *)(iVar1 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar1 + 0x1c)" * (cast_expression "(int *)(iVar1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" identifier = (call_expression "modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" identifier (argument_list "(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" ( identifier , (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "iVar1 = bignum_cmp(uVar2,*puVar6);" (assignment_expression "iVar1 = bignum_cmp(uVar2,*puVar6)" identifier = (call_expression "bignum_cmp(uVar2,*puVar6)" identifier (argument_list "(uVar2,*puVar6)" ( identifier , (pointer_expression "*puVar6" * identifier) )))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (return_statement "return (uint)(iVar1 == 0);" return (call_expression "(uint)(iVar1 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) ))) ;) })) })) })) })) (return_statement "return 0;" return number_literal ;) })) (return_statement "return *(uint *)puVar9;" return (pointer_expression "*(uint *)puVar9" * (cast_expression "(uint *)puVar9" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })))
(translation_unit "void rsa_fingerprint(char *str,int len,RSAKey *key)\n\n{\n  int iVar1;\n  uchar c;\n  MD5Context md5c;\n  uchar digest [16];\n  char buffer [88];\n  \n  MD5Init(&md5c);\n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  if (iVar1 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar1 + -3);\n  }\n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  if (iVar1 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar1 + -3);\n  }\n  MD5Final(digest,&md5c);\n                    /* WARNING: Subroutine does not return */\n  bignum_bitcount((Bignum_conflict)key->modulus);\n}\n\n" (function_definition "void rsa_fingerprint(char *str,int len,RSAKey *key)\n\n{\n  int iVar1;\n  uchar c;\n  MD5Context md5c;\n  uchar digest [16];\n  char buffer [88];\n  \n  MD5Init(&md5c);\n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  if (iVar1 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar1 + -3);\n  }\n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  if (iVar1 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar1 + -3);\n  }\n  MD5Final(digest,&md5c);\n                    /* WARNING: Subroutine does not return */\n  bignum_bitcount((Bignum_conflict)key->modulus);\n}" primitive_type (function_declarator "rsa_fingerprint(char *str,int len,RSAKey *key)" identifier (parameter_list "(char *str,int len,RSAKey *key)" ( (parameter_declaration "char *str" primitive_type (pointer_declarator "*str" * identifier)) , (parameter_declaration "int len" primitive_type identifier) , (parameter_declaration "RSAKey *key" type_identifier (pointer_declarator "*key" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uchar c;\n  MD5Context md5c;\n  uchar digest [16];\n  char buffer [88];\n  \n  MD5Init(&md5c);\n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  if (iVar1 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar1 + -3);\n  }\n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  if (iVar1 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar1 + -3);\n  }\n  MD5Final(digest,&md5c);\n                    /* WARNING: Subroutine does not return */\n  bignum_bitcount((Bignum_conflict)key->modulus);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uchar c;" type_identifier identifier ;) (declaration "MD5Context md5c;" type_identifier identifier ;) (declaration "uchar digest [16];" type_identifier (array_declarator "digest [16]" identifier [ number_literal ]) ;) (declaration "char buffer [88];" primitive_type (array_declarator "buffer [88]" identifier [ number_literal ]) ;) (expression_statement "MD5Init(&md5c);" (call_expression "MD5Init(&md5c)" identifier (argument_list "(&md5c)" ( (pointer_expression "&md5c" & identifier) ))) ;) (expression_statement "iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);" (assignment_expression "iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus)" identifier = (call_expression "ssh1_bignum_length((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)) )))) ;) (if_statement "if (iVar1 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar1 + -3);\n  }" if (parenthesized_expression "(iVar1 != 2)" ( (binary_expression "iVar1 != 2" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar1 + -3);\n  }" { comment (expression_statement "bignum_byte((Bignum_conflict)key->modulus,iVar1 + -3);" (call_expression "bignum_byte((Bignum_conflict)key->modulus,iVar1 + -3)" identifier (argument_list "((Bignum_conflict)key->modulus,iVar1 + -3)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) , (binary_expression "iVar1 + -3" identifier + number_literal) ))) ;) })) (expression_statement "iVar1 = ssh1_bignum_length((Bignum_conflict)key->exponent);" (assignment_expression "iVar1 = ssh1_bignum_length((Bignum_conflict)key->exponent)" identifier = (call_expression "ssh1_bignum_length((Bignum_conflict)key->exponent)" identifier (argument_list "((Bignum_conflict)key->exponent)" ( (cast_expression "(Bignum_conflict)key->exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->exponent" identifier -> field_identifier)) )))) ;) (if_statement "if (iVar1 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar1 + -3);\n  }" if (parenthesized_expression "(iVar1 != 2)" ( (binary_expression "iVar1 != 2" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar1 + -3);\n  }" { comment (expression_statement "bignum_byte((Bignum_conflict)key->exponent,iVar1 + -3);" (call_expression "bignum_byte((Bignum_conflict)key->exponent,iVar1 + -3)" identifier (argument_list "((Bignum_conflict)key->exponent,iVar1 + -3)" ( (cast_expression "(Bignum_conflict)key->exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->exponent" identifier -> field_identifier)) , (binary_expression "iVar1 + -3" identifier + number_literal) ))) ;) })) (expression_statement "MD5Final(digest,&md5c);" (call_expression "MD5Final(digest,&md5c)" identifier (argument_list "(digest,&md5c)" ( identifier , (pointer_expression "&md5c" & identifier) ))) ;) comment (expression_statement "bignum_bitcount((Bignum_conflict)key->modulus);" (call_expression "bignum_bitcount((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)) ))) ;) })))
(translation_unit "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [92];\n  undefined1 local_94 [16];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_000adcd4;\n  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;\n  MD5Init(auStack_f0);\n  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar1 = iVar4 + -3;\n  if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  puVar5 = local_94;\n  MD5Final(puVar5,auStack_f0);\n  iVar1 = 0;\n  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);\n  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;\n  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;\n  while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  puVar5 = (undefined1 *)(param_1 + param_2 + -1);\n  iVar1 = param_1;\n  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);\n  *puVar5 = 0;\n  if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }\n  if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }\n  return *(uint *)puVar9;\n}\n\n" (function_definition "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [92];\n  undefined1 local_94 [16];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_000adcd4;\n  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;\n  MD5Init(auStack_f0);\n  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar1 = iVar4 + -3;\n  if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  puVar5 = local_94;\n  MD5Final(puVar5,auStack_f0);\n  iVar1 = 0;\n  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);\n  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;\n  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;\n  while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  puVar5 = (undefined1 *)(param_1 + param_2 + -1);\n  iVar1 = param_1;\n  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);\n  *puVar5 = 0;\n  if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }\n  if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }\n  return *(uint *)puVar9;\n}" type_identifier (function_declarator "rsa_fingerprint(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [92];\n  undefined1 local_94 [16];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_000adcd4;\n  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;\n  MD5Init(auStack_f0);\n  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar1 = iVar4 + -3;\n  if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  puVar5 = local_94;\n  MD5Final(puVar5,auStack_f0);\n  iVar1 = 0;\n  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);\n  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;\n  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;\n  while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  puVar5 = (undefined1 *)(param_1 + param_2 + -1);\n  iVar1 = param_1;\n  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);\n  *puVar5 = 0;\n  if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }\n  if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }\n  return *(uint *)puVar9;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined1 local_f1;" type_identifier identifier ;) (declaration "undefined1 auStack_f0 [92];" type_identifier (array_declarator "auStack_f0 [92]" identifier [ number_literal ]) ;) (declaration "undefined1 local_94 [16];" type_identifier (array_declarator "local_94 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_84 [88];" type_identifier (array_declarator "auStack_84 [88]" identifier [ number_literal ]) ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "puVar9 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar9 = PTR___stack_chk_guard_000adcd4" identifier = identifier) ;) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_000adcd4" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_000adcd4" * (cast_expression "(uint *)PTR___stack_chk_guard_000adcd4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "MD5Init(auStack_f0);" (call_expression "MD5Init(auStack_f0)" identifier (argument_list "(auStack_f0)" ( identifier ))) ;) (expression_statement "iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));" (assignment_expression "iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" identifier = (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" identifier (argument_list "(*(undefined4 *)(param_3 + 8))" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" if (parenthesized_expression "(iVar1 != 2)" ( (binary_expression "iVar1 != 2" identifier != number_literal) )) (compound_statement "{\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" { (expression_statement "iVar1 = iVar1 + -3;" (assignment_expression "iVar1 = iVar1 + -3" identifier = (binary_expression "iVar1 + -3" identifier + number_literal)) ;) (do_statement "do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);" do (compound_statement "{\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    }" { (expression_statement "iVar4 = iVar1 + -1;" (assignment_expression "iVar4 = iVar1 + -1" identifier = (binary_expression "iVar1 + -1" identifier + number_literal)) ;) (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1)" identifier = (call_expression "bignum_byte(*(undefined4 *)(param_3 + 8),iVar1)" identifier (argument_list "(*(undefined4 *)(param_3 + 8),iVar1)" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" identifier (argument_list "(auStack_f0,&local_f1,1)" ( identifier , (pointer_expression "&local_f1" & identifier) , number_literal ))) ;) (expression_statement "iVar1 = iVar4;" (assignment_expression "iVar1 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));" (assignment_expression "iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" identifier = (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_3 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_3 + 0xc)" * (cast_expression "(undefined4 *)(param_3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "iVar1 = iVar4 + -3;" (assignment_expression "iVar1 = iVar4 + -3" identifier = (binary_expression "iVar4 + -3" identifier + number_literal)) ;) (if_statement "if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" if (parenthesized_expression "(iVar4 != 2)" ( (binary_expression "iVar4 != 2" identifier != number_literal) )) (compound_statement "{\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" { (do_statement "do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);" do (compound_statement "{\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    }" { (expression_statement "iVar4 = iVar1 + -1;" (assignment_expression "iVar4 = iVar1 + -1" identifier = (binary_expression "iVar1 + -1" identifier + number_literal)) ;) (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1)" identifier = (call_expression "bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1)" identifier (argument_list "(*(undefined4 *)(param_3 + 0xc),iVar1)" ( (pointer_expression "*(undefined4 *)(param_3 + 0xc)" * (cast_expression "(undefined4 *)(param_3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" identifier (argument_list "(auStack_f0,&local_f1,1)" ( identifier , (pointer_expression "&local_f1" & identifier) , number_literal ))) ;) (expression_statement "iVar1 = iVar4;" (assignment_expression "iVar1 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) })) (expression_statement "puVar5 = local_94;" (assignment_expression "puVar5 = local_94" identifier = identifier) ;) (expression_statement "MD5Final(puVar5,auStack_f0);" (call_expression "MD5Final(puVar5,auStack_f0)" identifier (argument_list "(puVar5,auStack_f0)" ( identifier , identifier ))) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));" (assignment_expression "uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8))" identifier = (call_expression "bignum_bitcount(*(undefined4 *)(param_3 + 8))" identifier (argument_list "(*(undefined4 *)(param_3 + 8))" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" ( (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" * (cast_expression "(code *)PTR___sprintf_chk_000adaf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2)" ( identifier , number_literal , number_literal , (binary_expression "PTR_DAT_000ad2c8 + 0x66f8" identifier + number_literal) , identifier ))) ;) (expression_statement "puVar7 = PTR_DAT_000ad2c8 + 0x66fc;" (assignment_expression "puVar7 = PTR_DAT_000ad2c8 + 0x66fc" identifier = (binary_expression "PTR_DAT_000ad2c8 + 0x66fc" identifier + number_literal)) ;) (expression_statement "puVar8 = PTR_DAT_000ad2c8 + -0x22a4;" (assignment_expression "puVar8 = PTR_DAT_000ad2c8 + -0x22a4" identifier = (binary_expression "PTR_DAT_000ad2c8 + -0x22a4" identifier + number_literal)) ;) (while_statement "while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }" { (while_statement "while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);" (assignment_expression "iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84)" identifier = (call_expression "(*(code *)PTR_strlen_000adc28)(auStack_84)" (parenthesized_expression "(*(code *)PTR_strlen_000adc28)" ( (pointer_expression "*(code *)PTR_strlen_000adc28" * (cast_expression "(code *)PTR_strlen_000adc28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) break;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" ( (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" * (cast_expression "(code *)PTR___sprintf_chk_000adaf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5)" ( (binary_expression "auStack_84 + iVar4" identifier + identifier) , number_literal , number_literal , identifier , identifier , (pointer_expression "*puVar5" * identifier) ))) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)();" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)()" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" ( (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" * (cast_expression "(code *)PTR___sprintf_chk_000adaf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar1 == 0xf) break;" if (parenthesized_expression "(iVar1 == 0xf)" ( (binary_expression "iVar1 == 0xf" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar5 = (undefined1 *)(param_1 + param_2 + -1);" (assignment_expression "puVar5 = (undefined1 *)(param_1 + param_2 + -1)" identifier = (cast_expression "(undefined1 *)(param_1 + param_2 + -1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_2 + -1)" ( (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal) )))) ;) (expression_statement "iVar1 = param_1;" (assignment_expression "iVar1 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);" (call_expression "(*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2)" (parenthesized_expression "(*(code *)PTR_strncpy_000adbd8)" ( (pointer_expression "*(code *)PTR_strncpy_000adbd8" * (cast_expression "(code *)PTR_strncpy_000adbd8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_84,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (if_statement "if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }" if (parenthesized_expression "((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1))" ( (binary_expression "(*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)" (parenthesized_expression "(*(int *)(param_3 + 0x20) != 0)" ( (binary_expression "*(int *)(param_3 + 0x20) != 0" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)" ( (comma_expression "iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "iVar1 = param_1" identifier = identifier) , (comma_expression "iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "iVar4 = (*(code *)PTR_strlen_000adc28)()" identifier = (call_expression "(*(code *)PTR_strlen_000adc28)()" (parenthesized_expression "(*(code *)PTR_strlen_000adc28)" ( (pointer_expression "*(code *)PTR_strlen_000adc28" * (cast_expression "(code *)PTR_strlen_000adc28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) , (comma_expression "puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "puVar7 = PTR_strncpy_000adbd8" identifier = identifier) , (binary_expression "iVar4 < param_2 + -1" identifier < (binary_expression "param_2 + -1" identifier + number_literal))))) ))) )) (compound_statement "{\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }" { (expression_statement "*(undefined1 *)(param_1 + iVar4) = 0x20;" (assignment_expression "*(undefined1 *)(param_1 + iVar4) = 0x20" (pointer_expression "*(undefined1 *)(param_1 + iVar4)" * (cast_expression "(undefined1 *)(param_1 + iVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar4)" ( (binary_expression "param_1 + iVar4" identifier + identifier) )))) = number_literal) ;) (expression_statement "iVar1 = param_1 + iVar4 + 1;" (assignment_expression "iVar1 = param_1 + iVar4 + 1" identifier = (binary_expression "param_1 + iVar4 + 1" (binary_expression "param_1 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "(*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);" (call_expression "(*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1)" (parenthesized_expression "(*(code *)puVar7)" ( (pointer_expression "*(code *)puVar7" * (cast_expression "(code *)puVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1)" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , (binary_expression "(param_2 - iVar4) + -1" (parenthesized_expression "(param_2 - iVar4)" ( (binary_expression "param_2 - iVar4" identifier - identifier) )) + number_literal) ))) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) })) (if_statement "if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }" if (parenthesized_expression "(local_2c != *(uint *)puVar9)" ( (binary_expression "local_2c != *(uint *)puVar9" identifier != (pointer_expression "*(uint *)puVar9" * (cast_expression "(uint *)puVar9" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }" { (expression_statement "puVar9 = PTR___stack_chk_fail_000adca4;" (assignment_expression "puVar9 = PTR___stack_chk_fail_000adca4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" * (cast_expression "(code *)PTR___stack_chk_fail_000adca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));" (assignment_expression "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" identifier = (call_expression "bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" identifier (argument_list "(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" ( (pointer_expression "*(undefined4 *)(iVar1 + 8)" * (cast_expression "(undefined4 *)(iVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) , (pointer_expression "**(undefined4 **)(puVar9 + 0x4326c)" * (pointer_expression "*(undefined4 **)(puVar9 + 0x4326c)" * (cast_expression "(undefined4 **)(puVar9 + 0x4326c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x4326c)" ( (binary_expression "puVar9 + 0x4326c" identifier + number_literal) ))))) )))) ;) (if_statement "if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }" { (expression_statement "uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" identifier = (call_expression "bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));" (assignment_expression "iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8))" identifier = (call_expression "bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8))" identifier (argument_list "(uVar2,*(undefined4 *)(iVar1 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(iVar1 + 8)" * (cast_expression "(undefined4 *)(iVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (if_statement "if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }" { (expression_statement "puVar6 = *(undefined4 **)(puVar9 + 0x43284);" (assignment_expression "puVar6 = *(undefined4 **)(puVar9 + 0x43284)" identifier = (pointer_expression "*(undefined4 **)(puVar9 + 0x43284)" * (cast_expression "(undefined4 **)(puVar9 + 0x43284)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x43284)" ( (binary_expression "puVar9 + 0x43284" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14))" identifier = (call_expression "copybn(*(undefined4 *)(iVar1 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" identifier = (call_expression "modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" identifier (argument_list "(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" * (cast_expression "(undefined4 *)(iVar1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "iVar4 = bignum_cmp(uVar3,*puVar6);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*puVar6)" identifier = (call_expression "bignum_cmp(uVar3,*puVar6)" identifier (argument_list "(uVar3,*puVar6)" ( identifier , (pointer_expression "*puVar6" * identifier) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }" { (expression_statement "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18))" identifier = (call_expression "copybn(*(undefined4 *)(iVar1 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" identifier = (call_expression "modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" identifier (argument_list "(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" ( (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" * (cast_expression "(undefined4 *)(iVar1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "iVar4 = bignum_cmp(uVar3,*puVar6);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*puVar6)" identifier = (call_expression "bignum_cmp(uVar3,*puVar6)" identifier (argument_list "(uVar3,*puVar6)" ( identifier , (pointer_expression "*puVar6" * identifier) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }" { (expression_statement "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" identifier = (call_expression "bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" if (parenthesized_expression "(iVar4 < 1)" ( (binary_expression "iVar4 < 1" identifier < number_literal) )) (compound_statement "{\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }" { (expression_statement "uVar2 = *(undefined4 *)(iVar1 + 0x14);" (assignment_expression "uVar2 = *(undefined4 *)(iVar1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);" (assignment_expression "*(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18)" (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0x18) = uVar2;" (assignment_expression "*(undefined4 *)(iVar1 + 0x18) = uVar2" (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "freebn(*(undefined4 *)(iVar1 + 0x1c));" (call_expression "freebn(*(undefined4 *)(iVar1 + 0x1c))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x1c))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x1c)" * (cast_expression "(undefined4 *)(iVar1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" identifier = (call_expression "modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "*(int *)(iVar1 + 0x1c) = iVar4;" (assignment_expression "*(int *)(iVar1 + 0x1c) = iVar4" (pointer_expression "*(int *)(iVar1 + 0x1c)" * (cast_expression "(int *)(iVar1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar4 == 0) {\n                return 0;\n              }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" else (compound_statement "{\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" { (expression_statement "iVar4 = *(int *)(iVar1 + 0x1c);" (assignment_expression "iVar4 = *(int *)(iVar1 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar1 + 0x1c)" * (cast_expression "(int *)(iVar1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" identifier = (call_expression "modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" identifier (argument_list "(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" ( identifier , (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "iVar1 = bignum_cmp(uVar2,*puVar6);" (assignment_expression "iVar1 = bignum_cmp(uVar2,*puVar6)" identifier = (call_expression "bignum_cmp(uVar2,*puVar6)" identifier (argument_list "(uVar2,*puVar6)" ( identifier , (pointer_expression "*puVar6" * identifier) )))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (return_statement "return (uint)(iVar1 == 0);" return (call_expression "(uint)(iVar1 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) ))) ;) })) })) })) })) (return_statement "return 0;" return number_literal ;) })) (return_statement "return *(uint *)puVar9;" return (pointer_expression "*(uint *)puVar9" * (cast_expression "(uint *)puVar9" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE 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 (call_expression IDENT (argument_list ( 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) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (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 { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , LIT , LIT , IDENT , IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (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 ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < (binary_expression IDENT + LIT))))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (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 = 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 = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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) )))) , (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 , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( 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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 (call_expression IDENT (argument_list ( 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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (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 (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (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 ( (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (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 = (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 = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))) ;) })) })) })) })) (return_statement return LIT ;) })) (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })))
(function_definition "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [92];\n  undefined1 local_94 [16];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_000adcd4;\n  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;\n  MD5Init(auStack_f0);\n  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar1 = iVar4 + -3;\n  if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  puVar5 = local_94;\n  MD5Final(puVar5,auStack_f0);\n  iVar1 = 0;\n  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);\n  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;\n  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;\n  while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  puVar5 = (undefined1 *)(param_1 + param_2 + -1);\n  iVar1 = param_1;\n  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);\n  *puVar5 = 0;\n  if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }\n  if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }\n  return *(uint *)puVar9;\n}" (type_identifier "uint") (function_declarator "rsa_fingerprint(int param_1,int param_2,int param_3)" (identifier "rsa_fingerprint") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [92];\n  undefined1 local_94 [16];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  puVar9 = PTR___stack_chk_guard_000adcd4;\n  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;\n  MD5Init(auStack_f0);\n  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar1 = iVar4 + -3;\n  if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }\n  puVar5 = local_94;\n  MD5Final(puVar5,auStack_f0);\n  iVar1 = 0;\n  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);\n  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;\n  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;\n  while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }\n  puVar5 = (undefined1 *)(param_1 + param_2 + -1);\n  iVar1 = param_1;\n  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);\n  *puVar5 = 0;\n  if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }\n  if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }\n  return *(uint *)puVar9;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined1 local_f1;" (type_identifier "undefined1") (identifier "local_f1") (; ";")) (declaration "undefined1 auStack_f0 [92];" (type_identifier "undefined1") (array_declarator "auStack_f0 [92]" (identifier "auStack_f0") ([ "[") (number_literal "92") (] "]")) (; ";")) (declaration "undefined1 local_94 [16];" (type_identifier "undefined1") (array_declarator "local_94 [16]" (identifier "local_94") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auStack_84 [88];" (type_identifier "undefined1") (array_declarator "auStack_84 [88]" (identifier "auStack_84") ([ "[") (number_literal "88") (] "]")) (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (expression_statement "puVar9 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar9 = PTR___stack_chk_guard_000adcd4" (identifier "puVar9") (= "=") (identifier "PTR___stack_chk_guard_000adcd4")) (; ";")) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_000adcd4" (identifier "local_2c") (= "=") (pointer_expression "*(uint *)PTR___stack_chk_guard_000adcd4" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_000adcd4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000adcd4")))) (; ";")) (expression_statement "MD5Init(auStack_f0);" (call_expression "MD5Init(auStack_f0)" (identifier "MD5Init") (argument_list "(auStack_f0)" (( "(") (identifier "auStack_f0") () ")"))) (; ";")) (expression_statement "iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));" (assignment_expression "iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" (identifier "iVar1") (= "=") (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" (identifier "ssh1_bignum_length") (argument_list "(*(undefined4 *)(param_3 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 8)" (* "*") (cast_expression "(undefined4 *)(param_3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar1 != 2) {\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" (if "if") (parenthesized_expression "(iVar1 != 2)" (( "(") (binary_expression "iVar1 != 2" (identifier "iVar1") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    iVar1 = iVar1 + -3;\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" ({ "{") (expression_statement "iVar1 = iVar1 + -3;" (assignment_expression "iVar1 = iVar1 + -3" (identifier "iVar1") (= "=") (binary_expression "iVar1 + -3" (identifier "iVar1") (+ "+") (number_literal "-3"))) (; ";")) (do_statement "do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);" (do "do") (compound_statement "{\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    }" ({ "{") (expression_statement "iVar4 = iVar1 + -1;" (assignment_expression "iVar4 = iVar1 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar1 + -1" (identifier "iVar1") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1)" (identifier "local_f1") (= "=") (call_expression "bignum_byte(*(undefined4 *)(param_3 + 8),iVar1)" (identifier "bignum_byte") (argument_list "(*(undefined4 *)(param_3 + 8),iVar1)" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 8)" (* "*") (cast_expression "(undefined4 *)(param_3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "iVar1") () ")")))) (; ";")) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" (identifier "MD5Update") (argument_list "(auStack_f0,&local_f1,1)" (( "(") (identifier "auStack_f0") (, ",") (pointer_expression "&local_f1" (& "&") (identifier "local_f1")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar1 = iVar4;" (assignment_expression "iVar1 = iVar4" (identifier "iVar1") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != -1)" (( "(") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));" (assignment_expression "iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" (identifier "iVar4") (= "=") (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" (identifier "ssh1_bignum_length") (argument_list "(*(undefined4 *)(param_3 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar1 = iVar4 + -3;" (assignment_expression "iVar1 = iVar4 + -3" (identifier "iVar1") (= "=") (binary_expression "iVar4 + -3" (identifier "iVar4") (+ "+") (number_literal "-3"))) (; ";")) (if_statement "if (iVar4 != 2) {\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" (if "if") (parenthesized_expression "(iVar4 != 2)" (( "(") (binary_expression "iVar4 != 2" (identifier "iVar4") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);\n  }" ({ "{") (do_statement "do {\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    } while (iVar4 != -1);" (do "do") (compound_statement "{\n      iVar4 = iVar1 + -1;\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar1 = iVar4;\n    }" ({ "{") (expression_statement "iVar4 = iVar1 + -1;" (assignment_expression "iVar4 = iVar1 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar1 + -1" (identifier "iVar1") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1)" (identifier "local_f1") (= "=") (call_expression "bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1)" (identifier "bignum_byte") (argument_list "(*(undefined4 *)(param_3 + 0xc),iVar1)" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar1") () ")")))) (; ";")) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" (identifier "MD5Update") (argument_list "(auStack_f0,&local_f1,1)" (( "(") (identifier "auStack_f0") (, ",") (pointer_expression "&local_f1" (& "&") (identifier "local_f1")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar1 = iVar4;" (assignment_expression "iVar1 = iVar4" (identifier "iVar1") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != -1)" (( "(") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar5 = local_94;" (assignment_expression "puVar5 = local_94" (identifier "puVar5") (= "=") (identifier "local_94")) (; ";")) (expression_statement "MD5Final(puVar5,auStack_f0);" (call_expression "MD5Final(puVar5,auStack_f0)" (identifier "MD5Final") (argument_list "(puVar5,auStack_f0)" (( "(") (identifier "puVar5") (, ",") (identifier "auStack_f0") () ")"))) (; ";")) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));" (assignment_expression "uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8))" (identifier "uVar2") (= "=") (call_expression "bignum_bitcount(*(undefined4 *)(param_3 + 8))" (identifier "bignum_bitcount") (argument_list "(*(undefined4 *)(param_3 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 8)" (* "*") (cast_expression "(undefined4 *)(param_3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" (( "(") (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" (* "*") (cast_expression "(code *)PTR___sprintf_chk_000adaf0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___sprintf_chk_000adaf0"))) () ")")) (argument_list "(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2)" (( "(") (identifier "auStack_84") (, ",") (number_literal "1") (, ",") (number_literal "0x58") (, ",") (binary_expression "PTR_DAT_000ad2c8 + 0x66f8" (identifier "PTR_DAT_000ad2c8") (+ "+") (number_literal "0x66f8")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "puVar7 = PTR_DAT_000ad2c8 + 0x66fc;" (assignment_expression "puVar7 = PTR_DAT_000ad2c8 + 0x66fc" (identifier "puVar7") (= "=") (binary_expression "PTR_DAT_000ad2c8 + 0x66fc" (identifier "PTR_DAT_000ad2c8") (+ "+") (number_literal "0x66fc"))) (; ";")) (expression_statement "puVar8 = PTR_DAT_000ad2c8 + -0x22a4;" (assignment_expression "puVar8 = PTR_DAT_000ad2c8 + -0x22a4" (identifier "puVar8") (= "=") (binary_expression "PTR_DAT_000ad2c8 + -0x22a4" (identifier "PTR_DAT_000ad2c8") (+ "+") (number_literal "-0x22a4"))) (; ";")) (while_statement "while( true ) {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }\n    (*(code *)PTR___sprintf_chk_000adaf0)();\n    if (iVar1 == 0xf) break;\n    iVar1 = iVar1 + 1;\n    puVar5 = puVar5 + 1;\n  }" ({ "{") (while_statement "while( true ) {\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);\n      if (iVar1 != 0) break;\n      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);\n      iVar1 = 1;\n      puVar5 = puVar5 + 1;\n    }" ({ "{") (expression_statement "iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);" (assignment_expression "iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_strlen_000adc28)(auStack_84)" (parenthesized_expression "(*(code *)PTR_strlen_000adc28)" (( "(") (pointer_expression "*(code *)PTR_strlen_000adc28" (* "*") (cast_expression "(code *)PTR_strlen_000adc28" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_000adc28"))) () ")")) (argument_list "(auStack_84)" (( "(") (identifier "auStack_84") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) break;" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" (( "(") (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" (* "*") (cast_expression "(code *)PTR___sprintf_chk_000adaf0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___sprintf_chk_000adaf0"))) () ")")) (argument_list "(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5)" (( "(") (binary_expression "auStack_84 + iVar4" (identifier "auStack_84") (+ "+") (identifier "iVar4")) (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (identifier "puVar7") (, ",") (identifier "puVar8") (, ",") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) () ")"))) (; ";")) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" (identifier "iVar1") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___sprintf_chk_000adaf0)();" (call_expression "(*(code *)PTR___sprintf_chk_000adaf0)()" (parenthesized_expression "(*(code *)PTR___sprintf_chk_000adaf0)" (( "(") (pointer_expression "*(code *)PTR___sprintf_chk_000adaf0" (* "*") (cast_expression "(code *)PTR___sprintf_chk_000adaf0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___sprintf_chk_000adaf0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar1 == 0xf) break;" (if "if") (parenthesized_expression "(iVar1 == 0xf)" (( "(") (binary_expression "iVar1 == 0xf" (identifier "iVar1") (== "==") (number_literal "0xf")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar5 = (undefined1 *)(param_1 + param_2 + -1);" (assignment_expression "puVar5 = (undefined1 *)(param_1 + param_2 + -1)" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)(param_1 + param_2 + -1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + param_2 + -1)" (( "(") (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "iVar1 = param_1;" (assignment_expression "iVar1 = param_1" (identifier "iVar1") (= "=") (identifier "param_1")) (; ";")) (expression_statement "(*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);" (call_expression "(*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2)" (parenthesized_expression "(*(code *)PTR_strncpy_000adbd8)" (( "(") (pointer_expression "*(code *)PTR_strncpy_000adbd8" (* "*") (cast_expression "(code *)PTR_strncpy_000adbd8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strncpy_000adbd8"))) () ")")) (argument_list "(param_1,auStack_84,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_84") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)) {\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }" (if "if") (parenthesized_expression "((*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1))" (( "(") (binary_expression "(*(int *)(param_3 + 0x20) != 0) &&\n     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)" (parenthesized_expression "(*(int *)(param_3 + 0x20) != 0)" (( "(") (binary_expression "*(int *)(param_3 + 0x20) != 0" (pointer_expression "*(int *)(param_3 + 0x20)" (* "*") (cast_expression "(int *)(param_3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1)" (( "(") (comma_expression "iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "iVar1 = param_1" (identifier "iVar1") (= "=") (identifier "param_1")) (, ",") (comma_expression "iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "iVar4 = (*(code *)PTR_strlen_000adc28)()" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_strlen_000adc28)()" (parenthesized_expression "(*(code *)PTR_strlen_000adc28)" (( "(") (pointer_expression "*(code *)PTR_strlen_000adc28" (* "*") (cast_expression "(code *)PTR_strlen_000adc28" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_000adc28"))) () ")")) (argument_list "()" (( "(") () ")")))) (, ",") (comma_expression "puVar7 = PTR_strncpy_000adbd8,\n     iVar4 < param_2 + -1" (assignment_expression "puVar7 = PTR_strncpy_000adbd8" (identifier "puVar7") (= "=") (identifier "PTR_strncpy_000adbd8")) (, ",") (binary_expression "iVar4 < param_2 + -1" (identifier "iVar4") (< "<") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1")))))) () ")"))) () ")")) (compound_statement "{\n    *(undefined1 *)(param_1 + iVar4) = 0x20;\n    iVar1 = param_1 + iVar4 + 1;\n    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);\n    *puVar5 = 0;\n  }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + iVar4) = 0x20;" (assignment_expression "*(undefined1 *)(param_1 + iVar4) = 0x20" (pointer_expression "*(undefined1 *)(param_1 + iVar4)" (* "*") (cast_expression "(undefined1 *)(param_1 + iVar4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar4)" (( "(") (binary_expression "param_1 + iVar4" (identifier "param_1") (+ "+") (identifier "iVar4")) () ")")))) (= "=") (number_literal "0x20")) (; ";")) (expression_statement "iVar1 = param_1 + iVar4 + 1;" (assignment_expression "iVar1 = param_1 + iVar4 + 1" (identifier "iVar1") (= "=") (binary_expression "param_1 + iVar4 + 1" (binary_expression "param_1 + iVar4" (identifier "param_1") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);" (call_expression "(*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1)" (parenthesized_expression "(*(code *)puVar7)" (( "(") (pointer_expression "*(code *)puVar7" (* "*") (cast_expression "(code *)puVar7" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar7"))) () ")")) (argument_list "(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1)" (( "(") (identifier "iVar1") (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (binary_expression "(param_2 - iVar4) + -1" (parenthesized_expression "(param_2 - iVar4)" (( "(") (binary_expression "param_2 - iVar4" (identifier "param_2") (- "-") (identifier "iVar4")) () ")")) (+ "+") (number_literal "-1")) () ")"))) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (local_2c != *(uint *)puVar9) {\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }" (if "if") (parenthesized_expression "(local_2c != *(uint *)puVar9)" (( "(") (binary_expression "local_2c != *(uint *)puVar9" (identifier "local_2c") (!= "!=") (pointer_expression "*(uint *)puVar9" (* "*") (cast_expression "(uint *)puVar9" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9")))) () ")")) (compound_statement "{\n    puVar9 = PTR___stack_chk_fail_000adca4;\n    (*(code *)PTR___stack_chk_fail_000adca4)();\n    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));\n    if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }\n    return 0;\n  }" ({ "{") (expression_statement "puVar9 = PTR___stack_chk_fail_000adca4;" (assignment_expression "puVar9 = PTR___stack_chk_fail_000adca4" (identifier "puVar9") (= "=") (identifier "PTR___stack_chk_fail_000adca4")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000adca4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000adca4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));" (assignment_expression "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" (identifier "iVar4") (= "=") (call_expression "bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" (identifier "bignum_cmp") (argument_list "(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "**(undefined4 **)(puVar9 + 0x4326c)" (* "*") (pointer_expression "*(undefined4 **)(puVar9 + 0x4326c)" (* "*") (cast_expression "(undefined4 **)(puVar9 + 0x4326c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 0x4326c)" (( "(") (binary_expression "puVar9 + 0x4326c" (identifier "puVar9") (+ "+") (number_literal "0x4326c")) () ")"))))) () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));\n      freebn(uVar2);\n      if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" (identifier "uVar2") (= "=") (call_expression "bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" (identifier "bigmul") (argument_list "(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));" (assignment_expression "iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8))" (identifier "iVar4") (= "=") (call_expression "bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8))" (identifier "bignum_cmp") (argument_list "(uVar2,*(undefined4 *)(iVar1 + 8))" (( "(") (identifier "uVar2") (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" (identifier "freebn") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (if_statement "if (iVar4 == 0) {\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar6 = *(undefined4 **)(puVar9 + 0x43284);\n        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));\n        decbn(uVar2);\n        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n        freebn(uVar2);\n        iVar4 = bignum_cmp(uVar3,*puVar6);\n        freebn(uVar3);\n        if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }\n      }" ({ "{") (expression_statement "puVar6 = *(undefined4 **)(puVar9 + 0x43284);" (assignment_expression "puVar6 = *(undefined4 **)(puVar9 + 0x43284)" (identifier "puVar6") (= "=") (pointer_expression "*(undefined4 **)(puVar9 + 0x43284)" (* "*") (cast_expression "(undefined4 **)(puVar9 + 0x43284)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 0x43284)" (( "(") (binary_expression "puVar9 + 0x43284" (identifier "puVar9") (+ "+") (number_literal "0x43284")) () ")"))))) (; ";")) (expression_statement "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14))" (identifier "uVar2") (= "=") (call_expression "copybn(*(undefined4 *)(iVar1 + 0x14))" (identifier "copybn") (argument_list "(*(undefined4 *)(iVar1 + 0x14))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" (identifier "decbn") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" (identifier "uVar3") (= "=") (call_expression "modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" (identifier "modmul") (argument_list "(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" (identifier "freebn") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar4 = bignum_cmp(uVar3,*puVar6);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*puVar6)" (identifier "iVar4") (= "=") (call_expression "bignum_cmp(uVar3,*puVar6)" (identifier "bignum_cmp") (argument_list "(uVar3,*puVar6)" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) () ")")))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if (iVar4 == 0) {\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));\n          decbn(uVar2);\n          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);\n          freebn(uVar2);\n          iVar4 = bignum_cmp(uVar3,*puVar6);\n          freebn(uVar3);\n          if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }\n        }" ({ "{") (expression_statement "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18))" (identifier "uVar2") (= "=") (call_expression "copybn(*(undefined4 *)(iVar1 + 0x18))" (identifier "copybn") (argument_list "(*(undefined4 *)(iVar1 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) () ")")))) (; ";")) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" (identifier "decbn") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" (identifier "uVar3") (= "=") (call_expression "modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" (identifier "modmul") (argument_list "(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2)" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" (identifier "freebn") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar4 = bignum_cmp(uVar3,*puVar6);" (assignment_expression "iVar4 = bignum_cmp(uVar3,*puVar6)" (identifier "iVar4") (= "=") (call_expression "bignum_cmp(uVar3,*puVar6)" (identifier "bignum_cmp") (argument_list "(uVar3,*puVar6)" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) () ")")))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if (iVar4 == 0) {\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));\n            if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }\n            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n            iVar1 = bignum_cmp(uVar2,*puVar6);\n            freebn(uVar2);\n            return (uint)(iVar1 == 0);\n          }" ({ "{") (expression_statement "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));" (assignment_expression "iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" (identifier "iVar4") (= "=") (call_expression "bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" (identifier "bignum_cmp") (argument_list "(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar4 < 1) {\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }\n            else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" (if "if") (parenthesized_expression "(iVar4 < 1)" (( "(") (binary_expression "iVar4 < 1" (identifier "iVar4") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              uVar2 = *(undefined4 *)(iVar1 + 0x14);\n              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);\n              *(undefined4 *)(iVar1 + 0x18) = uVar2;\n              freebn(*(undefined4 *)(iVar1 + 0x1c));\n              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));\n              *(int *)(iVar1 + 0x1c) = iVar4;\n              if (iVar4 == 0) {\n                return 0;\n              }\n            }" ({ "{") (expression_statement "uVar2 = *(undefined4 *)(iVar1 + 0x14);" (assignment_expression "uVar2 = *(undefined4 *)(iVar1 + 0x14)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);" (assignment_expression "*(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18)" (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0x18) = uVar2;" (assignment_expression "*(undefined4 *)(iVar1 + 0x18) = uVar2" (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "freebn(*(undefined4 *)(iVar1 + 0x1c));" (call_expression "freebn(*(undefined4 *)(iVar1 + 0x1c))" (identifier "freebn") (argument_list "(*(undefined4 *)(iVar1 + 0x1c))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1c)" (( "(") (binary_expression "iVar1 + 0x1c" (identifier "iVar1") (+ "+") (number_literal "0x1c")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" (identifier "iVar4") (= "=") (call_expression "modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" (identifier "modinv") (argument_list "(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "*(int *)(iVar1 + 0x1c) = iVar4;" (assignment_expression "*(int *)(iVar1 + 0x1c) = iVar4" (pointer_expression "*(int *)(iVar1 + 0x1c)" (* "*") (cast_expression "(int *)(iVar1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1c)" (( "(") (binary_expression "iVar1 + 0x1c" (identifier "iVar1") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (iVar4 == 0) {\n                return 0;\n              }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                return 0;\n              }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" (else "else") (compound_statement "{\n              iVar4 = *(int *)(iVar1 + 0x1c);\n            }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar1 + 0x1c);" (assignment_expression "iVar4 = *(int *)(iVar1 + 0x1c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar1 + 0x1c)" (* "*") (cast_expression "(int *)(iVar1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1c)" (( "(") (binary_expression "iVar1 + 0x1c" (identifier "iVar1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));" (assignment_expression "uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" (identifier "uVar2") (= "=") (call_expression "modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" (identifier "modmul") (argument_list "(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14))" (( "(") (identifier "iVar4") (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar1 = bignum_cmp(uVar2,*puVar6);" (assignment_expression "iVar1 = bignum_cmp(uVar2,*puVar6)" (identifier "iVar1") (= "=") (call_expression "bignum_cmp(uVar2,*puVar6)" (identifier "bignum_cmp") (argument_list "(uVar2,*puVar6)" (( "(") (identifier "uVar2") (, ",") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) () ")")))) (; ";")) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" (identifier "freebn") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (return_statement "return (uint)(iVar1 == 0);" (return "return") (call_expression "(uint)(iVar1 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return *(uint *)puVar9;" (return "return") (pointer_expression "*(uint *)puVar9" (* "*") (cast_expression "(uint *)puVar9" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (; ";")) (} "}")))

void function_1(char *str,int len,type_1 *key)

{
  int var_3;
  type_2 c;
  type_3 md5c;
  type_2 digest [16];
  char buffer [88];
  
  var_1(&md5c);
  var_3 = var_2((type_4)key->modulus);
  if (var_3 != 2) {
                    /* WARNING: Subroutine does not return */
    var_4((type_4)key->modulus,var_3 + -3);
  }
  var_3 = var_2((type_4)key->exponent);
  if (var_3 != 2) {
                    /* WARNING: Subroutine does not return */
    var_4((type_4)key->exponent,var_3 + -3);
  }
  var_5(digest,&md5c);
                    /* WARNING: Subroutine does not return */
  var_6((type_4)key->modulus);
}


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

uint MASKED(int param_1,int param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined4 *puVar6;
  undefined *puVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined1 local_f1;
  undefined1 auStack_f0 [92];
  undefined1 local_94 [16];
  undefined1 auStack_84 [88];
  uint local_2c;
  
  puVar9 = PTR___stack_chk_guard_000adcd4;
  local_2c = *(uint *)PTR___stack_chk_guard_000adcd4;
  MD5Init(auStack_f0);
  iVar1 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));
  if (iVar1 != 2) {
    iVar1 = iVar1 + -3;
    do {
      iVar4 = iVar1 + -1;
      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar1);
      MD5Update(auStack_f0,&local_f1,1);
      iVar1 = iVar4;
    } while (iVar4 != -1);
  }
  iVar4 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));
  iVar1 = iVar4 + -3;
  if (iVar4 != 2) {
    do {
      iVar4 = iVar1 + -1;
      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar1);
      MD5Update(auStack_f0,&local_f1,1);
      iVar1 = iVar4;
    } while (iVar4 != -1);
  }
  puVar5 = local_94;
  MD5Final(puVar5,auStack_f0);
  iVar1 = 0;
  uVar2 = bignum_bitcount(*(undefined4 *)(param_3 + 8));
  (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84,1,0x58,PTR_DAT_000ad2c8 + 0x66f8,uVar2);
  puVar7 = PTR_DAT_000ad2c8 + 0x66fc;
  puVar8 = PTR_DAT_000ad2c8 + -0x22a4;
  while( true ) {
    while( true ) {
      iVar4 = (*(code *)PTR_strlen_000adc28)(auStack_84);
      if (iVar1 != 0) break;
      (*(code *)PTR___sprintf_chk_000adaf0)(auStack_84 + iVar4,1,0xffffffff,puVar7,puVar8,*puVar5);
      iVar1 = 1;
      puVar5 = puVar5 + 1;
    }
    (*(code *)PTR___sprintf_chk_000adaf0)();
    if (iVar1 == 0xf) break;
    iVar1 = iVar1 + 1;
    puVar5 = puVar5 + 1;
  }
  puVar5 = (undefined1 *)(param_1 + param_2 + -1);
  iVar1 = param_1;
  (*(code *)PTR_strncpy_000adbd8)(param_1,auStack_84,param_2);
  *puVar5 = 0;
  if ((*(int *)(param_3 + 0x20) != 0) &&
     (iVar1 = param_1, iVar4 = (*(code *)PTR_strlen_000adc28)(), puVar7 = PTR_strncpy_000adbd8,
     iVar4 < param_2 + -1)) {
    *(undefined1 *)(param_1 + iVar4) = 0x20;
    iVar1 = param_1 + iVar4 + 1;
    (*(code *)puVar7)(iVar1,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar4) + -1);
    *puVar5 = 0;
  }
  if (local_2c != *(uint *)puVar9) {
    puVar9 = PTR___stack_chk_fail_000adca4;
    (*(code *)PTR___stack_chk_fail_000adca4)();
    iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 8),**(undefined4 **)(puVar9 + 0x4326c));
    if (iVar4 != 0) {
      uVar2 = bigmul(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));
      iVar4 = bignum_cmp(uVar2,*(undefined4 *)(iVar1 + 8));
      freebn(uVar2);
      if (iVar4 == 0) {
        puVar6 = *(undefined4 **)(puVar9 + 0x43284);
        uVar2 = copybn(*(undefined4 *)(iVar1 + 0x14));
        decbn(uVar2);
        uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);
        freebn(uVar2);
        iVar4 = bignum_cmp(uVar3,*puVar6);
        freebn(uVar3);
        if (iVar4 == 0) {
          uVar2 = copybn(*(undefined4 *)(iVar1 + 0x18));
          decbn(uVar2);
          uVar3 = modmul(*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar2);
          freebn(uVar2);
          iVar4 = bignum_cmp(uVar3,*puVar6);
          freebn(uVar3);
          if (iVar4 == 0) {
            iVar4 = bignum_cmp(*(undefined4 *)(iVar1 + 0x14),*(undefined4 *)(iVar1 + 0x18));
            if (iVar4 < 1) {
              uVar2 = *(undefined4 *)(iVar1 + 0x14);
              *(undefined4 *)(iVar1 + 0x14) = *(undefined4 *)(iVar1 + 0x18);
              *(undefined4 *)(iVar1 + 0x18) = uVar2;
              freebn(*(undefined4 *)(iVar1 + 0x1c));
              iVar4 = modinv(*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));
              *(int *)(iVar1 + 0x1c) = iVar4;
              if (iVar4 == 0) {
                return 0;
              }
            }
            else {
              iVar4 = *(int *)(iVar1 + 0x1c);
            }
            uVar2 = modmul(iVar4,*(undefined4 *)(iVar1 + 0x18),*(undefined4 *)(iVar1 + 0x14));
            iVar1 = bignum_cmp(uVar2,*puVar6);
            freebn(uVar2);
            return (uint)(iVar1 == 0);
          }
        }
      }
    }
    return 0;
  }
  return *(uint *)puVar9;
}

