
void aes256_encrypt_pubkey(uchar *key,uchar *blk,int len)

{
  int in_a3;
  AESContext ctx;
  
  aes_setup(&ctx,(int)key,&DAT_00000020,in_a3);
  ctx.iv[0] = 0;
  ctx.iv[1] = 0;
  ctx.iv[2] = 0;
  ctx.iv[3] = 0;
  ctx.iv[4] = 0;
  ctx.iv[5] = 0;
  ctx.iv[6] = 0;
  ctx.iv[7] = 0;
  aes_encrypt_cbc(blk,len,&ctx);
                    /* WARNING: Subroutine does not return */
  smemclr(&ctx,0x3f0);
}



uint aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  longlong lVar1;
  undefined *puVar2;
  uint uVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined4 uVar6;
  uint uVar7;
  undefined1 *puVar8;
  uint *puVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined1 *puVar12;
  undefined1 auStack_834 [968];
  undefined4 uStack_46c;
  undefined4 uStack_468;
  undefined4 uStack_464;
  undefined4 uStack_460;
  undefined4 uStack_45c;
  undefined4 uStack_458;
  undefined4 uStack_454;
  undefined4 uStack_450;
  uint uStack_444;
  undefined1 *puStack_43c;
  undefined *puStack_438;
  undefined4 uStack_434;
  undefined4 uStack_430;
  code *pcStack_42c;
  undefined1 auStack_40c [968];
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  uint local_1c;
  
  puVar2 = PTR___stack_chk_guard_00079930;
  local_1c = *(uint *)PTR___stack_chk_guard_00079930;
  FUN_0002e544(auStack_40c,param_1,0x20);
  local_44 = 0;
  local_40 = 0;
  local_3c = 0;
  local_38 = 0;
  local_34 = 0;
  local_30 = 0;
  local_2c = 0;
  local_28 = 0;
  puVar12 = auStack_40c;
  FUN_0002ded0(param_2,param_3,auStack_40c);
  uVar6 = 0x3f0;
  puVar8 = auStack_40c;
  smemclr(auStack_40c,0x3f0);
  uVar3 = *(uint *)puVar2;
  if (local_1c == uVar3) {
    return uVar3;
  }
  pcVar11 = aes256_decrypt_pubkey;
  puVar10 = PTR___stack_chk_fail_000797f0;
  (*(code *)PTR___stack_chk_fail_000797f0)();
  puStack_438 = puVar2;
  puVar9 = *(uint **)(puVar10 + 0x4afc8);
  puVar5 = auStack_834;
  uStack_444 = *puVar9;
  puStack_43c = auStack_40c;
  uStack_434 = param_2;
  uStack_430 = param_3;
  pcStack_42c = pcVar11;
  FUN_0002e544(puVar5,puVar8,0x20);
  uStack_46c = 0;
  uStack_468 = 0;
  uStack_464 = 0;
  uStack_460 = 0;
  uStack_45c = 0;
  uStack_458 = 0;
  uStack_454 = 0;
  uStack_450 = 0;
  FUN_0002e0e4(uVar6,puVar12,puVar5);
  smemclr(puVar5,0x3f0);
  uVar3 = *puVar9;
  if (uStack_444 == uVar3) {
    return uVar3;
  }
  pcVar11 = *(code **)(puVar10 + 0x4ae88);
  (*pcVar11)();
  if (-1 < (int)puVar5) {
    uVar3 = (**(code **)(pcVar11 + 0x4ac70))
                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,
                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);
    return uVar3;
  }
  uVar3 = ((uint)puVar5 >> 0x10) + 1;
  puVar8 = puVar5 + 1;
  if (uVar3 == 0) {
    trap(7);
  }
  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;
  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);
  lVar1 = (ulonglong)
          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +
          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;
  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;
  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);
  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);
  if (iVar4 < 0) {
    uVar7 = ~(uint)puVar5 + 1;
    do {
      uVar3 = uVar3 - 1;
      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;
      puVar12 = puVar12 + -(int)puVar5;
    } while (iVar4 < 0);
  }
  else {
    puVar8 = puVar5 + (int)puVar12;
    iVar4 = iVar4 + (uint)(puVar8 < puVar12);
    if (-1 < iVar4) {
      do {
        puVar8 = puVar8 + (int)puVar5;
        iVar4 = iVar4 + (uint)(puVar8 < puVar5);
        uVar3 = uVar3 + 1;
      } while (-1 < iVar4);
      return uVar3;
    }
  }
  return uVar3;
}


lui gp,0x5
addiu gp,gp,0x27ec
addu gp,gp,t9
addiu sp,sp,-0x428
lw t9,-0x7c04(gp)
sw s1,0x418(sp)
addiu t9,t9,-0x1abc
lw s1,-0x7740(gp)
sw s0,0x414(sp)
addiu s0,sp,0x1c
sw s3,0x420(sp)
or s3,a2,zero
li a2,0x20
sw ra,0x424(sp)
sw gp,0x10(sp)
sw s2,0x41c(sp)
or s2,a1,zero
lw v0,0x0(s1)
or a1,a0,zero
or a0,s0,zero
sw v0,0x40c(sp)
bal 0x0002e544
_nop
or a1,s3,zero
lw gp,0x10(sp)
or a0,s2,zero
or a2,s0,zero
sw zero,0x3e4(sp)
sw zero,0x3e8(sp)
sw zero,0x3ec(sp)
sw zero,0x3f0(sp)
sw zero,0x3f4(sp)
sw zero,0x3f8(sp)
sw zero,0x3fc(sp)
lw t9,-0x7c04(gp)
addiu t9,t9,-0x2130
bal 0x0002ded0
_sw zero,0x400(sp)
li a1,0x3f0
lw gp,0x10(sp)
lw t9,-0x7f7c(gp)
bal 0x0001da8c
_or a0,s0,zero
lw v1,0x40c(sp)
lw v0,0x0(s1)
bne v1,v0,0x0002e95c
_lw gp,0x10(sp)
lw ra,0x424(sp)
lw s3,0x420(sp)
lw s2,0x41c(sp)
lw s1,0x418(sp)
lw s0,0x414(sp)
jr ra
_addiu sp,sp,0x428
lw t9,-0x7880(gp)
jalr t9
_nop
(translation_unit "uint aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  uint *puVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 *puVar12;\n  undefined1 auStack_834 [968];\n  undefined4 uStack_46c;\n  undefined4 uStack_468;\n  undefined4 uStack_464;\n  undefined4 uStack_460;\n  undefined4 uStack_45c;\n  undefined4 uStack_458;\n  undefined4 uStack_454;\n  undefined4 uStack_450;\n  uint uStack_444;\n  undefined1 *puStack_43c;\n  undefined *puStack_438;\n  undefined4 uStack_434;\n  undefined4 uStack_430;\n  code *pcStack_42c;\n  undefined1 auStack_40c [968];\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  uint local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_00079930;\n  local_1c = *(uint *)PTR___stack_chk_guard_00079930;\n  FUN_0002e544(auStack_40c,param_1,0x20);\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  puVar12 = auStack_40c;\n  FUN_0002ded0(param_2,param_3,auStack_40c);\n  uVar6 = 0x3f0;\n  puVar8 = auStack_40c;\n  smemclr(auStack_40c,0x3f0);\n  uVar3 = *(uint *)puVar2;\n  if (local_1c == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = aes256_decrypt_pubkey;\n  puVar10 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  puStack_438 = puVar2;\n  puVar9 = *(uint **)(puVar10 + 0x4afc8);\n  puVar5 = auStack_834;\n  uStack_444 = *puVar9;\n  puStack_43c = auStack_40c;\n  uStack_434 = param_2;\n  uStack_430 = param_3;\n  pcStack_42c = pcVar11;\n  FUN_0002e544(puVar5,puVar8,0x20);\n  uStack_46c = 0;\n  uStack_468 = 0;\n  uStack_464 = 0;\n  uStack_460 = 0;\n  uStack_45c = 0;\n  uStack_458 = 0;\n  uStack_454 = 0;\n  uStack_450 = 0;\n  FUN_0002e0e4(uVar6,puVar12,puVar5);\n  smemclr(puVar5,0x3f0);\n  uVar3 = *puVar9;\n  if (uStack_444 == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x4ae88);\n  (*pcVar11)();\n  if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }\n  uVar3 = ((uint)puVar5 >> 0x10) + 1;\n  puVar8 = puVar5 + 1;\n  if (uVar3 == 0) {\n    trap(7);\n  }\n  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;\n  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;\n  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;\n  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);\n  if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "uint aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  uint *puVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 *puVar12;\n  undefined1 auStack_834 [968];\n  undefined4 uStack_46c;\n  undefined4 uStack_468;\n  undefined4 uStack_464;\n  undefined4 uStack_460;\n  undefined4 uStack_45c;\n  undefined4 uStack_458;\n  undefined4 uStack_454;\n  undefined4 uStack_450;\n  uint uStack_444;\n  undefined1 *puStack_43c;\n  undefined *puStack_438;\n  undefined4 uStack_434;\n  undefined4 uStack_430;\n  code *pcStack_42c;\n  undefined1 auStack_40c [968];\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  uint local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_00079930;\n  local_1c = *(uint *)PTR___stack_chk_guard_00079930;\n  FUN_0002e544(auStack_40c,param_1,0x20);\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  puVar12 = auStack_40c;\n  FUN_0002ded0(param_2,param_3,auStack_40c);\n  uVar6 = 0x3f0;\n  puVar8 = auStack_40c;\n  smemclr(auStack_40c,0x3f0);\n  uVar3 = *(uint *)puVar2;\n  if (local_1c == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = aes256_decrypt_pubkey;\n  puVar10 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  puStack_438 = puVar2;\n  puVar9 = *(uint **)(puVar10 + 0x4afc8);\n  puVar5 = auStack_834;\n  uStack_444 = *puVar9;\n  puStack_43c = auStack_40c;\n  uStack_434 = param_2;\n  uStack_430 = param_3;\n  pcStack_42c = pcVar11;\n  FUN_0002e544(puVar5,puVar8,0x20);\n  uStack_46c = 0;\n  uStack_468 = 0;\n  uStack_464 = 0;\n  uStack_460 = 0;\n  uStack_45c = 0;\n  uStack_458 = 0;\n  uStack_454 = 0;\n  uStack_450 = 0;\n  FUN_0002e0e4(uVar6,puVar12,puVar5);\n  smemclr(puVar5,0x3f0);\n  uVar3 = *puVar9;\n  if (uStack_444 == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x4ae88);\n  (*pcVar11)();\n  if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }\n  uVar3 = ((uint)puVar5 >> 0x10) + 1;\n  puVar8 = puVar5 + 1;\n  if (uVar3 == 0) {\n    trap(7);\n  }\n  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;\n  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;\n  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;\n  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);\n  if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  uint *puVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 *puVar12;\n  undefined1 auStack_834 [968];\n  undefined4 uStack_46c;\n  undefined4 uStack_468;\n  undefined4 uStack_464;\n  undefined4 uStack_460;\n  undefined4 uStack_45c;\n  undefined4 uStack_458;\n  undefined4 uStack_454;\n  undefined4 uStack_450;\n  uint uStack_444;\n  undefined1 *puStack_43c;\n  undefined *puStack_438;\n  undefined4 uStack_434;\n  undefined4 uStack_430;\n  code *pcStack_42c;\n  undefined1 auStack_40c [968];\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  uint local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_00079930;\n  local_1c = *(uint *)PTR___stack_chk_guard_00079930;\n  FUN_0002e544(auStack_40c,param_1,0x20);\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  puVar12 = auStack_40c;\n  FUN_0002ded0(param_2,param_3,auStack_40c);\n  uVar6 = 0x3f0;\n  puVar8 = auStack_40c;\n  smemclr(auStack_40c,0x3f0);\n  uVar3 = *(uint *)puVar2;\n  if (local_1c == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = aes256_decrypt_pubkey;\n  puVar10 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  puStack_438 = puVar2;\n  puVar9 = *(uint **)(puVar10 + 0x4afc8);\n  puVar5 = auStack_834;\n  uStack_444 = *puVar9;\n  puStack_43c = auStack_40c;\n  uStack_434 = param_2;\n  uStack_430 = param_3;\n  pcStack_42c = pcVar11;\n  FUN_0002e544(puVar5,puVar8,0x20);\n  uStack_46c = 0;\n  uStack_468 = 0;\n  uStack_464 = 0;\n  uStack_460 = 0;\n  uStack_45c = 0;\n  uStack_458 = 0;\n  uStack_454 = 0;\n  uStack_450 = 0;\n  FUN_0002e0e4(uVar6,puVar12,puVar5);\n  smemclr(puVar5,0x3f0);\n  uVar3 = *puVar9;\n  if (uStack_444 == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x4ae88);\n  (*pcVar11)();\n  if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }\n  uVar3 = ((uint)puVar5 >> 0x10) + 1;\n  puVar8 = puVar5 + 1;\n  if (uVar3 == 0) {\n    trap(7);\n  }\n  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;\n  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;\n  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;\n  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);\n  if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }\n  return uVar3;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined1 auStack_834 [968];" type_identifier (array_declarator "auStack_834 [968]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_46c;" type_identifier identifier ;) (declaration "undefined4 uStack_468;" type_identifier identifier ;) (declaration "undefined4 uStack_464;" type_identifier identifier ;) (declaration "undefined4 uStack_460;" type_identifier identifier ;) (declaration "undefined4 uStack_45c;" type_identifier identifier ;) (declaration "undefined4 uStack_458;" type_identifier identifier ;) (declaration "undefined4 uStack_454;" type_identifier identifier ;) (declaration "undefined4 uStack_450;" type_identifier identifier ;) (declaration "uint uStack_444;" type_identifier identifier ;) (declaration "undefined1 *puStack_43c;" type_identifier (pointer_declarator "*puStack_43c" * identifier) ;) (declaration "undefined *puStack_438;" type_identifier (pointer_declarator "*puStack_438" * identifier) ;) (declaration "undefined4 uStack_434;" type_identifier identifier ;) (declaration "undefined4 uStack_430;" type_identifier identifier ;) (declaration "code *pcStack_42c;" type_identifier (pointer_declarator "*pcStack_42c" * identifier) ;) (declaration "undefined1 auStack_40c [968];" type_identifier (array_declarator "auStack_40c [968]" identifier [ number_literal ]) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "uint local_1c;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00079930;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00079930" identifier = identifier) ;) (expression_statement "local_1c = *(uint *)PTR___stack_chk_guard_00079930;" (assignment_expression "local_1c = *(uint *)PTR___stack_chk_guard_00079930" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_00079930" * (cast_expression "(uint *)PTR___stack_chk_guard_00079930" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "FUN_0002e544(auStack_40c,param_1,0x20);" (call_expression "FUN_0002e544(auStack_40c,param_1,0x20)" identifier (argument_list "(auStack_40c,param_1,0x20)" ( identifier , identifier , number_literal ))) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "puVar12 = auStack_40c;" (assignment_expression "puVar12 = auStack_40c" identifier = identifier) ;) (expression_statement "FUN_0002ded0(param_2,param_3,auStack_40c);" (call_expression "FUN_0002ded0(param_2,param_3,auStack_40c)" identifier (argument_list "(param_2,param_3,auStack_40c)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar6 = 0x3f0;" (assignment_expression "uVar6 = 0x3f0" identifier = number_literal) ;) (expression_statement "puVar8 = auStack_40c;" (assignment_expression "puVar8 = auStack_40c" identifier = identifier) ;) (expression_statement "smemclr(auStack_40c,0x3f0);" (call_expression "smemclr(auStack_40c,0x3f0)" identifier (argument_list "(auStack_40c,0x3f0)" ( identifier , number_literal ))) ;) (expression_statement "uVar3 = *(uint *)puVar2;" (assignment_expression "uVar3 = *(uint *)puVar2" identifier = (pointer_expression "*(uint *)puVar2" * (cast_expression "(uint *)puVar2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (local_1c == uVar3) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_1c == uVar3)" ( (binary_expression "local_1c == uVar3" identifier == identifier) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar11 = aes256_decrypt_pubkey;" (assignment_expression "pcVar11 = aes256_decrypt_pubkey" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_000797f0;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000797f0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000797f0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000797f0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000797f0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000797f0" * (cast_expression "(code *)PTR___stack_chk_fail_000797f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_438 = puVar2;" (assignment_expression "puStack_438 = puVar2" identifier = identifier) ;) (expression_statement "puVar9 = *(uint **)(puVar10 + 0x4afc8);" (assignment_expression "puVar9 = *(uint **)(puVar10 + 0x4afc8)" identifier = (pointer_expression "*(uint **)(puVar10 + 0x4afc8)" * (cast_expression "(uint **)(puVar10 + 0x4afc8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x4afc8)" ( (binary_expression "puVar10 + 0x4afc8" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = auStack_834;" (assignment_expression "puVar5 = auStack_834" identifier = identifier) ;) (expression_statement "uStack_444 = *puVar9;" (assignment_expression "uStack_444 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puStack_43c = auStack_40c;" (assignment_expression "puStack_43c = auStack_40c" identifier = identifier) ;) (expression_statement "uStack_434 = param_2;" (assignment_expression "uStack_434 = param_2" identifier = identifier) ;) (expression_statement "uStack_430 = param_3;" (assignment_expression "uStack_430 = param_3" identifier = identifier) ;) (expression_statement "pcStack_42c = pcVar11;" (assignment_expression "pcStack_42c = pcVar11" identifier = identifier) ;) (expression_statement "FUN_0002e544(puVar5,puVar8,0x20);" (call_expression "FUN_0002e544(puVar5,puVar8,0x20)" identifier (argument_list "(puVar5,puVar8,0x20)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uStack_46c = 0;" (assignment_expression "uStack_46c = 0" identifier = number_literal) ;) (expression_statement "uStack_468 = 0;" (assignment_expression "uStack_468 = 0" identifier = number_literal) ;) (expression_statement "uStack_464 = 0;" (assignment_expression "uStack_464 = 0" identifier = number_literal) ;) (expression_statement "uStack_460 = 0;" (assignment_expression "uStack_460 = 0" identifier = number_literal) ;) (expression_statement "uStack_45c = 0;" (assignment_expression "uStack_45c = 0" identifier = number_literal) ;) (expression_statement "uStack_458 = 0;" (assignment_expression "uStack_458 = 0" identifier = number_literal) ;) (expression_statement "uStack_454 = 0;" (assignment_expression "uStack_454 = 0" identifier = number_literal) ;) (expression_statement "uStack_450 = 0;" (assignment_expression "uStack_450 = 0" identifier = number_literal) ;) (expression_statement "FUN_0002e0e4(uVar6,puVar12,puVar5);" (call_expression "FUN_0002e0e4(uVar6,puVar12,puVar5)" identifier (argument_list "(uVar6,puVar12,puVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "smemclr(puVar5,0x3f0);" (call_expression "smemclr(puVar5,0x3f0)" identifier (argument_list "(puVar5,0x3f0)" ( identifier , number_literal ))) ;) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (uStack_444 == uVar3) {\n    return uVar3;\n  }" if (parenthesized_expression "(uStack_444 == uVar3)" ( (binary_expression "uStack_444 == uVar3" identifier == identifier) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x4ae88);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x4ae88)" identifier = (pointer_expression "*(code **)(puVar10 + 0x4ae88)" * (cast_expression "(code **)(puVar10 + 0x4ae88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x4ae88)" ( (binary_expression "puVar10 + 0x4ae88" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }" if (parenthesized_expression "(-1 < (int)puVar5)" ( (binary_expression "-1 < (int)puVar5" number_literal < (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }" { (expression_statement "uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);" (assignment_expression "uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" identifier = (call_expression "(**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" (parenthesized_expression "(**(code **)(pcVar11 + 0x4ac70))" ( (pointer_expression "**(code **)(pcVar11 + 0x4ac70)" * (pointer_expression "*(code **)(pcVar11 + 0x4ac70)" * (cast_expression "(code **)(pcVar11 + 0x4ac70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x4ac70)" ( (binary_expression "pcVar11 + 0x4ac70" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" ( (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2aa8" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" * (cast_expression "(int *)(pcVar11 + 0x4a658)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x4a658)" ( (binary_expression "pcVar11 + 0x4a658" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2aa0" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" * (cast_expression "(int *)(pcVar11 + 0x4a658)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x4a658)" ( (binary_expression "pcVar11 + 0x4a658" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2ca4" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" * (cast_expression "(int *)(pcVar11 + 0x4a658)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x4a658)" ( (binary_expression "pcVar11 + 0x4a658" identifier + number_literal) )))) + number_literal) , (binary_expression "pcVar11 + 0x52620" identifier + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = ((uint)puVar5 >> 0x10) + 1;" (assignment_expression "uVar3 = ((uint)puVar5 >> 0x10) + 1" identifier = (binary_expression "((uint)puVar5 >> 0x10) + 1" (parenthesized_expression "((uint)puVar5 >> 0x10)" ( (binary_expression "(uint)puVar5 >> 0x10" (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) + number_literal)) ;) (expression_statement "puVar8 = puVar5 + 1;" (assignment_expression "puVar8 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (if_statement "if (uVar3 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;" (assignment_expression "uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000" identifier = (binary_expression "((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000" (parenthesized_expression "((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3)" ( (binary_expression "(((uint)puVar5 >> 0x10) + 0x80000000) / uVar3" (parenthesized_expression "(((uint)puVar5 >> 0x10) + 0x80000000)" ( (binary_expression "((uint)puVar5 >> 0x10) + 0x80000000" (parenthesized_expression "((uint)puVar5 >> 0x10)" ( (binary_expression "(uint)puVar5 >> 0x10" (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) + number_literal) )) / identifier) )) * number_literal)) ;) (expression_statement "uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);" (assignment_expression "uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" identifier = (unary_expression "~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" ~ (call_expression "(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ZEXT48(puVar8) * (ulonglong)uVar3)" ( (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) (expression_statement "lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;" (assignment_expression "lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3" identifier = (binary_expression "(ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3" (call_expression "(ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7))" ( (binary_expression "~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)" (unary_expression "~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20))" ~ (parenthesized_expression "((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20))" ( (binary_expression "(puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (binary_expression "(puVar8 < puVar5) * uVar3" (parenthesized_expression "(puVar8 < puVar5)" ( (binary_expression "puVar8 < puVar5" identifier < identifier) )) * identifier) + (cast_expression "(int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" ( (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20" (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ))) + (call_expression "(uint)(uVar7 + 1 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 + 1 < uVar7)" ( (binary_expression "uVar7 + 1 < uVar7" (binary_expression "uVar7 + 1" identifier + number_literal) < identifier) )))) ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;" (assignment_expression "uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f" identifier = (binary_expression "(int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f" (binary_expression "(int)((ulonglong)lVar1 >> 0x20) << 1" (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) << number_literal) | (binary_expression "(uint)lVar1 >> 0x1f" (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal))) ;) (expression_statement "puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);" (assignment_expression "puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3)" identifier = (cast_expression "(undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3)" ( (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);" (assignment_expression "iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" identifier = (binary_expression "(puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (binary_expression "(puVar8 < puVar5) * uVar3" (parenthesized_expression "(puVar8 < puVar5)" ( (binary_expression "puVar8 < puVar5" identifier < identifier) )) * identifier) + (cast_expression "(int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" ( (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20" (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))))) ;) (if_statement "if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }" { (expression_statement "uVar7 = ~(uint)puVar5 + 1;" (assignment_expression "uVar7 = ~(uint)puVar5 + 1" identifier = (binary_expression "~(uint)puVar5 + 1" (unary_expression "~(uint)puVar5" ~ (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) + number_literal)) ;) (do_statement "do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);" do (compound_statement "{\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    }" { (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;" (assignment_expression "iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1" identifier = (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1" (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5)" (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12)" identifier + (call_expression "(uint)(puVar12 + uVar7 < puVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar12 + uVar7 < puVar12)" ( (binary_expression "puVar12 + uVar7 < puVar12" (binary_expression "puVar12 + uVar7" identifier + identifier) < identifier) )))) + (call_expression "(uint)(uVar7 < ~(uint)puVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < ~(uint)puVar5)" ( (binary_expression "uVar7 < ~(uint)puVar5" identifier < (unary_expression "~(uint)puVar5" ~ (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) )))) + number_literal)) ;) (expression_statement "puVar12 = puVar12 + -(int)puVar5;" (assignment_expression "puVar12 = puVar12 + -(int)puVar5" identifier = (binary_expression "puVar12 + -(int)puVar5" identifier + (unary_expression "-(int)puVar5" - (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) }) while (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) ;) }) (else_clause "else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" else (compound_statement "{\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" { (expression_statement "puVar8 = puVar5 + (int)puVar12;" (assignment_expression "puVar8 = puVar5 + (int)puVar12" identifier = (binary_expression "puVar5 + (int)puVar12" identifier + (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar4 = iVar4 + (uint)(puVar8 < puVar12);" (assignment_expression "iVar4 = iVar4 + (uint)(puVar8 < puVar12)" identifier = (binary_expression "iVar4 + (uint)(puVar8 < puVar12)" identifier + (call_expression "(uint)(puVar8 < puVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar8 < puVar12)" ( (binary_expression "puVar8 < puVar12" identifier < identifier) ))))) ;) (if_statement "if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }" { (do_statement "do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);" do (compound_statement "{\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      }" { (expression_statement "puVar8 = puVar8 + (int)puVar5;" (assignment_expression "puVar8 = puVar8 + (int)puVar5" identifier = (binary_expression "puVar8 + (int)puVar5" identifier + (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar4 = iVar4 + (uint)(puVar8 < puVar5);" (assignment_expression "iVar4 = iVar4 + (uint)(puVar8 < puVar5)" identifier = (binary_expression "iVar4 + (uint)(puVar8 < puVar5)" identifier + (call_expression "(uint)(puVar8 < puVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar8 < puVar5)" ( (binary_expression "puVar8 < puVar5" identifier < identifier) ))))) ;) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) ;) (return_statement "return uVar3;" return identifier ;) })) }))) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "void aes256_encrypt_pubkey(uchar *key,uchar *blk,int len)\n\n{\n  int in_a3;\n  AESContext ctx;\n  \n  aes_setup(&ctx,(int)key,&DAT_00000020,in_a3);\n  ctx.iv[0] = 0;\n  ctx.iv[1] = 0;\n  ctx.iv[2] = 0;\n  ctx.iv[3] = 0;\n  ctx.iv[4] = 0;\n  ctx.iv[5] = 0;\n  ctx.iv[6] = 0;\n  ctx.iv[7] = 0;\n  aes_encrypt_cbc(blk,len,&ctx);\n                    /* WARNING: Subroutine does not return */\n  smemclr(&ctx,0x3f0);\n}\n\n" (function_definition "void aes256_encrypt_pubkey(uchar *key,uchar *blk,int len)\n\n{\n  int in_a3;\n  AESContext ctx;\n  \n  aes_setup(&ctx,(int)key,&DAT_00000020,in_a3);\n  ctx.iv[0] = 0;\n  ctx.iv[1] = 0;\n  ctx.iv[2] = 0;\n  ctx.iv[3] = 0;\n  ctx.iv[4] = 0;\n  ctx.iv[5] = 0;\n  ctx.iv[6] = 0;\n  ctx.iv[7] = 0;\n  aes_encrypt_cbc(blk,len,&ctx);\n                    /* WARNING: Subroutine does not return */\n  smemclr(&ctx,0x3f0);\n}" primitive_type (function_declarator "aes256_encrypt_pubkey(uchar *key,uchar *blk,int len)" identifier (parameter_list "(uchar *key,uchar *blk,int len)" ( (parameter_declaration "uchar *key" type_identifier (pointer_declarator "*key" * identifier)) , (parameter_declaration "uchar *blk" type_identifier (pointer_declarator "*blk" * identifier)) , (parameter_declaration "int len" primitive_type identifier) ))) (compound_statement "{\n  int in_a3;\n  AESContext ctx;\n  \n  aes_setup(&ctx,(int)key,&DAT_00000020,in_a3);\n  ctx.iv[0] = 0;\n  ctx.iv[1] = 0;\n  ctx.iv[2] = 0;\n  ctx.iv[3] = 0;\n  ctx.iv[4] = 0;\n  ctx.iv[5] = 0;\n  ctx.iv[6] = 0;\n  ctx.iv[7] = 0;\n  aes_encrypt_cbc(blk,len,&ctx);\n                    /* WARNING: Subroutine does not return */\n  smemclr(&ctx,0x3f0);\n}" { (declaration "int in_a3;" primitive_type identifier ;) (declaration "AESContext ctx;" type_identifier identifier ;) (expression_statement "aes_setup(&ctx,(int)key,&DAT_00000020,in_a3);" (call_expression "aes_setup(&ctx,(int)key,&DAT_00000020,in_a3)" identifier (argument_list "(&ctx,(int)key,&DAT_00000020,in_a3)" ( (pointer_expression "&ctx" & identifier) , (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) , (pointer_expression "&DAT_00000020" & identifier) , identifier ))) ;) (expression_statement "ctx.iv[0] = 0;" (assignment_expression "ctx.iv[0] = 0" (subscript_expression "ctx.iv[0]" (field_expression "ctx.iv" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.iv[1] = 0;" (assignment_expression "ctx.iv[1] = 0" (subscript_expression "ctx.iv[1]" (field_expression "ctx.iv" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.iv[2] = 0;" (assignment_expression "ctx.iv[2] = 0" (subscript_expression "ctx.iv[2]" (field_expression "ctx.iv" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.iv[3] = 0;" (assignment_expression "ctx.iv[3] = 0" (subscript_expression "ctx.iv[3]" (field_expression "ctx.iv" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.iv[4] = 0;" (assignment_expression "ctx.iv[4] = 0" (subscript_expression "ctx.iv[4]" (field_expression "ctx.iv" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.iv[5] = 0;" (assignment_expression "ctx.iv[5] = 0" (subscript_expression "ctx.iv[5]" (field_expression "ctx.iv" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.iv[6] = 0;" (assignment_expression "ctx.iv[6] = 0" (subscript_expression "ctx.iv[6]" (field_expression "ctx.iv" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "ctx.iv[7] = 0;" (assignment_expression "ctx.iv[7] = 0" (subscript_expression "ctx.iv[7]" (field_expression "ctx.iv" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "aes_encrypt_cbc(blk,len,&ctx);" (call_expression "aes_encrypt_cbc(blk,len,&ctx)" identifier (argument_list "(blk,len,&ctx)" ( identifier , identifier , (pointer_expression "&ctx" & identifier) ))) ;) comment (expression_statement "smemclr(&ctx,0x3f0);" (call_expression "smemclr(&ctx,0x3f0)" identifier (argument_list "(&ctx,0x3f0)" ( (pointer_expression "&ctx" & identifier) , number_literal ))) ;) })))
(translation_unit "uint aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  uint *puVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 *puVar12;\n  undefined1 auStack_834 [968];\n  undefined4 uStack_46c;\n  undefined4 uStack_468;\n  undefined4 uStack_464;\n  undefined4 uStack_460;\n  undefined4 uStack_45c;\n  undefined4 uStack_458;\n  undefined4 uStack_454;\n  undefined4 uStack_450;\n  uint uStack_444;\n  undefined1 *puStack_43c;\n  undefined *puStack_438;\n  undefined4 uStack_434;\n  undefined4 uStack_430;\n  code *pcStack_42c;\n  undefined1 auStack_40c [968];\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  uint local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_00079930;\n  local_1c = *(uint *)PTR___stack_chk_guard_00079930;\n  FUN_0002e544(auStack_40c,param_1,0x20);\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  puVar12 = auStack_40c;\n  FUN_0002ded0(param_2,param_3,auStack_40c);\n  uVar6 = 0x3f0;\n  puVar8 = auStack_40c;\n  smemclr(auStack_40c,0x3f0);\n  uVar3 = *(uint *)puVar2;\n  if (local_1c == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = aes256_decrypt_pubkey;\n  puVar10 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  puStack_438 = puVar2;\n  puVar9 = *(uint **)(puVar10 + 0x4afc8);\n  puVar5 = auStack_834;\n  uStack_444 = *puVar9;\n  puStack_43c = auStack_40c;\n  uStack_434 = param_2;\n  uStack_430 = param_3;\n  pcStack_42c = pcVar11;\n  FUN_0002e544(puVar5,puVar8,0x20);\n  uStack_46c = 0;\n  uStack_468 = 0;\n  uStack_464 = 0;\n  uStack_460 = 0;\n  uStack_45c = 0;\n  uStack_458 = 0;\n  uStack_454 = 0;\n  uStack_450 = 0;\n  FUN_0002e0e4(uVar6,puVar12,puVar5);\n  smemclr(puVar5,0x3f0);\n  uVar3 = *puVar9;\n  if (uStack_444 == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x4ae88);\n  (*pcVar11)();\n  if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }\n  uVar3 = ((uint)puVar5 >> 0x10) + 1;\n  puVar8 = puVar5 + 1;\n  if (uVar3 == 0) {\n    trap(7);\n  }\n  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;\n  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;\n  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;\n  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);\n  if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "uint aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  uint *puVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 *puVar12;\n  undefined1 auStack_834 [968];\n  undefined4 uStack_46c;\n  undefined4 uStack_468;\n  undefined4 uStack_464;\n  undefined4 uStack_460;\n  undefined4 uStack_45c;\n  undefined4 uStack_458;\n  undefined4 uStack_454;\n  undefined4 uStack_450;\n  uint uStack_444;\n  undefined1 *puStack_43c;\n  undefined *puStack_438;\n  undefined4 uStack_434;\n  undefined4 uStack_430;\n  code *pcStack_42c;\n  undefined1 auStack_40c [968];\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  uint local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_00079930;\n  local_1c = *(uint *)PTR___stack_chk_guard_00079930;\n  FUN_0002e544(auStack_40c,param_1,0x20);\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  puVar12 = auStack_40c;\n  FUN_0002ded0(param_2,param_3,auStack_40c);\n  uVar6 = 0x3f0;\n  puVar8 = auStack_40c;\n  smemclr(auStack_40c,0x3f0);\n  uVar3 = *(uint *)puVar2;\n  if (local_1c == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = aes256_decrypt_pubkey;\n  puVar10 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  puStack_438 = puVar2;\n  puVar9 = *(uint **)(puVar10 + 0x4afc8);\n  puVar5 = auStack_834;\n  uStack_444 = *puVar9;\n  puStack_43c = auStack_40c;\n  uStack_434 = param_2;\n  uStack_430 = param_3;\n  pcStack_42c = pcVar11;\n  FUN_0002e544(puVar5,puVar8,0x20);\n  uStack_46c = 0;\n  uStack_468 = 0;\n  uStack_464 = 0;\n  uStack_460 = 0;\n  uStack_45c = 0;\n  uStack_458 = 0;\n  uStack_454 = 0;\n  uStack_450 = 0;\n  FUN_0002e0e4(uVar6,puVar12,puVar5);\n  smemclr(puVar5,0x3f0);\n  uVar3 = *puVar9;\n  if (uStack_444 == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x4ae88);\n  (*pcVar11)();\n  if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }\n  uVar3 = ((uint)puVar5 >> 0x10) + 1;\n  puVar8 = puVar5 + 1;\n  if (uVar3 == 0) {\n    trap(7);\n  }\n  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;\n  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;\n  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;\n  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);\n  if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  uint *puVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 *puVar12;\n  undefined1 auStack_834 [968];\n  undefined4 uStack_46c;\n  undefined4 uStack_468;\n  undefined4 uStack_464;\n  undefined4 uStack_460;\n  undefined4 uStack_45c;\n  undefined4 uStack_458;\n  undefined4 uStack_454;\n  undefined4 uStack_450;\n  uint uStack_444;\n  undefined1 *puStack_43c;\n  undefined *puStack_438;\n  undefined4 uStack_434;\n  undefined4 uStack_430;\n  code *pcStack_42c;\n  undefined1 auStack_40c [968];\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  uint local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_00079930;\n  local_1c = *(uint *)PTR___stack_chk_guard_00079930;\n  FUN_0002e544(auStack_40c,param_1,0x20);\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  puVar12 = auStack_40c;\n  FUN_0002ded0(param_2,param_3,auStack_40c);\n  uVar6 = 0x3f0;\n  puVar8 = auStack_40c;\n  smemclr(auStack_40c,0x3f0);\n  uVar3 = *(uint *)puVar2;\n  if (local_1c == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = aes256_decrypt_pubkey;\n  puVar10 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  puStack_438 = puVar2;\n  puVar9 = *(uint **)(puVar10 + 0x4afc8);\n  puVar5 = auStack_834;\n  uStack_444 = *puVar9;\n  puStack_43c = auStack_40c;\n  uStack_434 = param_2;\n  uStack_430 = param_3;\n  pcStack_42c = pcVar11;\n  FUN_0002e544(puVar5,puVar8,0x20);\n  uStack_46c = 0;\n  uStack_468 = 0;\n  uStack_464 = 0;\n  uStack_460 = 0;\n  uStack_45c = 0;\n  uStack_458 = 0;\n  uStack_454 = 0;\n  uStack_450 = 0;\n  FUN_0002e0e4(uVar6,puVar12,puVar5);\n  smemclr(puVar5,0x3f0);\n  uVar3 = *puVar9;\n  if (uStack_444 == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x4ae88);\n  (*pcVar11)();\n  if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }\n  uVar3 = ((uint)puVar5 >> 0x10) + 1;\n  puVar8 = puVar5 + 1;\n  if (uVar3 == 0) {\n    trap(7);\n  }\n  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;\n  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;\n  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;\n  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);\n  if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }\n  return uVar3;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined1 auStack_834 [968];" type_identifier (array_declarator "auStack_834 [968]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_46c;" type_identifier identifier ;) (declaration "undefined4 uStack_468;" type_identifier identifier ;) (declaration "undefined4 uStack_464;" type_identifier identifier ;) (declaration "undefined4 uStack_460;" type_identifier identifier ;) (declaration "undefined4 uStack_45c;" type_identifier identifier ;) (declaration "undefined4 uStack_458;" type_identifier identifier ;) (declaration "undefined4 uStack_454;" type_identifier identifier ;) (declaration "undefined4 uStack_450;" type_identifier identifier ;) (declaration "uint uStack_444;" type_identifier identifier ;) (declaration "undefined1 *puStack_43c;" type_identifier (pointer_declarator "*puStack_43c" * identifier) ;) (declaration "undefined *puStack_438;" type_identifier (pointer_declarator "*puStack_438" * identifier) ;) (declaration "undefined4 uStack_434;" type_identifier identifier ;) (declaration "undefined4 uStack_430;" type_identifier identifier ;) (declaration "code *pcStack_42c;" type_identifier (pointer_declarator "*pcStack_42c" * identifier) ;) (declaration "undefined1 auStack_40c [968];" type_identifier (array_declarator "auStack_40c [968]" identifier [ number_literal ]) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "uint local_1c;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00079930;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00079930" identifier = identifier) ;) (expression_statement "local_1c = *(uint *)PTR___stack_chk_guard_00079930;" (assignment_expression "local_1c = *(uint *)PTR___stack_chk_guard_00079930" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_00079930" * (cast_expression "(uint *)PTR___stack_chk_guard_00079930" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "FUN_0002e544(auStack_40c,param_1,0x20);" (call_expression "FUN_0002e544(auStack_40c,param_1,0x20)" identifier (argument_list "(auStack_40c,param_1,0x20)" ( identifier , identifier , number_literal ))) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "puVar12 = auStack_40c;" (assignment_expression "puVar12 = auStack_40c" identifier = identifier) ;) (expression_statement "FUN_0002ded0(param_2,param_3,auStack_40c);" (call_expression "FUN_0002ded0(param_2,param_3,auStack_40c)" identifier (argument_list "(param_2,param_3,auStack_40c)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar6 = 0x3f0;" (assignment_expression "uVar6 = 0x3f0" identifier = number_literal) ;) (expression_statement "puVar8 = auStack_40c;" (assignment_expression "puVar8 = auStack_40c" identifier = identifier) ;) (expression_statement "smemclr(auStack_40c,0x3f0);" (call_expression "smemclr(auStack_40c,0x3f0)" identifier (argument_list "(auStack_40c,0x3f0)" ( identifier , number_literal ))) ;) (expression_statement "uVar3 = *(uint *)puVar2;" (assignment_expression "uVar3 = *(uint *)puVar2" identifier = (pointer_expression "*(uint *)puVar2" * (cast_expression "(uint *)puVar2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (local_1c == uVar3) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_1c == uVar3)" ( (binary_expression "local_1c == uVar3" identifier == identifier) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar11 = aes256_decrypt_pubkey;" (assignment_expression "pcVar11 = aes256_decrypt_pubkey" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_000797f0;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000797f0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000797f0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000797f0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000797f0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000797f0" * (cast_expression "(code *)PTR___stack_chk_fail_000797f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_438 = puVar2;" (assignment_expression "puStack_438 = puVar2" identifier = identifier) ;) (expression_statement "puVar9 = *(uint **)(puVar10 + 0x4afc8);" (assignment_expression "puVar9 = *(uint **)(puVar10 + 0x4afc8)" identifier = (pointer_expression "*(uint **)(puVar10 + 0x4afc8)" * (cast_expression "(uint **)(puVar10 + 0x4afc8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x4afc8)" ( (binary_expression "puVar10 + 0x4afc8" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = auStack_834;" (assignment_expression "puVar5 = auStack_834" identifier = identifier) ;) (expression_statement "uStack_444 = *puVar9;" (assignment_expression "uStack_444 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puStack_43c = auStack_40c;" (assignment_expression "puStack_43c = auStack_40c" identifier = identifier) ;) (expression_statement "uStack_434 = param_2;" (assignment_expression "uStack_434 = param_2" identifier = identifier) ;) (expression_statement "uStack_430 = param_3;" (assignment_expression "uStack_430 = param_3" identifier = identifier) ;) (expression_statement "pcStack_42c = pcVar11;" (assignment_expression "pcStack_42c = pcVar11" identifier = identifier) ;) (expression_statement "FUN_0002e544(puVar5,puVar8,0x20);" (call_expression "FUN_0002e544(puVar5,puVar8,0x20)" identifier (argument_list "(puVar5,puVar8,0x20)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uStack_46c = 0;" (assignment_expression "uStack_46c = 0" identifier = number_literal) ;) (expression_statement "uStack_468 = 0;" (assignment_expression "uStack_468 = 0" identifier = number_literal) ;) (expression_statement "uStack_464 = 0;" (assignment_expression "uStack_464 = 0" identifier = number_literal) ;) (expression_statement "uStack_460 = 0;" (assignment_expression "uStack_460 = 0" identifier = number_literal) ;) (expression_statement "uStack_45c = 0;" (assignment_expression "uStack_45c = 0" identifier = number_literal) ;) (expression_statement "uStack_458 = 0;" (assignment_expression "uStack_458 = 0" identifier = number_literal) ;) (expression_statement "uStack_454 = 0;" (assignment_expression "uStack_454 = 0" identifier = number_literal) ;) (expression_statement "uStack_450 = 0;" (assignment_expression "uStack_450 = 0" identifier = number_literal) ;) (expression_statement "FUN_0002e0e4(uVar6,puVar12,puVar5);" (call_expression "FUN_0002e0e4(uVar6,puVar12,puVar5)" identifier (argument_list "(uVar6,puVar12,puVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "smemclr(puVar5,0x3f0);" (call_expression "smemclr(puVar5,0x3f0)" identifier (argument_list "(puVar5,0x3f0)" ( identifier , number_literal ))) ;) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (uStack_444 == uVar3) {\n    return uVar3;\n  }" if (parenthesized_expression "(uStack_444 == uVar3)" ( (binary_expression "uStack_444 == uVar3" identifier == identifier) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x4ae88);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x4ae88)" identifier = (pointer_expression "*(code **)(puVar10 + 0x4ae88)" * (cast_expression "(code **)(puVar10 + 0x4ae88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x4ae88)" ( (binary_expression "puVar10 + 0x4ae88" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }" if (parenthesized_expression "(-1 < (int)puVar5)" ( (binary_expression "-1 < (int)puVar5" number_literal < (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }" { (expression_statement "uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);" (assignment_expression "uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" identifier = (call_expression "(**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" (parenthesized_expression "(**(code **)(pcVar11 + 0x4ac70))" ( (pointer_expression "**(code **)(pcVar11 + 0x4ac70)" * (pointer_expression "*(code **)(pcVar11 + 0x4ac70)" * (cast_expression "(code **)(pcVar11 + 0x4ac70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x4ac70)" ( (binary_expression "pcVar11 + 0x4ac70" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" ( (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2aa8" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" * (cast_expression "(int *)(pcVar11 + 0x4a658)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x4a658)" ( (binary_expression "pcVar11 + 0x4a658" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2aa0" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" * (cast_expression "(int *)(pcVar11 + 0x4a658)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x4a658)" ( (binary_expression "pcVar11 + 0x4a658" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2ca4" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" * (cast_expression "(int *)(pcVar11 + 0x4a658)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x4a658)" ( (binary_expression "pcVar11 + 0x4a658" identifier + number_literal) )))) + number_literal) , (binary_expression "pcVar11 + 0x52620" identifier + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = ((uint)puVar5 >> 0x10) + 1;" (assignment_expression "uVar3 = ((uint)puVar5 >> 0x10) + 1" identifier = (binary_expression "((uint)puVar5 >> 0x10) + 1" (parenthesized_expression "((uint)puVar5 >> 0x10)" ( (binary_expression "(uint)puVar5 >> 0x10" (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) + number_literal)) ;) (expression_statement "puVar8 = puVar5 + 1;" (assignment_expression "puVar8 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (if_statement "if (uVar3 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;" (assignment_expression "uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000" identifier = (binary_expression "((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000" (parenthesized_expression "((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3)" ( (binary_expression "(((uint)puVar5 >> 0x10) + 0x80000000) / uVar3" (parenthesized_expression "(((uint)puVar5 >> 0x10) + 0x80000000)" ( (binary_expression "((uint)puVar5 >> 0x10) + 0x80000000" (parenthesized_expression "((uint)puVar5 >> 0x10)" ( (binary_expression "(uint)puVar5 >> 0x10" (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) + number_literal) )) / identifier) )) * number_literal)) ;) (expression_statement "uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);" (assignment_expression "uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" identifier = (unary_expression "~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" ~ (call_expression "(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ZEXT48(puVar8) * (ulonglong)uVar3)" ( (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) (expression_statement "lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;" (assignment_expression "lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3" identifier = (binary_expression "(ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3" (call_expression "(ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7))" ( (binary_expression "~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)" (unary_expression "~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20))" ~ (parenthesized_expression "((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20))" ( (binary_expression "(puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (binary_expression "(puVar8 < puVar5) * uVar3" (parenthesized_expression "(puVar8 < puVar5)" ( (binary_expression "puVar8 < puVar5" identifier < identifier) )) * identifier) + (cast_expression "(int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" ( (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20" (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ))) + (call_expression "(uint)(uVar7 + 1 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 + 1 < uVar7)" ( (binary_expression "uVar7 + 1 < uVar7" (binary_expression "uVar7 + 1" identifier + number_literal) < identifier) )))) ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;" (assignment_expression "uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f" identifier = (binary_expression "(int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f" (binary_expression "(int)((ulonglong)lVar1 >> 0x20) << 1" (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) << number_literal) | (binary_expression "(uint)lVar1 >> 0x1f" (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal))) ;) (expression_statement "puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);" (assignment_expression "puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3)" identifier = (cast_expression "(undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3)" ( (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);" (assignment_expression "iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" identifier = (binary_expression "(puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (binary_expression "(puVar8 < puVar5) * uVar3" (parenthesized_expression "(puVar8 < puVar5)" ( (binary_expression "puVar8 < puVar5" identifier < identifier) )) * identifier) + (cast_expression "(int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" ( (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20" (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) * (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))))) ;) (if_statement "if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }" { (expression_statement "uVar7 = ~(uint)puVar5 + 1;" (assignment_expression "uVar7 = ~(uint)puVar5 + 1" identifier = (binary_expression "~(uint)puVar5 + 1" (unary_expression "~(uint)puVar5" ~ (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) + number_literal)) ;) (do_statement "do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);" do (compound_statement "{\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    }" { (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;" (assignment_expression "iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1" identifier = (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1" (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5)" (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12)" identifier + (call_expression "(uint)(puVar12 + uVar7 < puVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar12 + uVar7 < puVar12)" ( (binary_expression "puVar12 + uVar7 < puVar12" (binary_expression "puVar12 + uVar7" identifier + identifier) < identifier) )))) + (call_expression "(uint)(uVar7 < ~(uint)puVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < ~(uint)puVar5)" ( (binary_expression "uVar7 < ~(uint)puVar5" identifier < (unary_expression "~(uint)puVar5" ~ (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) )))) + number_literal)) ;) (expression_statement "puVar12 = puVar12 + -(int)puVar5;" (assignment_expression "puVar12 = puVar12 + -(int)puVar5" identifier = (binary_expression "puVar12 + -(int)puVar5" identifier + (unary_expression "-(int)puVar5" - (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) }) while (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) ;) }) (else_clause "else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" else (compound_statement "{\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" { (expression_statement "puVar8 = puVar5 + (int)puVar12;" (assignment_expression "puVar8 = puVar5 + (int)puVar12" identifier = (binary_expression "puVar5 + (int)puVar12" identifier + (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar4 = iVar4 + (uint)(puVar8 < puVar12);" (assignment_expression "iVar4 = iVar4 + (uint)(puVar8 < puVar12)" identifier = (binary_expression "iVar4 + (uint)(puVar8 < puVar12)" identifier + (call_expression "(uint)(puVar8 < puVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar8 < puVar12)" ( (binary_expression "puVar8 < puVar12" identifier < identifier) ))))) ;) (if_statement "if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }" { (do_statement "do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);" do (compound_statement "{\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      }" { (expression_statement "puVar8 = puVar8 + (int)puVar5;" (assignment_expression "puVar8 = puVar8 + (int)puVar5" identifier = (binary_expression "puVar8 + (int)puVar5" identifier + (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar4 = iVar4 + (uint)(puVar8 < puVar5);" (assignment_expression "iVar4 = iVar4 + (uint)(puVar8 < puVar5)" identifier = (binary_expression "iVar4 + (uint)(puVar8 < puVar5)" identifier + (call_expression "(uint)(puVar8 < puVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar8 < puVar5)" ( (binary_expression "puVar8 < puVar5" identifier < identifier) ))))) ;) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) ;) (return_statement "return uVar3;" return identifier ;) })) }))) (return_statement "return uVar3;" return 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression IDENT + LIT) )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + LIT) )) / IDENT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression IDENT (argument_list ( IDENT ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) * IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (call_expression IDENT (argument_list ( IDENT ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) ))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )))) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) << LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) * IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (call_expression IDENT (argument_list ( IDENT ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) (return_statement return IDENT ;) })) }))) (return_statement return IDENT ;) })))
(function_definition "uint aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  uint *puVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 *puVar12;\n  undefined1 auStack_834 [968];\n  undefined4 uStack_46c;\n  undefined4 uStack_468;\n  undefined4 uStack_464;\n  undefined4 uStack_460;\n  undefined4 uStack_45c;\n  undefined4 uStack_458;\n  undefined4 uStack_454;\n  undefined4 uStack_450;\n  uint uStack_444;\n  undefined1 *puStack_43c;\n  undefined *puStack_438;\n  undefined4 uStack_434;\n  undefined4 uStack_430;\n  code *pcStack_42c;\n  undefined1 auStack_40c [968];\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  uint local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_00079930;\n  local_1c = *(uint *)PTR___stack_chk_guard_00079930;\n  FUN_0002e544(auStack_40c,param_1,0x20);\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  puVar12 = auStack_40c;\n  FUN_0002ded0(param_2,param_3,auStack_40c);\n  uVar6 = 0x3f0;\n  puVar8 = auStack_40c;\n  smemclr(auStack_40c,0x3f0);\n  uVar3 = *(uint *)puVar2;\n  if (local_1c == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = aes256_decrypt_pubkey;\n  puVar10 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  puStack_438 = puVar2;\n  puVar9 = *(uint **)(puVar10 + 0x4afc8);\n  puVar5 = auStack_834;\n  uStack_444 = *puVar9;\n  puStack_43c = auStack_40c;\n  uStack_434 = param_2;\n  uStack_430 = param_3;\n  pcStack_42c = pcVar11;\n  FUN_0002e544(puVar5,puVar8,0x20);\n  uStack_46c = 0;\n  uStack_468 = 0;\n  uStack_464 = 0;\n  uStack_460 = 0;\n  uStack_45c = 0;\n  uStack_458 = 0;\n  uStack_454 = 0;\n  uStack_450 = 0;\n  FUN_0002e0e4(uVar6,puVar12,puVar5);\n  smemclr(puVar5,0x3f0);\n  uVar3 = *puVar9;\n  if (uStack_444 == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x4ae88);\n  (*pcVar11)();\n  if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }\n  uVar3 = ((uint)puVar5 >> 0x10) + 1;\n  puVar8 = puVar5 + 1;\n  if (uVar3 == 0) {\n    trap(7);\n  }\n  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;\n  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;\n  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;\n  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);\n  if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }\n  return uVar3;\n}" (type_identifier "uint") (function_declarator "aes256_encrypt_pubkey(undefined4 param_1,undefined4 param_2,undefined4 param_3)" (identifier "aes256_encrypt_pubkey") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  uint *puVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 *puVar12;\n  undefined1 auStack_834 [968];\n  undefined4 uStack_46c;\n  undefined4 uStack_468;\n  undefined4 uStack_464;\n  undefined4 uStack_460;\n  undefined4 uStack_45c;\n  undefined4 uStack_458;\n  undefined4 uStack_454;\n  undefined4 uStack_450;\n  uint uStack_444;\n  undefined1 *puStack_43c;\n  undefined *puStack_438;\n  undefined4 uStack_434;\n  undefined4 uStack_430;\n  code *pcStack_42c;\n  undefined1 auStack_40c [968];\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  uint local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_00079930;\n  local_1c = *(uint *)PTR___stack_chk_guard_00079930;\n  FUN_0002e544(auStack_40c,param_1,0x20);\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  puVar12 = auStack_40c;\n  FUN_0002ded0(param_2,param_3,auStack_40c);\n  uVar6 = 0x3f0;\n  puVar8 = auStack_40c;\n  smemclr(auStack_40c,0x3f0);\n  uVar3 = *(uint *)puVar2;\n  if (local_1c == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = aes256_decrypt_pubkey;\n  puVar10 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  puStack_438 = puVar2;\n  puVar9 = *(uint **)(puVar10 + 0x4afc8);\n  puVar5 = auStack_834;\n  uStack_444 = *puVar9;\n  puStack_43c = auStack_40c;\n  uStack_434 = param_2;\n  uStack_430 = param_3;\n  pcStack_42c = pcVar11;\n  FUN_0002e544(puVar5,puVar8,0x20);\n  uStack_46c = 0;\n  uStack_468 = 0;\n  uStack_464 = 0;\n  uStack_460 = 0;\n  uStack_45c = 0;\n  uStack_458 = 0;\n  uStack_454 = 0;\n  uStack_450 = 0;\n  FUN_0002e0e4(uVar6,puVar12,puVar5);\n  smemclr(puVar5,0x3f0);\n  uVar3 = *puVar9;\n  if (uStack_444 == uVar3) {\n    return uVar3;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x4ae88);\n  (*pcVar11)();\n  if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }\n  uVar3 = ((uint)puVar5 >> 0x10) + 1;\n  puVar8 = puVar5 + 1;\n  if (uVar3 == 0) {\n    trap(7);\n  }\n  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;\n  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;\n  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;\n  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);\n  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);\n  if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }\n  return uVar3;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "code *pcVar11;" (type_identifier "code") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "undefined1 *puVar12;" (type_identifier "undefined1") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined1 auStack_834 [968];" (type_identifier "undefined1") (array_declarator "auStack_834 [968]" (identifier "auStack_834") ([ "[") (number_literal "968") (] "]")) (; ";")) (declaration "undefined4 uStack_46c;" (type_identifier "undefined4") (identifier "uStack_46c") (; ";")) (declaration "undefined4 uStack_468;" (type_identifier "undefined4") (identifier "uStack_468") (; ";")) (declaration "undefined4 uStack_464;" (type_identifier "undefined4") (identifier "uStack_464") (; ";")) (declaration "undefined4 uStack_460;" (type_identifier "undefined4") (identifier "uStack_460") (; ";")) (declaration "undefined4 uStack_45c;" (type_identifier "undefined4") (identifier "uStack_45c") (; ";")) (declaration "undefined4 uStack_458;" (type_identifier "undefined4") (identifier "uStack_458") (; ";")) (declaration "undefined4 uStack_454;" (type_identifier "undefined4") (identifier "uStack_454") (; ";")) (declaration "undefined4 uStack_450;" (type_identifier "undefined4") (identifier "uStack_450") (; ";")) (declaration "uint uStack_444;" (type_identifier "uint") (identifier "uStack_444") (; ";")) (declaration "undefined1 *puStack_43c;" (type_identifier "undefined1") (pointer_declarator "*puStack_43c" (* "*") (identifier "puStack_43c")) (; ";")) (declaration "undefined *puStack_438;" (type_identifier "undefined") (pointer_declarator "*puStack_438" (* "*") (identifier "puStack_438")) (; ";")) (declaration "undefined4 uStack_434;" (type_identifier "undefined4") (identifier "uStack_434") (; ";")) (declaration "undefined4 uStack_430;" (type_identifier "undefined4") (identifier "uStack_430") (; ";")) (declaration "code *pcStack_42c;" (type_identifier "code") (pointer_declarator "*pcStack_42c" (* "*") (identifier "pcStack_42c")) (; ";")) (declaration "undefined1 auStack_40c [968];" (type_identifier "undefined1") (array_declarator "auStack_40c [968]" (identifier "auStack_40c") ([ "[") (number_literal "968") (] "]")) (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "uint local_1c;" (type_identifier "uint") (identifier "local_1c") (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_00079930;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00079930" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_00079930")) (; ";")) (expression_statement "local_1c = *(uint *)PTR___stack_chk_guard_00079930;" (assignment_expression "local_1c = *(uint *)PTR___stack_chk_guard_00079930" (identifier "local_1c") (= "=") (pointer_expression "*(uint *)PTR___stack_chk_guard_00079930" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_00079930" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00079930")))) (; ";")) (expression_statement "FUN_0002e544(auStack_40c,param_1,0x20);" (call_expression "FUN_0002e544(auStack_40c,param_1,0x20)" (identifier "FUN_0002e544") (argument_list "(auStack_40c,param_1,0x20)" (( "(") (identifier "auStack_40c") (, ",") (identifier "param_1") (, ",") (number_literal "0x20") () ")"))) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12 = auStack_40c;" (assignment_expression "puVar12 = auStack_40c" (identifier "puVar12") (= "=") (identifier "auStack_40c")) (; ";")) (expression_statement "FUN_0002ded0(param_2,param_3,auStack_40c);" (call_expression "FUN_0002ded0(param_2,param_3,auStack_40c)" (identifier "FUN_0002ded0") (argument_list "(param_2,param_3,auStack_40c)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "auStack_40c") () ")"))) (; ";")) (expression_statement "uVar6 = 0x3f0;" (assignment_expression "uVar6 = 0x3f0" (identifier "uVar6") (= "=") (number_literal "0x3f0")) (; ";")) (expression_statement "puVar8 = auStack_40c;" (assignment_expression "puVar8 = auStack_40c" (identifier "puVar8") (= "=") (identifier "auStack_40c")) (; ";")) (expression_statement "smemclr(auStack_40c,0x3f0);" (call_expression "smemclr(auStack_40c,0x3f0)" (identifier "smemclr") (argument_list "(auStack_40c,0x3f0)" (( "(") (identifier "auStack_40c") (, ",") (number_literal "0x3f0") () ")"))) (; ";")) (expression_statement "uVar3 = *(uint *)puVar2;" (assignment_expression "uVar3 = *(uint *)puVar2" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)puVar2" (* "*") (cast_expression "(uint *)puVar2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) (; ";")) (if_statement "if (local_1c == uVar3) {\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(local_1c == uVar3)" (( "(") (binary_expression "local_1c == uVar3" (identifier "local_1c") (== "==") (identifier "uVar3")) () ")")) (compound_statement "{\n    return uVar3;\n  }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "pcVar11 = aes256_decrypt_pubkey;" (assignment_expression "pcVar11 = aes256_decrypt_pubkey" (identifier "pcVar11") (= "=") (identifier "aes256_decrypt_pubkey")) (; ";")) (expression_statement "puVar10 = PTR___stack_chk_fail_000797f0;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000797f0" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_fail_000797f0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000797f0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000797f0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000797f0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000797f0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000797f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000797f0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_438 = puVar2;" (assignment_expression "puStack_438 = puVar2" (identifier "puStack_438") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar9 = *(uint **)(puVar10 + 0x4afc8);" (assignment_expression "puVar9 = *(uint **)(puVar10 + 0x4afc8)" (identifier "puVar9") (= "=") (pointer_expression "*(uint **)(puVar10 + 0x4afc8)" (* "*") (cast_expression "(uint **)(puVar10 + 0x4afc8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x4afc8)" (( "(") (binary_expression "puVar10 + 0x4afc8" (identifier "puVar10") (+ "+") (number_literal "0x4afc8")) () ")"))))) (; ";")) (expression_statement "puVar5 = auStack_834;" (assignment_expression "puVar5 = auStack_834" (identifier "puVar5") (= "=") (identifier "auStack_834")) (; ";")) (expression_statement "uStack_444 = *puVar9;" (assignment_expression "uStack_444 = *puVar9" (identifier "uStack_444") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puStack_43c = auStack_40c;" (assignment_expression "puStack_43c = auStack_40c" (identifier "puStack_43c") (= "=") (identifier "auStack_40c")) (; ";")) (expression_statement "uStack_434 = param_2;" (assignment_expression "uStack_434 = param_2" (identifier "uStack_434") (= "=") (identifier "param_2")) (; ";")) (expression_statement "uStack_430 = param_3;" (assignment_expression "uStack_430 = param_3" (identifier "uStack_430") (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcStack_42c = pcVar11;" (assignment_expression "pcStack_42c = pcVar11" (identifier "pcStack_42c") (= "=") (identifier "pcVar11")) (; ";")) (expression_statement "FUN_0002e544(puVar5,puVar8,0x20);" (call_expression "FUN_0002e544(puVar5,puVar8,0x20)" (identifier "FUN_0002e544") (argument_list "(puVar5,puVar8,0x20)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar8") (, ",") (number_literal "0x20") () ")"))) (; ";")) (expression_statement "uStack_46c = 0;" (assignment_expression "uStack_46c = 0" (identifier "uStack_46c") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_468 = 0;" (assignment_expression "uStack_468 = 0" (identifier "uStack_468") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_464 = 0;" (assignment_expression "uStack_464 = 0" (identifier "uStack_464") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_460 = 0;" (assignment_expression "uStack_460 = 0" (identifier "uStack_460") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_45c = 0;" (assignment_expression "uStack_45c = 0" (identifier "uStack_45c") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_458 = 0;" (assignment_expression "uStack_458 = 0" (identifier "uStack_458") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_454 = 0;" (assignment_expression "uStack_454 = 0" (identifier "uStack_454") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_450 = 0;" (assignment_expression "uStack_450 = 0" (identifier "uStack_450") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0002e0e4(uVar6,puVar12,puVar5);" (call_expression "FUN_0002e0e4(uVar6,puVar12,puVar5)" (identifier "FUN_0002e0e4") (argument_list "(uVar6,puVar12,puVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "puVar12") (, ",") (identifier "puVar5") () ")"))) (; ";")) (expression_statement "smemclr(puVar5,0x3f0);" (call_expression "smemclr(puVar5,0x3f0)" (identifier "smemclr") (argument_list "(puVar5,0x3f0)" (( "(") (identifier "puVar5") (, ",") (number_literal "0x3f0") () ")"))) (; ";")) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" (identifier "uVar3") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (if_statement "if (uStack_444 == uVar3) {\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(uStack_444 == uVar3)" (( "(") (binary_expression "uStack_444 == uVar3" (identifier "uStack_444") (== "==") (identifier "uVar3")) () ")")) (compound_statement "{\n    return uVar3;\n  }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x4ae88);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x4ae88)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x4ae88)" (* "*") (cast_expression "(code **)(puVar10 + 0x4ae88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x4ae88)" (( "(") (binary_expression "puVar10 + 0x4ae88" (identifier "puVar10") (+ "+") (number_literal "0x4ae88")) () ")"))))) (; ";")) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (-1 < (int)puVar5) {\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(-1 < (int)puVar5)" (( "(") (binary_expression "-1 < (int)puVar5" (number_literal "-1") (< "<") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5"))) () ")")) (compound_statement "{\n    uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);\n    return uVar3;\n  }" ({ "{") (expression_statement "uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);" (assignment_expression "uVar3 = (**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(pcVar11 + 0x4ac70))\n                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" (parenthesized_expression "(**(code **)(pcVar11 + 0x4ac70))" (( "(") (pointer_expression "**(code **)(pcVar11 + 0x4ac70)" (* "*") (pointer_expression "*(code **)(pcVar11 + 0x4ac70)" (* "*") (cast_expression "(code **)(pcVar11 + 0x4ac70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar11 + 0x4ac70)" (( "(") (binary_expression "pcVar11 + 0x4ac70" (identifier "pcVar11") (+ "+") (number_literal "0x4ac70")) () ")"))))) () ")")) (argument_list "(*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,\n                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620)" (( "(") (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2aa8" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" (* "*") (cast_expression "(int *)(pcVar11 + 0x4a658)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x4a658)" (( "(") (binary_expression "pcVar11 + 0x4a658" (identifier "pcVar11") (+ "+") (number_literal "0x4a658")) () ")")))) (+ "+") (number_literal "0x2aa8")) (, ",") (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2aa0" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" (* "*") (cast_expression "(int *)(pcVar11 + 0x4a658)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x4a658)" (( "(") (binary_expression "pcVar11 + 0x4a658" (identifier "pcVar11") (+ "+") (number_literal "0x4a658")) () ")")))) (+ "+") (number_literal "0x2aa0")) (, ",") (number_literal "0x22c") (, ",") (binary_expression "*(int *)(pcVar11 + 0x4a658) + 0x2ca4" (pointer_expression "*(int *)(pcVar11 + 0x4a658)" (* "*") (cast_expression "(int *)(pcVar11 + 0x4a658)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x4a658)" (( "(") (binary_expression "pcVar11 + 0x4a658" (identifier "pcVar11") (+ "+") (number_literal "0x4a658")) () ")")))) (+ "+") (number_literal "0x2ca4")) (, ",") (binary_expression "pcVar11 + 0x52620" (identifier "pcVar11") (+ "+") (number_literal "0x52620")) () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "uVar3 = ((uint)puVar5 >> 0x10) + 1;" (assignment_expression "uVar3 = ((uint)puVar5 >> 0x10) + 1" (identifier "uVar3") (= "=") (binary_expression "((uint)puVar5 >> 0x10) + 1" (parenthesized_expression "((uint)puVar5 >> 0x10)" (( "(") (binary_expression "(uint)puVar5 >> 0x10" (cast_expression "(uint)puVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar5")) (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8 = puVar5 + 1;" (assignment_expression "puVar8 = puVar5 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar3 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;" (assignment_expression "uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000" (identifier "uVar3") (= "=") (binary_expression "((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000" (parenthesized_expression "((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3)" (( "(") (binary_expression "(((uint)puVar5 >> 0x10) + 0x80000000) / uVar3" (parenthesized_expression "(((uint)puVar5 >> 0x10) + 0x80000000)" (( "(") (binary_expression "((uint)puVar5 >> 0x10) + 0x80000000" (parenthesized_expression "((uint)puVar5 >> 0x10)" (( "(") (binary_expression "(uint)puVar5 >> 0x10" (cast_expression "(uint)puVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar5")) (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (number_literal "0x80000000")) () ")")) (/ "/") (identifier "uVar3")) () ")")) (* "*") (number_literal "0x10000"))) (; ";")) (expression_statement "uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);" (assignment_expression "uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" (identifier "uVar7") (= "=") (unary_expression "~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" (~ "~") (call_expression "(uint)(ZEXT48(puVar8) * (ulonglong)uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(ZEXT48(puVar8) * (ulonglong)uVar3)" (( "(") (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" (identifier "ZEXT48") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (* "*") (cast_expression "(ulonglong)uVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar3"))) () ")"))))) (; ";")) (expression_statement "lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;" (assignment_expression "lVar1 = (ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3" (identifier "lVar1") (= "=") (binary_expression "(ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3" (call_expression "(ulonglong)\n          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7))" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7))" (( "(") (binary_expression "~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +\n          (uint)(uVar7 + 1 < uVar7)" (unary_expression "~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20))" (~ "~") (parenthesized_expression "((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20))" (( "(") (binary_expression "(puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (binary_expression "(puVar8 < puVar5) * uVar3" (parenthesized_expression "(puVar8 < puVar5)" (( "(") (binary_expression "puVar8 < puVar5" (identifier "puVar8") (< "<") (identifier "puVar5")) () ")")) (* "*") (identifier "uVar3")) (+ "+") (cast_expression "(int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (( "(") (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20" (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" (identifier "ZEXT48") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (* "*") (cast_expression "(ulonglong)uVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar3"))) (>> ">>") (number_literal "0x20")) () ")")))) () ")"))) (+ "+") (call_expression "(uint)(uVar7 + 1 < uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 + 1 < uVar7)" (( "(") (binary_expression "uVar7 + 1 < uVar7" (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) (< "<") (identifier "uVar7")) () ")")))) () ")"))) (* "*") (cast_expression "(ulonglong)uVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar3")))) (; ";")) (expression_statement "uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;" (assignment_expression "uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f" (identifier "uVar3") (= "=") (binary_expression "(int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f" (binary_expression "(int)((ulonglong)lVar1 >> 0x20) << 1" (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")"))) (<< "<<") (number_literal "1")) (| "|") (binary_expression "(uint)lVar1 >> 0x1f" (cast_expression "(uint)lVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x1f")))) (; ";")) (expression_statement "puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);" (assignment_expression "puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3)" (identifier "puVar12") (= "=") (cast_expression "(undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3)" (( "(") (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" (identifier "ZEXT48") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (* "*") (cast_expression "(ulonglong)uVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar3"))) () ")")))) (; ";")) (expression_statement "iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);" (assignment_expression "iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (identifier "iVar4") (= "=") (binary_expression "(puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (binary_expression "(puVar8 < puVar5) * uVar3" (parenthesized_expression "(puVar8 < puVar5)" (( "(") (binary_expression "puVar8 < puVar5" (identifier "puVar8") (< "<") (identifier "puVar5")) () ")")) (* "*") (identifier "uVar3")) (+ "+") (cast_expression "(int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)" (( "(") (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20" (binary_expression "ZEXT48(puVar8) * (ulonglong)uVar3" (call_expression "ZEXT48(puVar8)" (identifier "ZEXT48") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (* "*") (cast_expression "(ulonglong)uVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar3"))) (>> ">>") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (iVar4 < 0) {\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }\n  else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" (if "if") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = ~(uint)puVar5 + 1;\n    do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);\n  }" ({ "{") (expression_statement "uVar7 = ~(uint)puVar5 + 1;" (assignment_expression "uVar7 = ~(uint)puVar5 + 1" (identifier "uVar7") (= "=") (binary_expression "~(uint)puVar5 + 1" (unary_expression "~(uint)puVar5" (~ "~") (cast_expression "(uint)puVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar5"))) (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    } while (iVar4 < 0);" (do "do") (compound_statement "{\n      uVar3 = uVar3 - 1;\n      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;\n      puVar12 = puVar12 + -(int)puVar5;\n    }" ({ "{") (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;" (assignment_expression "iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1" (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5)" (binary_expression "iVar4 + (uint)(puVar12 + uVar7 < puVar12)" (identifier "iVar4") (+ "+") (call_expression "(uint)(puVar12 + uVar7 < puVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar12 + uVar7 < puVar12)" (( "(") (binary_expression "puVar12 + uVar7 < puVar12" (binary_expression "puVar12 + uVar7" (identifier "puVar12") (+ "+") (identifier "uVar7")) (< "<") (identifier "puVar12")) () ")")))) (+ "+") (call_expression "(uint)(uVar7 < ~(uint)puVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < ~(uint)puVar5)" (( "(") (binary_expression "uVar7 < ~(uint)puVar5" (identifier "uVar7") (< "<") (unary_expression "~(uint)puVar5" (~ "~") (cast_expression "(uint)puVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar5")))) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar12 = puVar12 + -(int)puVar5;" (assignment_expression "puVar12 = puVar12 + -(int)puVar5" (identifier "puVar12") (= "=") (binary_expression "puVar12 + -(int)puVar5" (identifier "puVar12") (+ "+") (unary_expression "-(int)puVar5" (- "-") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" (else "else") (compound_statement "{\n    puVar8 = puVar5 + (int)puVar12;\n    iVar4 = iVar4 + (uint)(puVar8 < puVar12);\n    if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }\n  }" ({ "{") (expression_statement "puVar8 = puVar5 + (int)puVar12;" (assignment_expression "puVar8 = puVar5 + (int)puVar12" (identifier "puVar8") (= "=") (binary_expression "puVar5 + (int)puVar12" (identifier "puVar5") (+ "+") (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")))) (; ";")) (expression_statement "iVar4 = iVar4 + (uint)(puVar8 < puVar12);" (assignment_expression "iVar4 = iVar4 + (uint)(puVar8 < puVar12)" (identifier "iVar4") (= "=") (binary_expression "iVar4 + (uint)(puVar8 < puVar12)" (identifier "iVar4") (+ "+") (call_expression "(uint)(puVar8 < puVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar8 < puVar12)" (( "(") (binary_expression "puVar8 < puVar12" (identifier "puVar8") (< "<") (identifier "puVar12")) () ")"))))) (; ";")) (if_statement "if (-1 < iVar4) {\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }" (if "if") (parenthesized_expression "(-1 < iVar4)" (( "(") (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n      do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);\n      return uVar3;\n    }" ({ "{") (do_statement "do {\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      } while (-1 < iVar4);" (do "do") (compound_statement "{\n        puVar8 = puVar8 + (int)puVar5;\n        iVar4 = iVar4 + (uint)(puVar8 < puVar5);\n        uVar3 = uVar3 + 1;\n      }" ({ "{") (expression_statement "puVar8 = puVar8 + (int)puVar5;" (assignment_expression "puVar8 = puVar8 + (int)puVar5" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (int)puVar5" (identifier "puVar8") (+ "+") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")))) (; ";")) (expression_statement "iVar4 = iVar4 + (uint)(puVar8 < puVar5);" (assignment_expression "iVar4 = iVar4 + (uint)(puVar8 < puVar5)" (identifier "iVar4") (= "=") (binary_expression "iVar4 + (uint)(puVar8 < puVar5)" (identifier "iVar4") (+ "+") (call_expression "(uint)(puVar8 < puVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar8 < puVar5)" (( "(") (binary_expression "puVar8 < puVar5" (identifier "puVar8") (< "<") (identifier "puVar5")) () ")"))))) (; ";")) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(-1 < iVar4)" (( "(") (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) () ")")) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (} "}")))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (number_literal) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) right: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal))))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))) (return_statement (identifier))))))) (return_statement (identifier)))))

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

{
  longlong lVar1;
  undefined *puVar2;
  uint uVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined4 uVar6;
  uint uVar7;
  undefined1 *puVar8;
  uint *puVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined1 *puVar12;
  undefined1 auStack_834 [968];
  undefined4 uStack_46c;
  undefined4 uStack_468;
  undefined4 uStack_464;
  undefined4 uStack_460;
  undefined4 uStack_45c;
  undefined4 uStack_458;
  undefined4 uStack_454;
  undefined4 uStack_450;
  uint uStack_444;
  undefined1 *puStack_43c;
  undefined *puStack_438;
  undefined4 uStack_434;
  undefined4 uStack_430;
  code *pcStack_42c;
  undefined1 auStack_40c [968];
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  uint local_1c;
  
  puVar2 = PTR___stack_chk_guard_00079930;
  local_1c = *(uint *)PTR___stack_chk_guard_00079930;
  FUN_0002e544(auStack_40c,param_1,0x20);
  local_44 = 0;
  local_40 = 0;
  local_3c = 0;
  local_38 = 0;
  local_34 = 0;
  local_30 = 0;
  local_2c = 0;
  local_28 = 0;
  puVar12 = auStack_40c;
  FUN_0002ded0(param_2,param_3,auStack_40c);
  uVar6 = 0x3f0;
  puVar8 = auStack_40c;
  smemclr(auStack_40c,0x3f0);
  uVar3 = *(uint *)puVar2;
  if (local_1c == uVar3) {
    return uVar3;
  }
  pcVar11 = aes256_decrypt_pubkey;
  puVar10 = PTR___stack_chk_fail_000797f0;
  (*(code *)PTR___stack_chk_fail_000797f0)();
  puStack_438 = puVar2;
  puVar9 = *(uint **)(puVar10 + 0x4afc8);
  puVar5 = auStack_834;
  uStack_444 = *puVar9;
  puStack_43c = auStack_40c;
  uStack_434 = param_2;
  uStack_430 = param_3;
  pcStack_42c = pcVar11;
  FUN_0002e544(puVar5,puVar8,0x20);
  uStack_46c = 0;
  uStack_468 = 0;
  uStack_464 = 0;
  uStack_460 = 0;
  uStack_45c = 0;
  uStack_458 = 0;
  uStack_454 = 0;
  uStack_450 = 0;
  FUN_0002e0e4(uVar6,puVar12,puVar5);
  smemclr(puVar5,0x3f0);
  uVar3 = *puVar9;
  if (uStack_444 == uVar3) {
    return uVar3;
  }
  pcVar11 = *(code **)(puVar10 + 0x4ae88);
  (*pcVar11)();
  if (-1 < (int)puVar5) {
    uVar3 = (**(code **)(pcVar11 + 0x4ac70))
                      (*(int *)(pcVar11 + 0x4a658) + 0x2aa8,*(int *)(pcVar11 + 0x4a658) + 0x2aa0,
                       0x22c,*(int *)(pcVar11 + 0x4a658) + 0x2ca4,pcVar11 + 0x52620);
    return uVar3;
  }
  uVar3 = ((uint)puVar5 >> 0x10) + 1;
  puVar8 = puVar5 + 1;
  if (uVar3 == 0) {
    trap(7);
  }
  uVar3 = ((((uint)puVar5 >> 0x10) + 0x80000000) / uVar3) * 0x10000;
  uVar7 = ~(uint)(ZEXT48(puVar8) * (ulonglong)uVar3);
  lVar1 = (ulonglong)
          (~((puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20)) +
          (uint)(uVar7 + 1 < uVar7)) * (ulonglong)uVar3;
  uVar3 = (int)((ulonglong)lVar1 >> 0x20) << 1 | (uint)lVar1 >> 0x1f;
  puVar12 = (undefined1 *)(ZEXT48(puVar8) * (ulonglong)uVar3);
  iVar4 = (puVar8 < puVar5) * uVar3 + (int)(ZEXT48(puVar8) * (ulonglong)uVar3 >> 0x20);
  if (iVar4 < 0) {
    uVar7 = ~(uint)puVar5 + 1;
    do {
      uVar3 = uVar3 - 1;
      iVar4 = iVar4 + (uint)(puVar12 + uVar7 < puVar12) + (uint)(uVar7 < ~(uint)puVar5) + -1;
      puVar12 = puVar12 + -(int)puVar5;
    } while (iVar4 < 0);
  }
  else {
    puVar8 = puVar5 + (int)puVar12;
    iVar4 = iVar4 + (uint)(puVar8 < puVar12);
    if (-1 < iVar4) {
      do {
        puVar8 = puVar8 + (int)puVar5;
        iVar4 = iVar4 + (uint)(puVar8 < puVar5);
        uVar3 = uVar3 + 1;
      } while (-1 < iVar4);
      return uVar3;
    }
  }
  return uVar3;
}

