
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int __regparm3 ecp_normalise(ec_point *a)

{
  ec_curve *peVar1;
  anon_enum_32 aVar2;
  Bignum_conflict pBVar3;
  Bignum_conflict pBVar4;
  Bignum_conflict b;
  
  peVar1 = a->curve;
  aVar2 = peVar1->type;
  if (aVar2 == EC_WEIERSTRASS) {
    if ((a->x != (Bignum)0x0) && (a->y != (Bignum)0x0)) {
      pBVar3 = (Bignum_conflict)a->z;
      if (pBVar3 == (Bignum_conflict)0x0) {
        return 1;
      }
      pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);
      pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);
      if (pBVar4 != (Bignum_conflict)0x0) {
        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);
        freebn(pBVar4);
        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);
        freebn(pBVar3);
        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);
        freebn(pBVar4);
        if (pBVar3 == (Bignum_conflict)0x0) {
          freebn(b);
          return 0;
        }
        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);
        freebn(pBVar3);
        freebn((Bignum_conflict)a->x);
        a->x = b;
        freebn((Bignum_conflict)a->y);
        a->y = pBVar4;
        freebn((Bignum_conflict)a->z);
        a->z = (Bignum)0x0;
        return 1;
      }
      freebn(pBVar3);
    }
  }
  else {
    if (aVar2 != EC_MONTGOMERY) {
      return (uint)(aVar2 == EC_EDWARDS);
    }
    if (a->x != (Bignum)0x0) {
      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {
        return 1;
      }
      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);
      if (pBVar3 != (Bignum_conflict)0x0) {
        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);
        freebn(pBVar3);
        freebn((Bignum_conflict)a->z);
        a->z = (Bignum)0x0;
        freebn((Bignum_conflict)a->x);
        a->x = pBVar4;
        return 1;
      }
    }
  }
  return 0;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bool __regparm3 FUN_0002ee40(int *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  
  piVar1 = (int *)*param_1;
  iVar3 = *piVar1;
  if (iVar3 == 0) {
    if ((param_1[1] != 0) && (param_1[2] != 0)) {
      iVar3 = param_1[3];
      if (iVar3 == 0) {
        return true;
      }
      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);
      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));
      if (iVar3 != 0) {
        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(iVar3);
        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(uVar2);
        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(uVar5);
        if (iVar3 == 0) {
          FUN_00026200(iVar4);
          return false;
        }
        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(iVar3);
        FUN_00026200(param_1[1]);
        param_1[1] = iVar4;
        FUN_00026200(param_1[2]);
        param_1[2] = iVar6;
        FUN_00026200(param_1[3]);
        param_1[3] = 0;
        return true;
      }
      FUN_00026200(uVar2);
    }
  }
  else {
    if (iVar3 != 1) {
      return iVar3 == 2;
    }
    if (param_1[1] != 0) {
      if (param_1[3] == 0) {
        return true;
      }
      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);
      if (iVar3 != 0) {
        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(iVar3);
        FUN_00026200(param_1[3]);
        param_1[3] = 0;
        FUN_00026200(param_1[1]);
        param_1[1] = iVar4;
        return true;
      }
    }
  }
  return false;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
PUSH EBX
CALL 0x00014560
ADD EBX,0x41019
SUB ESP,0x1c
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JNZ 0x0002ef98
MOV EBP,dword ptr [EDI + 0x4]
TEST EBP,EBP
JZ 0x0002ef88
MOV ECX,dword ptr [EDI + 0x8]
TEST ECX,ECX
JZ 0x0002ef88
MOV EAX,dword ptr [EDI + 0xc]
MOV EBP,0x1
TEST EAX,EAX
JZ 0x0002ef8a
SUB ESP,0x4
PUSH dword ptr [ESI + 0x10]
PUSH EAX
PUSH EAX
CALL 0x00026d50
MOV ESI,EAX
POP EAX
MOV EAX,dword ptr [EDI]
POP EDX
PUSH dword ptr [EAX + 0x10]
PUSH ESI
CALL 0x00028da0
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JZ 0x0002ef78
MOV EAX,dword ptr [EDI]
SUB ESP,0x4
PUSH dword ptr [EAX + 0x10]
PUSH EDX
MOV dword ptr [ESP + 0x14],EDX
PUSH dword ptr [EDI + 0x4]
CALL 0x00026d50
MOV EDX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP],EDX
CALL 0x00026200
MOV EAX,dword ptr [EDI]
ADD ESP,0xc
PUSH dword ptr [EAX + 0x10]
PUSH dword ptr [EDI + 0xc]
PUSH ESI
CALL 0x00026d50
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x18],EAX
CALL 0x00026200
POP EAX
MOV EAX,dword ptr [EDI]
POP EDX
PUSH dword ptr [EAX + 0x10]
PUSH dword ptr [ESP + 0x14]
CALL 0x00028da0
POP ECX
PUSH dword ptr [ESP + 0x14]
MOV ESI,EAX
CALL 0x00026200
ADD ESP,0x10
TEST ESI,ESI
JZ 0x0002f018
MOV EAX,dword ptr [EDI]
SUB ESP,0x4
PUSH dword ptr [EAX + 0x10]
PUSH ESI
PUSH dword ptr [EDI + 0x8]
CALL 0x00026d50
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x18],EAX
CALL 0x00026200
POP ESI
PUSH dword ptr [EDI + 0x4]
CALL 0x00026200
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EDI + 0x4],EAX
POP EAX
PUSH dword ptr [EDI + 0x8]
CALL 0x00026200
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [EDI + 0x8],EAX
POP EAX
PUSH dword ptr [EDI + 0xc]
CALL 0x00026200
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],0x0
MOV EAX,EBP
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH ESI
CALL 0x00026200
ADD ESP,0x10
LEA ESI,[ESI]
XOR EBP,EBP
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR ECX,ECX
CMP EAX,0x2
SETZ CL
MOV EBP,ECX
CMP EAX,0x1
JNZ 0x0002ef8a
MOV ECX,dword ptr [EDI + 0x4]
TEST ECX,ECX
JZ 0x0002ef88
MOV EAX,dword ptr [EDI + 0xc]
MOV EBP,0x1
TEST EAX,EAX
JZ 0x0002ef8a
SUB ESP,0x8
PUSH dword ptr [ESI + 0x10]
PUSH EAX
CALL 0x00028da0
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JZ 0x0002ef88
MOV EAX,dword ptr [EDI]
SUB ESP,0x4
PUSH dword ptr [EAX + 0x10]
PUSH ESI
PUSH dword ptr [EDI + 0x4]
CALL 0x00026d50
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x18],EAX
CALL 0x00026200
POP EAX
PUSH dword ptr [EDI + 0xc]
CALL 0x00026200
POP EDX
MOV dword ptr [EDI + 0xc],0x0
PUSH dword ptr [EDI + 0x4]
CALL 0x00026200
MOV EAX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV dword ptr [EDI + 0x4],EAX
JMP 0x0002ef8a
SUB ESP,0xc
XOR EBP,EBP
PUSH dword ptr [ESP + 0x18]
CALL 0x00026200
ADD ESP,0x10
JMP 0x0002ef8a
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool __regparm3 FUN_0002ee40(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  \n  piVar1 = (int *)*param_1;\n  iVar3 = *piVar1;\n  if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\n" comment (function_definition "bool __regparm3 FUN_0002ee40(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  \n  piVar1 = (int *)*param_1;\n  iVar3 = *piVar1;\n  if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }\n  return false;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0002ee40(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  \n  piVar1 = (int *)*param_1;\n  iVar3 = *piVar1;\n  if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }\n  return false;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar3 = *piVar1;" (assignment_expression "iVar3 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (if_statement "if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }" { (if_statement "if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }" if (parenthesized_expression "((param_1[1] != 0) && (param_1[2] != 0))" ( (binary_expression "(param_1[1] != 0) && (param_1[2] != 0)" (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }" { (expression_statement "iVar3 = param_1[3];" (assignment_expression "iVar3 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == 0) {\n        return true;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) (expression_statement "uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);" (assignment_expression "uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4])" identifier = (call_expression "FUN_00026d50(iVar3,iVar3,piVar1[4])" identifier (argument_list "(iVar3,iVar3,piVar1[4])" ( identifier , identifier , (subscript_expression "piVar1[4]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(uVar2,*(undefined4 *)(*param_1 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }" { (expression_statement "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" ( identifier , (subscript_expression "param_1[3]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(uVar2);" (call_expression "FUN_00026200(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(uVar5,*(undefined4 *)(*param_1 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(uVar5);" (call_expression "FUN_00026200(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (if_statement "if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_00026200(iVar4);\n          return false;\n        }" { (expression_statement "FUN_00026200(iVar4);" (call_expression "FUN_00026200(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "FUN_00026200(param_1[1]);" (call_expression "FUN_00026200(param_1[1])" identifier (argument_list "(param_1[1])" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[1] = iVar4;" (assignment_expression "param_1[1] = iVar4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00026200(param_1[2]);" (call_expression "FUN_00026200(param_1[2])" identifier (argument_list "(param_1[2])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[2] = iVar6;" (assignment_expression "param_1[2] = iVar6" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00026200(param_1[3]);" (call_expression "FUN_00026200(param_1[3])" identifier (argument_list "(param_1[3])" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "FUN_00026200(uVar2);" (call_expression "FUN_00026200(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) })) }) (else_clause "else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" else (compound_statement "{\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" { (if_statement "if (iVar3 != 1) {\n      return iVar3 == 2;\n    }" if (parenthesized_expression "(iVar3 != 1)" ( (binary_expression "iVar3 != 1" identifier != number_literal) )) (compound_statement "{\n      return iVar3 == 2;\n    }" { (return_statement "return iVar3 == 2;" return (binary_expression "iVar3 == 2" identifier == number_literal) ;) })) (if_statement "if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }" if (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }" { (if_statement "if (param_1[3] == 0) {\n        return true;\n      }" if (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) (expression_statement "iVar3 = FUN_00028da0(param_1[3],piVar1[4]);" (assignment_expression "iVar3 = FUN_00028da0(param_1[3],piVar1[4])" identifier = (call_expression "FUN_00028da0(param_1[3],piVar1[4])" identifier (argument_list "(param_1[3],piVar1[4])" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , (subscript_expression "piVar1[4]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }" { (expression_statement "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "FUN_00026200(param_1[3]);" (call_expression "FUN_00026200(param_1[3])" identifier (argument_list "(param_1[3])" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00026200(param_1[1]);" (call_expression "FUN_00026200(param_1[1])" identifier (argument_list "(param_1[1])" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[1] = iVar4;" (assignment_expression "param_1[1] = iVar4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return true;" return true ;) })) })) }))) (return_statement "return false;" return false ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nint __regparm3 ecp_normalise(ec_point *a)\n\n{\n  ec_curve *peVar1;\n  anon_enum_32 aVar2;\n  Bignum_conflict pBVar3;\n  Bignum_conflict pBVar4;\n  Bignum_conflict b;\n  \n  peVar1 = a->curve;\n  aVar2 = peVar1->type;\n  if (aVar2 == EC_WEIERSTRASS) {\n    if ((a->x != (Bignum)0x0) && (a->y != (Bignum)0x0)) {\n      pBVar3 = (Bignum_conflict)a->z;\n      if (pBVar3 == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);\n      pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);\n      if (pBVar4 != (Bignum_conflict)0x0) {\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }\n      freebn(pBVar3);\n    }\n  }\n  else {\n    if (aVar2 != EC_MONTGOMERY) {\n      return (uint)(aVar2 == EC_EDWARDS);\n    }\n    if (a->x != (Bignum)0x0) {\n      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);\n      if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}\n\n" comment comment (function_definition "int __regparm3 ecp_normalise(ec_point *a)\n\n{\n  ec_curve *peVar1;\n  anon_enum_32 aVar2;\n  Bignum_conflict pBVar3;\n  Bignum_conflict pBVar4;\n  Bignum_conflict b;\n  \n  peVar1 = a->curve;\n  aVar2 = peVar1->type;\n  if (aVar2 == EC_WEIERSTRASS) {\n    if ((a->x != (Bignum)0x0) && (a->y != (Bignum)0x0)) {\n      pBVar3 = (Bignum_conflict)a->z;\n      if (pBVar3 == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);\n      pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);\n      if (pBVar4 != (Bignum_conflict)0x0) {\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }\n      freebn(pBVar3);\n    }\n  }\n  else {\n    if (aVar2 != EC_MONTGOMERY) {\n      return (uint)(aVar2 == EC_EDWARDS);\n    }\n    if (a->x != (Bignum)0x0) {\n      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);\n      if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "ecp_normalise(ec_point *a)" identifier (parameter_list "(ec_point *a)" ( (parameter_declaration "ec_point *a" type_identifier (pointer_declarator "*a" * identifier)) ))) (compound_statement "{\n  ec_curve *peVar1;\n  anon_enum_32 aVar2;\n  Bignum_conflict pBVar3;\n  Bignum_conflict pBVar4;\n  Bignum_conflict b;\n  \n  peVar1 = a->curve;\n  aVar2 = peVar1->type;\n  if (aVar2 == EC_WEIERSTRASS) {\n    if ((a->x != (Bignum)0x0) && (a->y != (Bignum)0x0)) {\n      pBVar3 = (Bignum_conflict)a->z;\n      if (pBVar3 == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);\n      pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);\n      if (pBVar4 != (Bignum_conflict)0x0) {\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }\n      freebn(pBVar3);\n    }\n  }\n  else {\n    if (aVar2 != EC_MONTGOMERY) {\n      return (uint)(aVar2 == EC_EDWARDS);\n    }\n    if (a->x != (Bignum)0x0) {\n      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);\n      if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" { (declaration "ec_curve *peVar1;" type_identifier (pointer_declarator "*peVar1" * identifier) ;) (declaration "anon_enum_32 aVar2;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar3;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar4;" type_identifier identifier ;) (declaration "Bignum_conflict b;" type_identifier identifier ;) (expression_statement "peVar1 = a->curve;" (assignment_expression "peVar1 = a->curve" identifier = (field_expression "a->curve" identifier -> field_identifier)) ;) (expression_statement "aVar2 = peVar1->type;" (assignment_expression "aVar2 = peVar1->type" identifier = (field_expression "peVar1->type" identifier -> field_identifier)) ;) (if_statement "if (aVar2 == EC_WEIERSTRASS) {\n    if ((a->x != (Bignum)0x0) && (a->y != (Bignum)0x0)) {\n      pBVar3 = (Bignum_conflict)a->z;\n      if (pBVar3 == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);\n      pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);\n      if (pBVar4 != (Bignum_conflict)0x0) {\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }\n      freebn(pBVar3);\n    }\n  }\n  else {\n    if (aVar2 != EC_MONTGOMERY) {\n      return (uint)(aVar2 == EC_EDWARDS);\n    }\n    if (a->x != (Bignum)0x0) {\n      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);\n      if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }\n    }\n  }" if (parenthesized_expression "(aVar2 == EC_WEIERSTRASS)" ( (binary_expression "aVar2 == EC_WEIERSTRASS" identifier == identifier) )) (compound_statement "{\n    if ((a->x != (Bignum)0x0) && (a->y != (Bignum)0x0)) {\n      pBVar3 = (Bignum_conflict)a->z;\n      if (pBVar3 == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);\n      pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);\n      if (pBVar4 != (Bignum_conflict)0x0) {\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }\n      freebn(pBVar3);\n    }\n  }" { (if_statement "if ((a->x != (Bignum)0x0) && (a->y != (Bignum)0x0)) {\n      pBVar3 = (Bignum_conflict)a->z;\n      if (pBVar3 == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);\n      pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);\n      if (pBVar4 != (Bignum_conflict)0x0) {\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }\n      freebn(pBVar3);\n    }" if (parenthesized_expression "((a->x != (Bignum)0x0) && (a->y != (Bignum)0x0))" ( (binary_expression "(a->x != (Bignum)0x0) && (a->y != (Bignum)0x0)" (parenthesized_expression "(a->x != (Bignum)0x0)" ( (binary_expression "a->x != (Bignum)0x0" (field_expression "a->x" identifier -> field_identifier) != (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) )) && (parenthesized_expression "(a->y != (Bignum)0x0)" ( (binary_expression "a->y != (Bignum)0x0" (field_expression "a->y" identifier -> field_identifier) != (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n      pBVar3 = (Bignum_conflict)a->z;\n      if (pBVar3 == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);\n      pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);\n      if (pBVar4 != (Bignum_conflict)0x0) {\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }\n      freebn(pBVar3);\n    }" { (expression_statement "pBVar3 = (Bignum_conflict)a->z;" (assignment_expression "pBVar3 = (Bignum_conflict)a->z" identifier = (cast_expression "(Bignum_conflict)a->z" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->z" identifier -> field_identifier))) ;) (if_statement "if (pBVar3 == (Bignum_conflict)0x0) {\n        return 1;\n      }" if (parenthesized_expression "(pBVar3 == (Bignum_conflict)0x0)" ( (binary_expression "pBVar3 == (Bignum_conflict)0x0" identifier == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p);" (assignment_expression "pBVar3 = modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p)" identifier = (call_expression "modmul(pBVar3,pBVar3,(Bignum_conflict)peVar1->p)" identifier (argument_list "(pBVar3,pBVar3,(Bignum_conflict)peVar1->p)" ( identifier , identifier , (cast_expression "(Bignum_conflict)peVar1->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "peVar1->p" identifier -> field_identifier)) )))) ;) (expression_statement "pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p);" (assignment_expression "pBVar4 = modinv(pBVar3,(Bignum_conflict)a->curve->p)" identifier = (call_expression "modinv(pBVar3,(Bignum_conflict)a->curve->p)" identifier (argument_list "(pBVar3,(Bignum_conflict)a->curve->p)" ( identifier , (cast_expression "(Bignum_conflict)a->curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->curve->p" (field_expression "a->curve" identifier -> field_identifier) -> field_identifier)) )))) ;) (if_statement "if (pBVar4 != (Bignum_conflict)0x0) {\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }" if (parenthesized_expression "(pBVar4 != (Bignum_conflict)0x0)" ( (binary_expression "pBVar4 != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n        b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);\n        freebn(pBVar4);\n        if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }\n        pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->x);\n        a->x = b;\n        freebn((Bignum_conflict)a->y);\n        a->y = pBVar4;\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        return 1;\n      }" { (expression_statement "b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p);" (assignment_expression "b = modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p)" identifier = (call_expression "modmul((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p)" identifier (argument_list "((Bignum_conflict)a->x,pBVar4,(Bignum_conflict)a->curve->p)" ( (cast_expression "(Bignum_conflict)a->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->x" identifier -> field_identifier)) , identifier , (cast_expression "(Bignum_conflict)a->curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->curve->p" (field_expression "a->curve" identifier -> field_identifier) -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar4);" (call_expression "freebn(pBVar4)" identifier (argument_list "(pBVar4)" ( identifier ))) ;) (expression_statement "pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p);" (assignment_expression "pBVar4 = modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p)" identifier = (call_expression "modmul(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p)" identifier (argument_list "(pBVar3,(Bignum_conflict)a->z,(Bignum_conflict)a->curve->p)" ( identifier , (cast_expression "(Bignum_conflict)a->z" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->z" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)a->curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->curve->p" (field_expression "a->curve" identifier -> field_identifier) -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar3);" (call_expression "freebn(pBVar3)" identifier (argument_list "(pBVar3)" ( identifier ))) ;) (expression_statement "pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p);" (assignment_expression "pBVar3 = modinv(pBVar4,(Bignum_conflict)a->curve->p)" identifier = (call_expression "modinv(pBVar4,(Bignum_conflict)a->curve->p)" identifier (argument_list "(pBVar4,(Bignum_conflict)a->curve->p)" ( identifier , (cast_expression "(Bignum_conflict)a->curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->curve->p" (field_expression "a->curve" identifier -> field_identifier) -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar4);" (call_expression "freebn(pBVar4)" identifier (argument_list "(pBVar4)" ( identifier ))) ;) (if_statement "if (pBVar3 == (Bignum_conflict)0x0) {\n          freebn(b);\n          return 0;\n        }" if (parenthesized_expression "(pBVar3 == (Bignum_conflict)0x0)" ( (binary_expression "pBVar3 == (Bignum_conflict)0x0" identifier == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n          freebn(b);\n          return 0;\n        }" { (expression_statement "freebn(b);" (call_expression "freebn(b)" identifier (argument_list "(b)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p);" (assignment_expression "pBVar4 = modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p)" identifier = (call_expression "modmul((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p)" identifier (argument_list "((Bignum_conflict)a->y,pBVar3,(Bignum_conflict)a->curve->p)" ( (cast_expression "(Bignum_conflict)a->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->y" identifier -> field_identifier)) , identifier , (cast_expression "(Bignum_conflict)a->curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->curve->p" (field_expression "a->curve" identifier -> field_identifier) -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar3);" (call_expression "freebn(pBVar3)" identifier (argument_list "(pBVar3)" ( identifier ))) ;) (expression_statement "freebn((Bignum_conflict)a->x);" (call_expression "freebn((Bignum_conflict)a->x)" identifier (argument_list "((Bignum_conflict)a->x)" ( (cast_expression "(Bignum_conflict)a->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->x" identifier -> field_identifier)) ))) ;) (expression_statement "a->x = b;" (assignment_expression "a->x = b" (field_expression "a->x" identifier -> field_identifier) = identifier) ;) (expression_statement "freebn((Bignum_conflict)a->y);" (call_expression "freebn((Bignum_conflict)a->y)" identifier (argument_list "((Bignum_conflict)a->y)" ( (cast_expression "(Bignum_conflict)a->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->y" identifier -> field_identifier)) ))) ;) (expression_statement "a->y = pBVar4;" (assignment_expression "a->y = pBVar4" (field_expression "a->y" identifier -> field_identifier) = identifier) ;) (expression_statement "freebn((Bignum_conflict)a->z);" (call_expression "freebn((Bignum_conflict)a->z)" identifier (argument_list "((Bignum_conflict)a->z)" ( (cast_expression "(Bignum_conflict)a->z" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->z" identifier -> field_identifier)) ))) ;) (expression_statement "a->z = (Bignum)0x0;" (assignment_expression "a->z = (Bignum)0x0" (field_expression "a->z" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "freebn(pBVar3);" (call_expression "freebn(pBVar3)" identifier (argument_list "(pBVar3)" ( identifier ))) ;) })) }) (else_clause "else {\n    if (aVar2 != EC_MONTGOMERY) {\n      return (uint)(aVar2 == EC_EDWARDS);\n    }\n    if (a->x != (Bignum)0x0) {\n      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);\n      if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }\n    }\n  }" else (compound_statement "{\n    if (aVar2 != EC_MONTGOMERY) {\n      return (uint)(aVar2 == EC_EDWARDS);\n    }\n    if (a->x != (Bignum)0x0) {\n      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);\n      if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }\n    }\n  }" { (if_statement "if (aVar2 != EC_MONTGOMERY) {\n      return (uint)(aVar2 == EC_EDWARDS);\n    }" if (parenthesized_expression "(aVar2 != EC_MONTGOMERY)" ( (binary_expression "aVar2 != EC_MONTGOMERY" identifier != identifier) )) (compound_statement "{\n      return (uint)(aVar2 == EC_EDWARDS);\n    }" { (return_statement "return (uint)(aVar2 == EC_EDWARDS);" return (call_expression "(uint)(aVar2 == EC_EDWARDS)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(aVar2 == EC_EDWARDS)" ( (binary_expression "aVar2 == EC_EDWARDS" identifier == identifier) ))) ;) })) (if_statement "if (a->x != (Bignum)0x0) {\n      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);\n      if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }\n    }" if (parenthesized_expression "(a->x != (Bignum)0x0)" ( (binary_expression "a->x != (Bignum)0x0" (field_expression "a->x" identifier -> field_identifier) != (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) )) (compound_statement "{\n      if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }\n      pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);\n      if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }\n    }" { (if_statement "if ((Bignum_conflict)a->z == (Bignum_conflict)0x0) {\n        return 1;\n      }" if (parenthesized_expression "((Bignum_conflict)a->z == (Bignum_conflict)0x0)" ( (binary_expression "(Bignum_conflict)a->z == (Bignum_conflict)0x0" (cast_expression "(Bignum_conflict)a->z" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->z" identifier -> field_identifier)) == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p);" (assignment_expression "pBVar3 = modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p)" identifier = (call_expression "modinv((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p)" identifier (argument_list "((Bignum_conflict)a->z,(Bignum_conflict)peVar1->p)" ( (cast_expression "(Bignum_conflict)a->z" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->z" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)peVar1->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "peVar1->p" identifier -> field_identifier)) )))) ;) (if_statement "if (pBVar3 != (Bignum_conflict)0x0) {\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }" if (parenthesized_expression "(pBVar3 != (Bignum_conflict)0x0)" ( (binary_expression "pBVar3 != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n        pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);\n        freebn(pBVar3);\n        freebn((Bignum_conflict)a->z);\n        a->z = (Bignum)0x0;\n        freebn((Bignum_conflict)a->x);\n        a->x = pBVar4;\n        return 1;\n      }" { (expression_statement "pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p);" (assignment_expression "pBVar4 = modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p)" identifier = (call_expression "modmul((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p)" identifier (argument_list "((Bignum_conflict)a->x,pBVar3,(Bignum_conflict)a->curve->p)" ( (cast_expression "(Bignum_conflict)a->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->x" identifier -> field_identifier)) , identifier , (cast_expression "(Bignum_conflict)a->curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->curve->p" (field_expression "a->curve" identifier -> field_identifier) -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar3);" (call_expression "freebn(pBVar3)" identifier (argument_list "(pBVar3)" ( identifier ))) ;) (expression_statement "freebn((Bignum_conflict)a->z);" (call_expression "freebn((Bignum_conflict)a->z)" identifier (argument_list "((Bignum_conflict)a->z)" ( (cast_expression "(Bignum_conflict)a->z" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->z" identifier -> field_identifier)) ))) ;) (expression_statement "a->z = (Bignum)0x0;" (assignment_expression "a->z = (Bignum)0x0" (field_expression "a->z" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) (expression_statement "freebn((Bignum_conflict)a->x);" (call_expression "freebn((Bignum_conflict)a->x)" identifier (argument_list "((Bignum_conflict)a->x)" ( (cast_expression "(Bignum_conflict)a->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "a->x" identifier -> field_identifier)) ))) ;) (expression_statement "a->x = pBVar4;" (assignment_expression "a->x = pBVar4" (field_expression "a->x" identifier -> field_identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "bool __regparm3 FUN_0002ee40(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  \n  piVar1 = (int *)*param_1;\n  iVar3 = *piVar1;\n  if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\n" (function_definition "bool __regparm3 FUN_0002ee40(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  \n  piVar1 = (int *)*param_1;\n  iVar3 = *piVar1;\n  if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }\n  return false;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0002ee40(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  \n  piVar1 = (int *)*param_1;\n  iVar3 = *piVar1;\n  if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }\n  return false;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar3 = *piVar1;" (assignment_expression "iVar3 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (if_statement "if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }" { (if_statement "if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }" if (parenthesized_expression "((param_1[1] != 0) && (param_1[2] != 0))" ( (binary_expression "(param_1[1] != 0) && (param_1[2] != 0)" (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }" { (expression_statement "iVar3 = param_1[3];" (assignment_expression "iVar3 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == 0) {\n        return true;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) (expression_statement "uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);" (assignment_expression "uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4])" identifier = (call_expression "FUN_00026d50(iVar3,iVar3,piVar1[4])" identifier (argument_list "(iVar3,iVar3,piVar1[4])" ( identifier , identifier , (subscript_expression "piVar1[4]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(uVar2,*(undefined4 *)(*param_1 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }" { (expression_statement "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" ( identifier , (subscript_expression "param_1[3]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(uVar2);" (call_expression "FUN_00026200(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(uVar5,*(undefined4 *)(*param_1 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(uVar5);" (call_expression "FUN_00026200(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (if_statement "if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_00026200(iVar4);\n          return false;\n        }" { (expression_statement "FUN_00026200(iVar4);" (call_expression "FUN_00026200(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "FUN_00026200(param_1[1]);" (call_expression "FUN_00026200(param_1[1])" identifier (argument_list "(param_1[1])" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[1] = iVar4;" (assignment_expression "param_1[1] = iVar4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00026200(param_1[2]);" (call_expression "FUN_00026200(param_1[2])" identifier (argument_list "(param_1[2])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[2] = iVar6;" (assignment_expression "param_1[2] = iVar6" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00026200(param_1[3]);" (call_expression "FUN_00026200(param_1[3])" identifier (argument_list "(param_1[3])" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "FUN_00026200(uVar2);" (call_expression "FUN_00026200(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) })) }) (else_clause "else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" else (compound_statement "{\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" { (if_statement "if (iVar3 != 1) {\n      return iVar3 == 2;\n    }" if (parenthesized_expression "(iVar3 != 1)" ( (binary_expression "iVar3 != 1" identifier != number_literal) )) (compound_statement "{\n      return iVar3 == 2;\n    }" { (return_statement "return iVar3 == 2;" return (binary_expression "iVar3 == 2" identifier == number_literal) ;) })) (if_statement "if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }" if (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }" { (if_statement "if (param_1[3] == 0) {\n        return true;\n      }" if (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) (expression_statement "iVar3 = FUN_00028da0(param_1[3],piVar1[4]);" (assignment_expression "iVar3 = FUN_00028da0(param_1[3],piVar1[4])" identifier = (call_expression "FUN_00028da0(param_1[3],piVar1[4])" identifier (argument_list "(param_1[3],piVar1[4])" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , (subscript_expression "piVar1[4]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }" { (expression_statement "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier = (call_expression "FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" identifier (argument_list "(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" * (cast_expression "(undefined4 *)(*param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "FUN_00026200(param_1[3]);" (call_expression "FUN_00026200(param_1[3])" identifier (argument_list "(param_1[3])" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00026200(param_1[1]);" (call_expression "FUN_00026200(param_1[1])" identifier (argument_list "(param_1[1])" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1[1] = iVar4;" (assignment_expression "param_1[1] = iVar4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return true;" return true ;) })) })) }))) (return_statement "return false;" return false ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return BOOL ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return (binary_expression IDENT == LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return BOOL ;) })) })) }))) (return_statement return BOOL ;) })))
(function_definition "bool __regparm3 FUN_0002ee40(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  \n  piVar1 = (int *)*param_1;\n  iVar3 = *piVar1;\n  if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }\n  return false;\n}" (primitive_type "bool") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0002ee40(int *param_1)" (identifier "FUN_0002ee40") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  \n  piVar1 = (int *)*param_1;\n  iVar3 = *piVar1;\n  if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }\n  return false;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" (identifier "piVar1") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "iVar3 = *piVar1;" (assignment_expression "iVar3 = *piVar1" (identifier "iVar3") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (if_statement "if (iVar3 == 0) {\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }\n  else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }\n  }" ({ "{") (if_statement "if ((param_1[1] != 0) && (param_1[2] != 0)) {\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }" (if "if") (parenthesized_expression "((param_1[1] != 0) && (param_1[2] != 0))" (( "(") (binary_expression "(param_1[1] != 0) && (param_1[2] != 0)" (parenthesized_expression "(param_1[1] != 0)" (( "(") (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      iVar3 = param_1[3];\n      if (iVar3 == 0) {\n        return true;\n      }\n      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);\n      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }\n      FUN_00026200(uVar2);\n    }" ({ "{") (expression_statement "iVar3 = param_1[3];" (assignment_expression "iVar3 = param_1[3]" (identifier "iVar3") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (iVar3 == 0) {\n        return true;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return true;\n      }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);" (assignment_expression "uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4])" (identifier "uVar2") (= "=") (call_expression "FUN_00026d50(iVar3,iVar3,piVar1[4])" (identifier "FUN_00026d50") (argument_list "(iVar3,iVar3,piVar1[4])" (( "(") (identifier "iVar3") (, ",") (identifier "iVar3") (, ",") (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")) () ")")))) (; ";")) (expression_statement "iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10))" (identifier "iVar3") (= "=") (call_expression "FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10))" (identifier "FUN_00028da0") (argument_list "(uVar2,*(undefined4 *)(*param_1 + 0x10))" (( "(") (identifier "uVar2") (, ",") (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar2);\n        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(uVar5);\n        if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }\n        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        FUN_00026200(param_1[2]);\n        param_1[2] = iVar6;\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        return true;\n      }" ({ "{") (expression_statement "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" (identifier "iVar4") (= "=") (call_expression "FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" (identifier "FUN_00026d50") (argument_list "(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "iVar3") (, ",") (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" (identifier "FUN_00026200") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" (identifier "uVar5") (= "=") (call_expression "FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" (identifier "FUN_00026d50") (argument_list "(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10))" (( "(") (identifier "uVar2") (, ",") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00026200(uVar2);" (call_expression "FUN_00026200(uVar2)" (identifier "FUN_00026200") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10))" (identifier "iVar3") (= "=") (call_expression "FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10))" (identifier "FUN_00028da0") (argument_list "(uVar5,*(undefined4 *)(*param_1 + 0x10))" (( "(") (identifier "uVar5") (, ",") (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00026200(uVar5);" (call_expression "FUN_00026200(uVar5)" (identifier "FUN_00026200") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (if_statement "if (iVar3 == 0) {\n          FUN_00026200(iVar4);\n          return false;\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00026200(iVar4);\n          return false;\n        }" ({ "{") (expression_statement "FUN_00026200(iVar4);" (call_expression "FUN_00026200(iVar4)" (identifier "FUN_00026200") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" (identifier "iVar6") (= "=") (call_expression "FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" (identifier "FUN_00026d50") (argument_list "(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10))" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "iVar3") (, ",") (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" (identifier "FUN_00026200") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "FUN_00026200(param_1[1]);" (call_expression "FUN_00026200(param_1[1])" (identifier "FUN_00026200") (argument_list "(param_1[1])" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "param_1[1] = iVar4;" (assignment_expression "param_1[1] = iVar4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "FUN_00026200(param_1[2]);" (call_expression "FUN_00026200(param_1[2])" (identifier "FUN_00026200") (argument_list "(param_1[2])" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "param_1[2] = iVar6;" (assignment_expression "param_1[2] = iVar6" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "FUN_00026200(param_1[3]);" (call_expression "FUN_00026200(param_1[3])" (identifier "FUN_00026200") (argument_list "(param_1[3])" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "FUN_00026200(uVar2);" (call_expression "FUN_00026200(uVar2)" (identifier "FUN_00026200") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" (else "else") (compound_statement "{\n    if (iVar3 != 1) {\n      return iVar3 == 2;\n    }\n    if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }\n  }" ({ "{") (if_statement "if (iVar3 != 1) {\n      return iVar3 == 2;\n    }" (if "if") (parenthesized_expression "(iVar3 != 1)" (( "(") (binary_expression "iVar3 != 1" (identifier "iVar3") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      return iVar3 == 2;\n    }" ({ "{") (return_statement "return iVar3 == 2;" (return "return") (binary_expression "iVar3 == 2" (identifier "iVar3") (== "==") (number_literal "2")) (; ";")) (} "}"))) (if_statement "if (param_1[1] != 0) {\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }" (if "if") (parenthesized_expression "(param_1[1] != 0)" (( "(") (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_1[3] == 0) {\n        return true;\n      }\n      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);\n      if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }\n    }" ({ "{") (if_statement "if (param_1[3] == 0) {\n        return true;\n      }" (if "if") (parenthesized_expression "(param_1[3] == 0)" (( "(") (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return true;\n      }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_00028da0(param_1[3],piVar1[4]);" (assignment_expression "iVar3 = FUN_00028da0(param_1[3],piVar1[4])" (identifier "iVar3") (= "=") (call_expression "FUN_00028da0(param_1[3],piVar1[4])" (identifier "FUN_00028da0") (argument_list "(param_1[3],piVar1[4])" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));\n        FUN_00026200(iVar3);\n        FUN_00026200(param_1[3]);\n        param_1[3] = 0;\n        FUN_00026200(param_1[1]);\n        param_1[1] = iVar4;\n        return true;\n      }" ({ "{") (expression_statement "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));" (assignment_expression "iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" (identifier "iVar4") (= "=") (call_expression "FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" (identifier "FUN_00026d50") (argument_list "(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10))" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "iVar3") (, ",") (pointer_expression "*(undefined4 *)(*param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00026200(iVar3);" (call_expression "FUN_00026200(iVar3)" (identifier "FUN_00026200") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "FUN_00026200(param_1[3]);" (call_expression "FUN_00026200(param_1[3])" (identifier "FUN_00026200") (argument_list "(param_1[3])" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00026200(param_1[1]);" (call_expression "FUN_00026200(param_1[1])" (identifier "FUN_00026200") (argument_list "(param_1[1])" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "param_1[1] = iVar4;" (assignment_expression "param_1[1] = iVar4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (} "}"))) (} "}")))) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int __regparm3 function_1(type_1 *a)

{
  type_2 *peVar1;
  type_3 var_1;
  type_4 var_3;
  type_4 var_6;
  type_4 b;
  
  peVar1 = a->curve;
  var_1 = peVar1->type;
  if (var_1 == var_2) {
    if ((a->x != (type_5)0x0) && (a->y != (type_5)0x0)) {
      var_3 = (type_4)a->z;
      if (var_3 == (type_4)0x0) {
        return 1;
      }
      var_3 = var_4(var_3,var_3,(type_4)peVar1->p);
      var_6 = var_5(var_3,(type_4)a->curve->p);
      if (var_6 != (type_4)0x0) {
        b = var_4((type_4)a->x,var_6,(type_4)a->curve->p);
        var_7(var_6);
        var_6 = var_4(var_3,(type_4)a->z,(type_4)a->curve->p);
        var_7(var_3);
        var_3 = var_5(var_6,(type_4)a->curve->p);
        var_7(var_6);
        if (var_3 == (type_4)0x0) {
          var_7(b);
          return 0;
        }
        var_6 = var_4((type_4)a->y,var_3,(type_4)a->curve->p);
        var_7(var_3);
        var_7((type_4)a->x);
        a->x = b;
        var_7((type_4)a->y);
        a->y = var_6;
        var_7((type_4)a->z);
        a->z = (type_5)0x0;
        return 1;
      }
      var_7(var_3);
    }
  }
  else {
    if (var_1 != var_8) {
      return (uint)(var_1 == var_9);
    }
    if (a->x != (type_5)0x0) {
      if ((type_4)a->z == (type_4)0x0) {
        return 1;
      }
      var_3 = var_5((type_4)a->z,(type_4)peVar1->p);
      if (var_3 != (type_4)0x0) {
        var_6 = var_4((type_4)a->x,var_3,(type_4)a->curve->p);
        var_7(var_3);
        var_7((type_4)a->z);
        a->z = (type_5)0x0;
        var_7((type_4)a->x);
        a->x = var_6;
        return 1;
      }
    }
  }
  return 0;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (true)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (false)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement (true)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement (true)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement (true))))))))) (return_statement (false)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bool __regparm3 MASKED(int *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  
  piVar1 = (int *)*param_1;
  iVar3 = *piVar1;
  if (iVar3 == 0) {
    if ((param_1[1] != 0) && (param_1[2] != 0)) {
      iVar3 = param_1[3];
      if (iVar3 == 0) {
        return true;
      }
      uVar2 = FUN_00026d50(iVar3,iVar3,piVar1[4]);
      iVar3 = FUN_00028da0(uVar2,*(undefined4 *)(*param_1 + 0x10));
      if (iVar3 != 0) {
        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(iVar3);
        uVar5 = FUN_00026d50(uVar2,param_1[3],*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(uVar2);
        iVar3 = FUN_00028da0(uVar5,*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(uVar5);
        if (iVar3 == 0) {
          FUN_00026200(iVar4);
          return false;
        }
        iVar6 = FUN_00026d50(param_1[2],iVar3,*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(iVar3);
        FUN_00026200(param_1[1]);
        param_1[1] = iVar4;
        FUN_00026200(param_1[2]);
        param_1[2] = iVar6;
        FUN_00026200(param_1[3]);
        param_1[3] = 0;
        return true;
      }
      FUN_00026200(uVar2);
    }
  }
  else {
    if (iVar3 != 1) {
      return iVar3 == 2;
    }
    if (param_1[1] != 0) {
      if (param_1[3] == 0) {
        return true;
      }
      iVar3 = FUN_00028da0(param_1[3],piVar1[4]);
      if (iVar3 != 0) {
        iVar4 = FUN_00026d50(param_1[1],iVar3,*(undefined4 *)(*param_1 + 0x10));
        FUN_00026200(iVar3);
        FUN_00026200(param_1[3]);
        param_1[3] = 0;
        FUN_00026200(param_1[1]);
        param_1[1] = iVar4;
        return true;
      }
    }
  }
  return false;
}

