
/* WARNING: Unknown calling convention */

int ecc_test(void)

{
  undefined *puVar1;
  int iVar2;
  ecc_point *p;
  ecc_point *p_00;
  undefined8 *puVar3;
  long in_FS_OFFSET;
  int primality;
  void *modulus;
  void *order;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  iVar2 = ltc_init_multi(&modulus,&order,0);
  if (iVar2 == 0) {
    p = ltc_ecc_new_point();
    p_00 = ltc_ecc_new_point();
    puVar1 = PTR_ltc_mp_001ddec0;
    if ((p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0)) {
      iVar2 = 0xd;
      ltc_deinit_multi(modulus,order,0);
      ltc_ecc_del_point(p);
      ltc_ecc_del_point(p_00);
    }
    else {
      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;
      if (iVar2 != 0) {
        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);
        do {
          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);
          if (iVar2 != 0) break;
          if (primality == 0) {
LAB_0017e3a0:
            iVar2 = 5;
            break;
          }
          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);
          if (iVar2 != 0) break;
          if (primality == 0) goto LAB_0017e3a0;
          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);
          if (iVar2 != 0) break;
          (**(code **)(puVar1 + 0x38))(p->z,1);
          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);
          if (iVar2 != 0) goto LAB_0017e3a0;
          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);
          if (iVar2 != 0) goto LAB_0017e3a0;
          iVar2 = *(int *)(puVar3 + 5);
          puVar3 = puVar3 + 7;
        } while (iVar2 != 0);
      }
      ltc_ecc_del_point(p_00);
      ltc_ecc_del_point(p);
      ltc_deinit_multi(order,modulus,0);
    }
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return iVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



int ecc_test(void)

{
  undefined *puVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  long in_FS_OFFSET;
  int local_54;
  undefined8 local_50;
  undefined8 local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  iVar2 = ltc_init_multi(&local_50,&local_48,0);
  if (iVar2 == 0) {
    puVar3 = (undefined8 *)ltc_ecc_new_point();
    puVar4 = (undefined8 *)ltc_ecc_new_point();
    puVar1 = PTR_ltc_mp_001ddec0;
    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {
      iVar2 = 0xd;
      ltc_deinit_multi(local_50,local_48,0);
      ltc_ecc_del_point(puVar3);
      ltc_ecc_del_point(puVar4);
    }
    else {
      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;
      if (iVar2 != 0) {
        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);
        do {
          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);
          if (iVar2 != 0) break;
          if (local_54 == 0) {
LAB_0017e3a0:
            iVar2 = 5;
            break;
          }
          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);
          if (iVar2 != 0) break;
          if (local_54 == 0) goto LAB_0017e3a0;
          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);
          if (iVar2 != 0) break;
          (**(code **)(puVar1 + 0x38))(puVar3[2],1);
          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);
          if (iVar2 != 0) goto LAB_0017e3a0;
          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);
          if (iVar2 != 0) goto LAB_0017e3a0;
          iVar2 = *(int *)(puVar5 + 5);
          puVar5 = puVar5 + 7;
        } while (iVar2 != 0);
      }
      ltc_ecc_del_point(puVar4);
      ltc_ecc_del_point(puVar3);
      ltc_deinit_multi(local_48,local_50,0);
    }
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return iVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
XOR EDX,EDX
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x18],RAX
XOR EAX,EAX
LEA RSI,[RSP + 0x10]
LEA RDI,[RSP + 0x8]
CALL 0x001135b0
MOV EBX,EAX
TEST EAX,EAX
JZ 0x0017e1f0
MOV RCX,qword ptr [RSP + 0x18]
XOR RCX,qword ptr FS:[0x28]
MOV EAX,EBX
JNZ 0x0017e3dd
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x00114dd0
MOV R13,RAX
CALL 0x00114dd0
MOV R14,RAX
TEST R13,R13
JZ 0x0017e3b0
TEST RAX,RAX
JZ 0x0017e3b0
MOV RAX,qword ptr [0x001ddeb8]
MOV EBX,dword ptr [RAX]
TEST EBX,EBX
JZ 0x0017e370
MOV RBP,qword ptr [0x001ddec0]
LEA R12,[RAX + 0x10]
LEA R15,[RSP + 0x4]
MOV EDX,0x10
MOV RSI,qword ptr [R12]
MOV RDI,qword ptr [RSP + 0x8]
CALL qword ptr [RBP + 0x80]
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0017e370
MOV RSI,qword ptr [R12 + 0x10]
MOV EDX,0x10
MOV RDI,qword ptr [RSP + 0x10]
CALL qword ptr [RBP + 0x80]
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0017e370
MOV RDX,R15
MOV ESI,0x8
MOV RDI,qword ptr [RSP + 0x8]
CALL qword ptr [RBP + 0x148]
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0017e370
MOV EDX,dword ptr [RSP + 0x4]
TEST EDX,EDX
JZ 0x0017e3a0
MOV RDX,R15
MOV ESI,0x8
MOV RDI,qword ptr [RSP + 0x10]
CALL qword ptr [RBP + 0x148]
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0017e370
MOV ECX,dword ptr [RSP + 0x4]
TEST ECX,ECX
JZ 0x0017e3a0
MOV RSI,qword ptr [R12 + 0x18]
MOV EDX,0x10
MOV RDI,qword ptr [R13]
CALL qword ptr [RBP + 0x80]
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0017e370
MOV RSI,qword ptr [R12 + 0x20]
MOV RDI,qword ptr [R13 + 0x8]
MOV EDX,0x10
CALL qword ptr [RBP + 0x80]
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0017e370
MOV RDI,qword ptr [R13 + 0x10]
MOV ESI,0x1
CALL qword ptr [RBP + 0x38]
MOV RDI,qword ptr [RSP + 0x10]
MOV ESI,0x1
MOV RDX,RDI
CALL qword ptr [RBP + 0xb0]
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0017e370
MOV RCX,qword ptr [RSP + 0x8]
MOV RDX,R14
MOV RSI,R13
MOV RDI,qword ptr [RSP + 0x10]
MOV R8D,0x1
CALL qword ptr [RBP + 0x150]
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0017e370
MOV RSI,qword ptr [R14]
MOV RDI,qword ptr [R13]
CALL qword ptr [RBP + 0x58]
TEST EAX,EAX
JNZ 0x0017e3a0
MOV RSI,qword ptr [R14 + 0x8]
MOV RDI,qword ptr [R13 + 0x8]
CALL qword ptr [RBP + 0x58]
TEST EAX,EAX
JNZ 0x0017e3a0
ADD R12,0x38
MOV EBX,dword ptr [R12 + -0x10]
TEST EBX,EBX
JNZ 0x0017e233
NOP
MOV RDI,R14
CALL 0x00113060
MOV RDI,R13
CALL 0x00113060
MOV RSI,qword ptr [RSP + 0x8]
XOR EDX,EDX
XOR EAX,EAX
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x00113330
JMP 0x0017e1c5
MOV EBX,0x5
JMP 0x0017e370
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RSP + 0x8]
XOR EDX,EDX
XOR EAX,EAX
MOV EBX,0xd
CALL 0x00113330
MOV RDI,R13
CALL 0x00113060
MOV RDI,R14
CALL 0x00113060
JMP 0x0017e1c5
CALL 0x00113880
(translation_unit "int ecc_test(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined8 *puVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  long in_FS_OFFSET;\n  int local_54;\n  undefined8 local_50;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&local_50,&local_48,0);\n  if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "int ecc_test(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined8 *puVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  long in_FS_OFFSET;\n  int local_54;\n  undefined8 local_50;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&local_50,&local_48,0);\n  if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "ecc_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined8 *puVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  long in_FS_OFFSET;\n  int local_54;\n  undefined8 local_50;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&local_50,&local_48,0);\n  if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = ltc_init_multi(&local_50,&local_48,0);" (assignment_expression "iVar2 = ltc_init_multi(&local_50,&local_48,0)" identifier = (call_expression "ltc_init_multi(&local_50,&local_48,0)" identifier (argument_list "(&local_50,&local_48,0)" ( (pointer_expression "&local_50" & identifier) , (pointer_expression "&local_48" & identifier) , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }" { (expression_statement "puVar3 = (undefined8 *)ltc_ecc_new_point();" (assignment_expression "puVar3 = (undefined8 *)ltc_ecc_new_point()" identifier = (cast_expression "(undefined8 *)ltc_ecc_new_point()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ltc_ecc_new_point()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar4 = (undefined8 *)ltc_ecc_new_point();" (assignment_expression "puVar4 = (undefined8 *)ltc_ecc_new_point()" identifier = (cast_expression "(undefined8 *)ltc_ecc_new_point()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ltc_ecc_new_point()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar1 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar1 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (if_statement "if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" if (parenthesized_expression "((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0))" ( (binary_expression "(puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)" (parenthesized_expression "(puVar3 == (undefined8 *)0x0)" ( (binary_expression "puVar3 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar4 == (undefined8 *)0x0)" ( (binary_expression "puVar4 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }" { (expression_statement "iVar2 = 0xd;" (assignment_expression "iVar2 = 0xd" identifier = number_literal) ;) (expression_statement "ltc_deinit_multi(local_50,local_48,0);" (call_expression "ltc_deinit_multi(local_50,local_48,0)" identifier (argument_list "(local_50,local_48,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "ltc_ecc_del_point(puVar3);" (call_expression "ltc_ecc_del_point(puVar3)" identifier (argument_list "(puVar3)" ( identifier ))) ;) (expression_statement "ltc_ecc_del_point(puVar4);" (call_expression "ltc_ecc_del_point(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;) }) (else_clause "else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" else (compound_statement "{\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" { (expression_statement "iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;" (assignment_expression "iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8" identifier = (pointer_expression "*(int *)PTR_ltc_ecc_sets_001ddeb8" * (cast_expression "(int *)PTR_ltc_ecc_sets_001ddeb8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }" { (expression_statement "puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);" (assignment_expression "puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" identifier = (cast_expression "(undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" ( (binary_expression "PTR_ltc_ecc_sets_001ddeb8 + 0x10" identifier + number_literal) )))) ;) (do_statement "do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);" do (compound_statement "{\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        }" { (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(local_50,*puVar5,0x10)" ( identifier , (pointer_expression "*puVar5" * identifier) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(local_48,puVar5[2],0x10)" ( identifier , (subscript_expression "puVar5[2]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54)" identifier = (call_expression "(**(code **)(puVar1 + 0x148))(local_50,8,&local_54)" (parenthesized_expression "(**(code **)(puVar1 + 0x148))" ( (pointer_expression "**(code **)(puVar1 + 0x148)" * (pointer_expression "*(code **)(puVar1 + 0x148)" * (cast_expression "(code **)(puVar1 + 0x148)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x148)" ( (binary_expression "puVar1 + 0x148" identifier + number_literal) ))))) )) (argument_list "(local_50,8,&local_54)" ( identifier , number_literal , (pointer_expression "&local_54" & identifier) )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }" if (parenthesized_expression "(local_54 == 0)" ( (binary_expression "local_54 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }" { (labeled_statement "LAB_0017e3a0:\n            iVar2 = 5;" statement_identifier : (expression_statement "iVar2 = 5;" (assignment_expression "iVar2 = 5" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54)" identifier = (call_expression "(**(code **)(puVar1 + 0x148))(local_48,8,&local_54)" (parenthesized_expression "(**(code **)(puVar1 + 0x148))" ( (pointer_expression "**(code **)(puVar1 + 0x148)" * (pointer_expression "*(code **)(puVar1 + 0x148)" * (cast_expression "(code **)(puVar1 + 0x148)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x148)" ( (binary_expression "puVar1 + 0x148" identifier + number_literal) ))))) )) (argument_list "(local_48,8,&local_54)" ( identifier , number_literal , (pointer_expression "&local_54" & identifier) )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_54 == 0) goto LAB_0017e3a0;" if (parenthesized_expression "(local_54 == 0)" ( (binary_expression "local_54 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(*puVar3,puVar5[3],0x10)" ( (pointer_expression "*puVar3" * identifier) , (subscript_expression "puVar5[3]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(puVar3[1],puVar5[4],0x10)" ( (subscript_expression "puVar3[1]" identifier [ number_literal ]) , (subscript_expression "puVar5[4]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "(**(code **)(puVar1 + 0x38))(puVar3[2],1);" (call_expression "(**(code **)(puVar1 + 0x38))(puVar3[2],1)" (parenthesized_expression "(**(code **)(puVar1 + 0x38))" ( (pointer_expression "**(code **)(puVar1 + 0x38)" * (pointer_expression "*(code **)(puVar1 + 0x38)" * (cast_expression "(code **)(puVar1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x38)" ( (binary_expression "puVar1 + 0x38" identifier + number_literal) ))))) )) (argument_list "(puVar3[2],1)" ( (subscript_expression "puVar3[2]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48)" identifier = (call_expression "(**(code **)(puVar1 + 0xb0))(local_48,1,local_48)" (parenthesized_expression "(**(code **)(puVar1 + 0xb0))" ( (pointer_expression "**(code **)(puVar1 + 0xb0)" * (pointer_expression "*(code **)(puVar1 + 0xb0)" * (cast_expression "(code **)(puVar1 + 0xb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0xb0)" ( (binary_expression "puVar1 + 0xb0" identifier + number_literal) ))))) )) (argument_list "(local_48,1,local_48)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1)" identifier = (call_expression "(**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1)" (parenthesized_expression "(**(code **)(puVar1 + 0x150))" ( (pointer_expression "**(code **)(puVar1 + 0x150)" * (pointer_expression "*(code **)(puVar1 + 0x150)" * (cast_expression "(code **)(puVar1 + 0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x150)" ( (binary_expression "puVar1 + 0x150" identifier + number_literal) ))))) )) (argument_list "(local_48,puVar3,puVar4,local_50,1)" ( identifier , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4)" identifier = (call_expression "(**(code **)(puVar1 + 0x58))(*puVar3,*puVar4)" (parenthesized_expression "(**(code **)(puVar1 + 0x58))" ( (pointer_expression "**(code **)(puVar1 + 0x58)" * (pointer_expression "*(code **)(puVar1 + 0x58)" * (cast_expression "(code **)(puVar1 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x58)" ( (binary_expression "puVar1 + 0x58" identifier + number_literal) ))))) )) (argument_list "(*puVar3,*puVar4)" ( (pointer_expression "*puVar3" * identifier) , (pointer_expression "*puVar4" * identifier) )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0017e3a0;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1])" identifier = (call_expression "(**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1])" (parenthesized_expression "(**(code **)(puVar1 + 0x58))" ( (pointer_expression "**(code **)(puVar1 + 0x58)" * (pointer_expression "*(code **)(puVar1 + 0x58)" * (cast_expression "(code **)(puVar1 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x58)" ( (binary_expression "puVar1 + 0x58" identifier + number_literal) ))))) )) (argument_list "(puVar3[1],puVar4[1])" ( (subscript_expression "puVar3[1]" identifier [ number_literal ]) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0017e3a0;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = *(int *)(puVar5 + 5);" (assignment_expression "iVar2 = *(int *)(puVar5 + 5)" identifier = (pointer_expression "*(int *)(puVar5 + 5)" * (cast_expression "(int *)(puVar5 + 5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 5)" ( (binary_expression "puVar5 + 5" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = puVar5 + 7;" (assignment_expression "puVar5 = puVar5 + 7" identifier = (binary_expression "puVar5 + 7" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "ltc_ecc_del_point(puVar4);" (call_expression "ltc_ecc_del_point(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "ltc_ecc_del_point(puVar3);" (call_expression "ltc_ecc_del_point(puVar3)" identifier (argument_list "(puVar3)" ( identifier ))) ;) (expression_statement "ltc_deinit_multi(local_48,local_50,0);" (call_expression "ltc_deinit_multi(local_48,local_50,0)" identifier (argument_list "(local_48,local_50,0)" ( identifier , identifier , number_literal ))) ;) }))) })) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint ecc_test(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  ecc_point *p;\n  ecc_point *p_00;\n  undefined8 *puVar3;\n  long in_FS_OFFSET;\n  int primality;\n  void *modulus;\n  void *order;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&modulus,&order,0);\n  if (iVar2 == 0) {\n    p = ltc_ecc_new_point();\n    p_00 = ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(modulus,order,0);\n      ltc_ecc_del_point(p);\n      ltc_ecc_del_point(p_00);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(p_00);\n      ltc_ecc_del_point(p);\n      ltc_deinit_multi(order,modulus,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment (function_definition "int ecc_test(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  ecc_point *p;\n  ecc_point *p_00;\n  undefined8 *puVar3;\n  long in_FS_OFFSET;\n  int primality;\n  void *modulus;\n  void *order;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&modulus,&order,0);\n  if (iVar2 == 0) {\n    p = ltc_ecc_new_point();\n    p_00 = ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(modulus,order,0);\n      ltc_ecc_del_point(p);\n      ltc_ecc_del_point(p_00);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(p_00);\n      ltc_ecc_del_point(p);\n      ltc_deinit_multi(order,modulus,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "ecc_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  ecc_point *p;\n  ecc_point *p_00;\n  undefined8 *puVar3;\n  long in_FS_OFFSET;\n  int primality;\n  void *modulus;\n  void *order;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&modulus,&order,0);\n  if (iVar2 == 0) {\n    p = ltc_ecc_new_point();\n    p_00 = ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(modulus,order,0);\n      ltc_ecc_del_point(p);\n      ltc_ecc_del_point(p_00);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(p_00);\n      ltc_ecc_del_point(p);\n      ltc_deinit_multi(order,modulus,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ecc_point *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "ecc_point *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int primality;" primitive_type identifier ;) (declaration "void *modulus;" primitive_type (pointer_declarator "*modulus" * identifier) ;) (declaration "void *order;" primitive_type (pointer_declarator "*order" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = ltc_init_multi(&modulus,&order,0);" (assignment_expression "iVar2 = ltc_init_multi(&modulus,&order,0)" identifier = (call_expression "ltc_init_multi(&modulus,&order,0)" identifier (argument_list "(&modulus,&order,0)" ( (pointer_expression "&modulus" & identifier) , (pointer_expression "&order" & identifier) , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    p = ltc_ecc_new_point();\n    p_00 = ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(modulus,order,0);\n      ltc_ecc_del_point(p);\n      ltc_ecc_del_point(p_00);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(p_00);\n      ltc_ecc_del_point(p);\n      ltc_deinit_multi(order,modulus,0);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    p = ltc_ecc_new_point();\n    p_00 = ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(modulus,order,0);\n      ltc_ecc_del_point(p);\n      ltc_ecc_del_point(p_00);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(p_00);\n      ltc_ecc_del_point(p);\n      ltc_deinit_multi(order,modulus,0);\n    }\n  }" { (expression_statement "p = ltc_ecc_new_point();" (assignment_expression "p = ltc_ecc_new_point()" identifier = (call_expression "ltc_ecc_new_point()" identifier (argument_list "()" ( )))) ;) (expression_statement "p_00 = ltc_ecc_new_point();" (assignment_expression "p_00 = ltc_ecc_new_point()" identifier = (call_expression "ltc_ecc_new_point()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar1 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar1 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (if_statement "if ((p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(modulus,order,0);\n      ltc_ecc_del_point(p);\n      ltc_ecc_del_point(p_00);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(p_00);\n      ltc_ecc_del_point(p);\n      ltc_deinit_multi(order,modulus,0);\n    }" if (parenthesized_expression "((p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0))" ( (binary_expression "(p == (ecc_point *)0x0) || (p_00 == (ecc_point *)0x0)" (parenthesized_expression "(p == (ecc_point *)0x0)" ( (binary_expression "p == (ecc_point *)0x0" identifier == (cast_expression "(ecc_point *)0x0" ( (type_descriptor "ecc_point *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_00 == (ecc_point *)0x0)" ( (binary_expression "p_00 == (ecc_point *)0x0" identifier == (cast_expression "(ecc_point *)0x0" ( (type_descriptor "ecc_point *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      iVar2 = 0xd;\n      ltc_deinit_multi(modulus,order,0);\n      ltc_ecc_del_point(p);\n      ltc_ecc_del_point(p_00);\n    }" { (expression_statement "iVar2 = 0xd;" (assignment_expression "iVar2 = 0xd" identifier = number_literal) ;) (expression_statement "ltc_deinit_multi(modulus,order,0);" (call_expression "ltc_deinit_multi(modulus,order,0)" identifier (argument_list "(modulus,order,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "ltc_ecc_del_point(p);" (call_expression "ltc_ecc_del_point(p)" identifier (argument_list "(p)" ( identifier ))) ;) (expression_statement "ltc_ecc_del_point(p_00);" (call_expression "ltc_ecc_del_point(p_00)" identifier (argument_list "(p_00)" ( identifier ))) ;) }) (else_clause "else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(p_00);\n      ltc_ecc_del_point(p);\n      ltc_deinit_multi(order,modulus,0);\n    }" else (compound_statement "{\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(p_00);\n      ltc_ecc_del_point(p);\n      ltc_deinit_multi(order,modulus,0);\n    }" { (expression_statement "iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;" (assignment_expression "iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8" identifier = (pointer_expression "*(int *)PTR_ltc_ecc_sets_001ddeb8" * (cast_expression "(int *)PTR_ltc_ecc_sets_001ddeb8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar2 != 0) {\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);\n      }" { (expression_statement "puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);" (assignment_expression "puVar3 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" identifier = (cast_expression "(undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" ( (binary_expression "PTR_ltc_ecc_sets_001ddeb8 + 0x10" identifier + number_literal) )))) ;) (do_statement "do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        } while (iVar2 != 0);" do (compound_statement "{\n          iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);\n          if (iVar2 != 0) break;\n          if (primality == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(p->z,1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar3 + 5);\n          puVar3 = puVar3 + 7;\n        }" { (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(modulus,*puVar3,0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(modulus,*puVar3,0x10)" ( identifier , (pointer_expression "*puVar3" * identifier) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(order,puVar3[2],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(order,puVar3[2],0x10)" ( identifier , (subscript_expression "puVar3[2]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x148))(modulus,8,&primality)" identifier = (call_expression "(**(code **)(puVar1 + 0x148))(modulus,8,&primality)" (parenthesized_expression "(**(code **)(puVar1 + 0x148))" ( (pointer_expression "**(code **)(puVar1 + 0x148)" * (pointer_expression "*(code **)(puVar1 + 0x148)" * (cast_expression "(code **)(puVar1 + 0x148)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x148)" ( (binary_expression "puVar1 + 0x148" identifier + number_literal) ))))) )) (argument_list "(modulus,8,&primality)" ( identifier , number_literal , (pointer_expression "&primality" & identifier) )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (primality == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }" if (parenthesized_expression "(primality == 0)" ( (binary_expression "primality == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }" { (labeled_statement "LAB_0017e3a0:\n            iVar2 = 5;" statement_identifier : (expression_statement "iVar2 = 5;" (assignment_expression "iVar2 = 5" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x148))(order,8,&primality)" identifier = (call_expression "(**(code **)(puVar1 + 0x148))(order,8,&primality)" (parenthesized_expression "(**(code **)(puVar1 + 0x148))" ( (pointer_expression "**(code **)(puVar1 + 0x148)" * (pointer_expression "*(code **)(puVar1 + 0x148)" * (cast_expression "(code **)(puVar1 + 0x148)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x148)" ( (binary_expression "puVar1 + 0x148" identifier + number_literal) ))))) )) (argument_list "(order,8,&primality)" ( identifier , number_literal , (pointer_expression "&primality" & identifier) )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (primality == 0) goto LAB_0017e3a0;" if (parenthesized_expression "(primality == 0)" ( (binary_expression "primality == 0" identifier == number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(p->x,puVar3[3],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(p->x,puVar3[3],0x10)" ( (field_expression "p->x" identifier -> field_identifier) , (subscript_expression "puVar3[3]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(p->y,puVar3[4],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(p->y,puVar3[4],0x10)" ( (field_expression "p->y" identifier -> field_identifier) , (subscript_expression "puVar3[4]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "(**(code **)(puVar1 + 0x38))(p->z,1);" (call_expression "(**(code **)(puVar1 + 0x38))(p->z,1)" (parenthesized_expression "(**(code **)(puVar1 + 0x38))" ( (pointer_expression "**(code **)(puVar1 + 0x38)" * (pointer_expression "*(code **)(puVar1 + 0x38)" * (cast_expression "(code **)(puVar1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x38)" ( (binary_expression "puVar1 + 0x38" identifier + number_literal) ))))) )) (argument_list "(p->z,1)" ( (field_expression "p->z" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0xb0))(order,1,order)" identifier = (call_expression "(**(code **)(puVar1 + 0xb0))(order,1,order)" (parenthesized_expression "(**(code **)(puVar1 + 0xb0))" ( (pointer_expression "**(code **)(puVar1 + 0xb0)" * (pointer_expression "*(code **)(puVar1 + 0xb0)" * (cast_expression "(code **)(puVar1 + 0xb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0xb0)" ( (binary_expression "puVar1 + 0xb0" identifier + number_literal) ))))) )) (argument_list "(order,1,order)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1)" identifier = (call_expression "(**(code **)(puVar1 + 0x150))(order,p,p_00,modulus,1)" (parenthesized_expression "(**(code **)(puVar1 + 0x150))" ( (pointer_expression "**(code **)(puVar1 + 0x150)" * (pointer_expression "*(code **)(puVar1 + 0x150)" * (cast_expression "(code **)(puVar1 + 0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x150)" ( (binary_expression "puVar1 + 0x150" identifier + number_literal) ))))) )) (argument_list "(order,p,p_00,modulus,1)" ( identifier , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x58))(p->x,p_00->x)" identifier = (call_expression "(**(code **)(puVar1 + 0x58))(p->x,p_00->x)" (parenthesized_expression "(**(code **)(puVar1 + 0x58))" ( (pointer_expression "**(code **)(puVar1 + 0x58)" * (pointer_expression "*(code **)(puVar1 + 0x58)" * (cast_expression "(code **)(puVar1 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x58)" ( (binary_expression "puVar1 + 0x58" identifier + number_literal) ))))) )) (argument_list "(p->x,p_00->x)" ( (field_expression "p->x" identifier -> field_identifier) , (field_expression "p_00->x" identifier -> field_identifier) )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0017e3a0;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x58))(p->y,p_00->y)" identifier = (call_expression "(**(code **)(puVar1 + 0x58))(p->y,p_00->y)" (parenthesized_expression "(**(code **)(puVar1 + 0x58))" ( (pointer_expression "**(code **)(puVar1 + 0x58)" * (pointer_expression "*(code **)(puVar1 + 0x58)" * (cast_expression "(code **)(puVar1 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x58)" ( (binary_expression "puVar1 + 0x58" identifier + number_literal) ))))) )) (argument_list "(p->y,p_00->y)" ( (field_expression "p->y" identifier -> field_identifier) , (field_expression "p_00->y" identifier -> field_identifier) )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0017e3a0;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = *(int *)(puVar3 + 5);" (assignment_expression "iVar2 = *(int *)(puVar3 + 5)" identifier = (pointer_expression "*(int *)(puVar3 + 5)" * (cast_expression "(int *)(puVar3 + 5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 5)" ( (binary_expression "puVar3 + 5" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = puVar3 + 7;" (assignment_expression "puVar3 = puVar3 + 7" identifier = (binary_expression "puVar3 + 7" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "ltc_ecc_del_point(p_00);" (call_expression "ltc_ecc_del_point(p_00)" identifier (argument_list "(p_00)" ( identifier ))) ;) (expression_statement "ltc_ecc_del_point(p);" (call_expression "ltc_ecc_del_point(p)" identifier (argument_list "(p)" ( identifier ))) ;) (expression_statement "ltc_deinit_multi(order,modulus,0);" (call_expression "ltc_deinit_multi(order,modulus,0)" identifier (argument_list "(order,modulus,0)" ( identifier , identifier , number_literal ))) ;) }))) })) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int ecc_test(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined8 *puVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  long in_FS_OFFSET;\n  int local_54;\n  undefined8 local_50;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&local_50,&local_48,0);\n  if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "int ecc_test(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined8 *puVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  long in_FS_OFFSET;\n  int local_54;\n  undefined8 local_50;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&local_50,&local_48,0);\n  if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    \n  __stack_chk_fail();\n}" primitive_type (function_declarator "ecc_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined8 *puVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  long in_FS_OFFSET;\n  int local_54;\n  undefined8 local_50;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&local_50,&local_48,0);\n  if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = ltc_init_multi(&local_50,&local_48,0);" (assignment_expression "iVar2 = ltc_init_multi(&local_50,&local_48,0)" identifier = (call_expression "ltc_init_multi(&local_50,&local_48,0)" identifier (argument_list "(&local_50,&local_48,0)" ( (pointer_expression "&local_50" & identifier) , (pointer_expression "&local_48" & identifier) , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }" { (expression_statement "puVar3 = (undefined8 *)ltc_ecc_new_point();" (assignment_expression "puVar3 = (undefined8 *)ltc_ecc_new_point()" identifier = (cast_expression "(undefined8 *)ltc_ecc_new_point()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ltc_ecc_new_point()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar4 = (undefined8 *)ltc_ecc_new_point();" (assignment_expression "puVar4 = (undefined8 *)ltc_ecc_new_point()" identifier = (cast_expression "(undefined8 *)ltc_ecc_new_point()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ltc_ecc_new_point()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar1 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar1 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (if_statement "if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" if (parenthesized_expression "((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0))" ( (binary_expression "(puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)" (parenthesized_expression "(puVar3 == (undefined8 *)0x0)" ( (binary_expression "puVar3 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar4 == (undefined8 *)0x0)" ( (binary_expression "puVar4 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }" { (expression_statement "iVar2 = 0xd;" (assignment_expression "iVar2 = 0xd" identifier = number_literal) ;) (expression_statement "ltc_deinit_multi(local_50,local_48,0);" (call_expression "ltc_deinit_multi(local_50,local_48,0)" identifier (argument_list "(local_50,local_48,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "ltc_ecc_del_point(puVar3);" (call_expression "ltc_ecc_del_point(puVar3)" identifier (argument_list "(puVar3)" ( identifier ))) ;) (expression_statement "ltc_ecc_del_point(puVar4);" (call_expression "ltc_ecc_del_point(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;) }) (else_clause "else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" else (compound_statement "{\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" { (expression_statement "iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;" (assignment_expression "iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8" identifier = (pointer_expression "*(int *)PTR_ltc_ecc_sets_001ddeb8" * (cast_expression "(int *)PTR_ltc_ecc_sets_001ddeb8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }" { (expression_statement "puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);" (assignment_expression "puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" identifier = (cast_expression "(undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" ( (binary_expression "PTR_ltc_ecc_sets_001ddeb8 + 0x10" identifier + number_literal) )))) ;) (do_statement "do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);" do (compound_statement "{\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        }" { (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(local_50,*puVar5,0x10)" ( identifier , (pointer_expression "*puVar5" * identifier) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(local_48,puVar5[2],0x10)" ( identifier , (subscript_expression "puVar5[2]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54)" identifier = (call_expression "(**(code **)(puVar1 + 0x148))(local_50,8,&local_54)" (parenthesized_expression "(**(code **)(puVar1 + 0x148))" ( (pointer_expression "**(code **)(puVar1 + 0x148)" * (pointer_expression "*(code **)(puVar1 + 0x148)" * (cast_expression "(code **)(puVar1 + 0x148)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x148)" ( (binary_expression "puVar1 + 0x148" identifier + number_literal) ))))) )) (argument_list "(local_50,8,&local_54)" ( identifier , number_literal , (pointer_expression "&local_54" & identifier) )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }" if (parenthesized_expression "(local_54 == 0)" ( (binary_expression "local_54 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }" { (labeled_statement "LAB_0017e3a0:\n            iVar2 = 5;" statement_identifier : (expression_statement "iVar2 = 5;" (assignment_expression "iVar2 = 5" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54)" identifier = (call_expression "(**(code **)(puVar1 + 0x148))(local_48,8,&local_54)" (parenthesized_expression "(**(code **)(puVar1 + 0x148))" ( (pointer_expression "**(code **)(puVar1 + 0x148)" * (pointer_expression "*(code **)(puVar1 + 0x148)" * (cast_expression "(code **)(puVar1 + 0x148)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x148)" ( (binary_expression "puVar1 + 0x148" identifier + number_literal) ))))) )) (argument_list "(local_48,8,&local_54)" ( identifier , number_literal , (pointer_expression "&local_54" & identifier) )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_54 == 0) goto LAB_0017e3a0;" if (parenthesized_expression "(local_54 == 0)" ( (binary_expression "local_54 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(*puVar3,puVar5[3],0x10)" ( (pointer_expression "*puVar3" * identifier) , (subscript_expression "puVar5[3]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10)" identifier = (call_expression "(**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" ( (pointer_expression "**(code **)(puVar1 + 0x80)" * (pointer_expression "*(code **)(puVar1 + 0x80)" * (cast_expression "(code **)(puVar1 + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x80)" ( (binary_expression "puVar1 + 0x80" identifier + number_literal) ))))) )) (argument_list "(puVar3[1],puVar5[4],0x10)" ( (subscript_expression "puVar3[1]" identifier [ number_literal ]) , (subscript_expression "puVar5[4]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "(**(code **)(puVar1 + 0x38))(puVar3[2],1);" (call_expression "(**(code **)(puVar1 + 0x38))(puVar3[2],1)" (parenthesized_expression "(**(code **)(puVar1 + 0x38))" ( (pointer_expression "**(code **)(puVar1 + 0x38)" * (pointer_expression "*(code **)(puVar1 + 0x38)" * (cast_expression "(code **)(puVar1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x38)" ( (binary_expression "puVar1 + 0x38" identifier + number_literal) ))))) )) (argument_list "(puVar3[2],1)" ( (subscript_expression "puVar3[2]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48)" identifier = (call_expression "(**(code **)(puVar1 + 0xb0))(local_48,1,local_48)" (parenthesized_expression "(**(code **)(puVar1 + 0xb0))" ( (pointer_expression "**(code **)(puVar1 + 0xb0)" * (pointer_expression "*(code **)(puVar1 + 0xb0)" * (cast_expression "(code **)(puVar1 + 0xb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0xb0)" ( (binary_expression "puVar1 + 0xb0" identifier + number_literal) ))))) )) (argument_list "(local_48,1,local_48)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1)" identifier = (call_expression "(**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1)" (parenthesized_expression "(**(code **)(puVar1 + 0x150))" ( (pointer_expression "**(code **)(puVar1 + 0x150)" * (pointer_expression "*(code **)(puVar1 + 0x150)" * (cast_expression "(code **)(puVar1 + 0x150)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x150)" ( (binary_expression "puVar1 + 0x150" identifier + number_literal) ))))) )) (argument_list "(local_48,puVar3,puVar4,local_50,1)" ( identifier , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4)" identifier = (call_expression "(**(code **)(puVar1 + 0x58))(*puVar3,*puVar4)" (parenthesized_expression "(**(code **)(puVar1 + 0x58))" ( (pointer_expression "**(code **)(puVar1 + 0x58)" * (pointer_expression "*(code **)(puVar1 + 0x58)" * (cast_expression "(code **)(puVar1 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x58)" ( (binary_expression "puVar1 + 0x58" identifier + number_literal) ))))) )) (argument_list "(*puVar3,*puVar4)" ( (pointer_expression "*puVar3" * identifier) , (pointer_expression "*puVar4" * identifier) )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0017e3a0;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1])" identifier = (call_expression "(**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1])" (parenthesized_expression "(**(code **)(puVar1 + 0x58))" ( (pointer_expression "**(code **)(puVar1 + 0x58)" * (pointer_expression "*(code **)(puVar1 + 0x58)" * (cast_expression "(code **)(puVar1 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x58)" ( (binary_expression "puVar1 + 0x58" identifier + number_literal) ))))) )) (argument_list "(puVar3[1],puVar4[1])" ( (subscript_expression "puVar3[1]" identifier [ number_literal ]) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0017e3a0;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017e3a0;" goto statement_identifier ;)) (expression_statement "iVar2 = *(int *)(puVar5 + 5);" (assignment_expression "iVar2 = *(int *)(puVar5 + 5)" identifier = (pointer_expression "*(int *)(puVar5 + 5)" * (cast_expression "(int *)(puVar5 + 5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 5)" ( (binary_expression "puVar5 + 5" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = puVar5 + 7;" (assignment_expression "puVar5 = puVar5 + 7" identifier = (binary_expression "puVar5 + 7" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "ltc_ecc_del_point(puVar4);" (call_expression "ltc_ecc_del_point(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "ltc_ecc_del_point(puVar3);" (call_expression "ltc_ecc_del_point(puVar3)" identifier (argument_list "(puVar3)" ( identifier ))) ;) (expression_statement "ltc_deinit_multi(local_48,local_50,0);" (call_expression "ltc_deinit_multi(local_48,local_50,0)" identifier (argument_list "(local_48,local_50,0)" ( identifier , identifier , number_literal ))) ;) }))) })) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) , (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int ecc_test(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined8 *puVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  long in_FS_OFFSET;\n  int local_54;\n  undefined8 local_50;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&local_50,&local_48,0);\n  if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    \n  __stack_chk_fail();\n}" (primitive_type "int") (function_declarator "ecc_test(void)" (identifier "ecc_test") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined8 *puVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  long in_FS_OFFSET;\n  int local_54;\n  undefined8 local_50;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar2 = ltc_init_multi(&local_50,&local_48,0);\n  if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "undefined8 local_50;" (type_identifier "undefined8") (identifier "local_50") (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "iVar2 = ltc_init_multi(&local_50,&local_48,0);" (assignment_expression "iVar2 = ltc_init_multi(&local_50,&local_48,0)" (identifier "iVar2") (= "=") (call_expression "ltc_init_multi(&local_50,&local_48,0)" (identifier "ltc_init_multi") (argument_list "(&local_50,&local_48,0)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puVar3 = (undefined8 *)ltc_ecc_new_point();\n    puVar4 = (undefined8 *)ltc_ecc_new_point();\n    puVar1 = PTR_ltc_mp_001ddec0;\n    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }\n  }" ({ "{") (expression_statement "puVar3 = (undefined8 *)ltc_ecc_new_point();" (assignment_expression "puVar3 = (undefined8 *)ltc_ecc_new_point()" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)ltc_ecc_new_point()" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "ltc_ecc_new_point()" (identifier "ltc_ecc_new_point") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar4 = (undefined8 *)ltc_ecc_new_point();" (assignment_expression "puVar4 = (undefined8 *)ltc_ecc_new_point()" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)ltc_ecc_new_point()" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "ltc_ecc_new_point()" (identifier "ltc_ecc_new_point") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar1 = PTR_ltc_mp_001ddec0" (identifier "puVar1") (= "=") (identifier "PTR_ltc_mp_001ddec0")) (; ";")) (if_statement "if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }\n    else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" (if "if") (parenthesized_expression "((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0))" (( "(") (binary_expression "(puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)" (parenthesized_expression "(puVar3 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar3 == (undefined8 *)0x0" (identifier "puVar3") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar4 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar4 == (undefined8 *)0x0" (identifier "puVar4") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n      iVar2 = 0xd;\n      ltc_deinit_multi(local_50,local_48,0);\n      ltc_ecc_del_point(puVar3);\n      ltc_ecc_del_point(puVar4);\n    }" ({ "{") (expression_statement "iVar2 = 0xd;" (assignment_expression "iVar2 = 0xd" (identifier "iVar2") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "ltc_deinit_multi(local_50,local_48,0);" (call_expression "ltc_deinit_multi(local_50,local_48,0)" (identifier "ltc_deinit_multi") (argument_list "(local_50,local_48,0)" (( "(") (identifier "local_50") (, ",") (identifier "local_48") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "ltc_ecc_del_point(puVar3);" (call_expression "ltc_ecc_del_point(puVar3)" (identifier "ltc_ecc_del_point") (argument_list "(puVar3)" (( "(") (identifier "puVar3") () ")"))) (; ";")) (expression_statement "ltc_ecc_del_point(puVar4);" (call_expression "ltc_ecc_del_point(puVar4)" (identifier "ltc_ecc_del_point") (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" (else "else") (compound_statement "{\n      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;\n      if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }\n      ltc_ecc_del_point(puVar4);\n      ltc_ecc_del_point(puVar3);\n      ltc_deinit_multi(local_48,local_50,0);\n    }" ({ "{") (expression_statement "iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;" (assignment_expression "iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8" (identifier "iVar2") (= "=") (pointer_expression "*(int *)PTR_ltc_ecc_sets_001ddeb8" (* "*") (cast_expression "(int *)PTR_ltc_ecc_sets_001ddeb8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_ltc_ecc_sets_001ddeb8")))) (; ";")) (if_statement "if (iVar2 != 0) {\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);\n        do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);\n      }" ({ "{") (expression_statement "puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);" (assignment_expression "puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_ltc_ecc_sets_001ddeb8 + 0x10)" (( "(") (binary_expression "PTR_ltc_ecc_sets_001ddeb8 + 0x10" (identifier "PTR_ltc_ecc_sets_001ddeb8") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (do_statement "do {\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        } while (iVar2 != 0);" (do "do") (compound_statement "{\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }\n          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);\n          if (iVar2 != 0) break;\n          if (local_54 == 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);\n          if (iVar2 != 0) break;\n          (**(code **)(puVar1 + 0x38))(puVar3[2],1);\n          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);\n          if (iVar2 != 0) break;\n          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);\n          if (iVar2 != 0) goto LAB_0017e3a0;\n          iVar2 = *(int *)(puVar5 + 5);\n          puVar5 = puVar5 + 7;\n        }" ({ "{") (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x80)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x80)" (* "*") (cast_expression "(code **)(puVar1 + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x80)" (( "(") (binary_expression "puVar1 + 0x80" (identifier "puVar1") (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (argument_list "(local_50,*puVar5,0x10)" (( "(") (identifier "local_50") (, ",") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (, ",") (number_literal "0x10") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x80)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x80)" (* "*") (cast_expression "(code **)(puVar1 + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x80)" (( "(") (binary_expression "puVar1 + 0x80" (identifier "puVar1") (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (argument_list "(local_48,puVar5[2],0x10)" (( "(") (identifier "local_48") (, ",") (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "0x10") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x148))(local_50,8,&local_54)" (parenthesized_expression "(**(code **)(puVar1 + 0x148))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x148)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x148)" (* "*") (cast_expression "(code **)(puVar1 + 0x148)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x148)" (( "(") (binary_expression "puVar1 + 0x148" (identifier "puVar1") (+ "+") (number_literal "0x148")) () ")"))))) () ")")) (argument_list "(local_50,8,&local_54)" (( "(") (identifier "local_50") (, ",") (number_literal "8") (, ",") (pointer_expression "&local_54" (& "&") (identifier "local_54")) () ")")))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_54 == 0) {\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }" (if "if") (parenthesized_expression "(local_54 == 0)" (( "(") (binary_expression "local_54 == 0" (identifier "local_54") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0017e3a0:\n            iVar2 = 5;\n            break;\n          }" ({ "{") (labeled_statement "LAB_0017e3a0:\n            iVar2 = 5;" (statement_identifier "LAB_0017e3a0") (: ":") (expression_statement "iVar2 = 5;" (assignment_expression "iVar2 = 5" (identifier "iVar2") (= "=") (number_literal "5")) (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x148))(local_48,8,&local_54)" (parenthesized_expression "(**(code **)(puVar1 + 0x148))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x148)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x148)" (* "*") (cast_expression "(code **)(puVar1 + 0x148)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x148)" (( "(") (binary_expression "puVar1 + 0x148" (identifier "puVar1") (+ "+") (number_literal "0x148")) () ")"))))) () ")")) (argument_list "(local_48,8,&local_54)" (( "(") (identifier "local_48") (, ",") (number_literal "8") (, ",") (pointer_expression "&local_54" (& "&") (identifier "local_54")) () ")")))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_54 == 0) goto LAB_0017e3a0;" (if "if") (parenthesized_expression "(local_54 == 0)" (( "(") (binary_expression "local_54 == 0" (identifier "local_54") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0017e3a0;" (goto "goto") (statement_identifier "LAB_0017e3a0") (; ";"))) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x80)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x80)" (* "*") (cast_expression "(code **)(puVar1 + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x80)" (( "(") (binary_expression "puVar1 + 0x80" (identifier "puVar1") (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (argument_list "(*puVar3,puVar5[3],0x10)" (( "(") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (, ",") (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (, ",") (number_literal "0x10") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10)" (parenthesized_expression "(**(code **)(puVar1 + 0x80))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x80)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x80)" (* "*") (cast_expression "(code **)(puVar1 + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x80)" (( "(") (binary_expression "puVar1 + 0x80" (identifier "puVar1") (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (argument_list "(puVar3[1],puVar5[4],0x10)" (( "(") (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (, ",") (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]")) (, ",") (number_literal "0x10") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "(**(code **)(puVar1 + 0x38))(puVar3[2],1);" (call_expression "(**(code **)(puVar1 + 0x38))(puVar3[2],1)" (parenthesized_expression "(**(code **)(puVar1 + 0x38))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x38)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x38)" (* "*") (cast_expression "(code **)(puVar1 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x38)" (( "(") (binary_expression "puVar1 + 0x38" (identifier "puVar1") (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(puVar3[2],1)" (( "(") (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0xb0))(local_48,1,local_48)" (parenthesized_expression "(**(code **)(puVar1 + 0xb0))" (( "(") (pointer_expression "**(code **)(puVar1 + 0xb0)" (* "*") (pointer_expression "*(code **)(puVar1 + 0xb0)" (* "*") (cast_expression "(code **)(puVar1 + 0xb0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0xb0)" (( "(") (binary_expression "puVar1 + 0xb0" (identifier "puVar1") (+ "+") (number_literal "0xb0")) () ")"))))) () ")")) (argument_list "(local_48,1,local_48)" (( "(") (identifier "local_48") (, ",") (number_literal "1") (, ",") (identifier "local_48") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1)" (parenthesized_expression "(**(code **)(puVar1 + 0x150))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x150)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x150)" (* "*") (cast_expression "(code **)(puVar1 + 0x150)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x150)" (( "(") (binary_expression "puVar1 + 0x150" (identifier "puVar1") (+ "+") (number_literal "0x150")) () ")"))))) () ")")) (argument_list "(local_48,puVar3,puVar4,local_50,1)" (( "(") (identifier "local_48") (, ",") (identifier "puVar3") (, ",") (identifier "puVar4") (, ",") (identifier "local_50") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x58))(*puVar3,*puVar4)" (parenthesized_expression "(**(code **)(puVar1 + 0x58))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x58)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x58)" (* "*") (cast_expression "(code **)(puVar1 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x58)" (( "(") (binary_expression "puVar1 + 0x58" (identifier "puVar1") (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (argument_list "(*puVar3,*puVar4)" (( "(") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (, ",") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_0017e3a0;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0017e3a0;" (goto "goto") (statement_identifier "LAB_0017e3a0") (; ";"))) (expression_statement "iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);" (assignment_expression "iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1])" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1])" (parenthesized_expression "(**(code **)(puVar1 + 0x58))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x58)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x58)" (* "*") (cast_expression "(code **)(puVar1 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x58)" (( "(") (binary_expression "puVar1 + 0x58" (identifier "puVar1") (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (argument_list "(puVar3[1],puVar4[1])" (( "(") (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (, ",") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_0017e3a0;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0017e3a0;" (goto "goto") (statement_identifier "LAB_0017e3a0") (; ";"))) (expression_statement "iVar2 = *(int *)(puVar5 + 5);" (assignment_expression "iVar2 = *(int *)(puVar5 + 5)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar5 + 5)" (* "*") (cast_expression "(int *)(puVar5 + 5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 5)" (( "(") (binary_expression "puVar5 + 5" (identifier "puVar5") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "puVar5 = puVar5 + 7;" (assignment_expression "puVar5 = puVar5 + 7" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 7" (identifier "puVar5") (+ "+") (number_literal "7"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "ltc_ecc_del_point(puVar4);" (call_expression "ltc_ecc_del_point(puVar4)" (identifier "ltc_ecc_del_point") (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";")) (expression_statement "ltc_ecc_del_point(puVar3);" (call_expression "ltc_ecc_del_point(puVar3)" (identifier "ltc_ecc_del_point") (argument_list "(puVar3)" (( "(") (identifier "puVar3") () ")"))) (; ";")) (expression_statement "ltc_deinit_multi(local_48,local_50,0);" (call_expression "ltc_deinit_multi(local_48,local_50,0)" (identifier "ltc_deinit_multi") (argument_list "(local_48,local_50,0)" (( "(") (identifier "local_48") (, ",") (identifier "local_50") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return iVar2;\n  }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(void)

{
  type_1 *var_10;
  int var_3;
  type_2 *var_5;
  type_2 *var_6;
  type_3 *var_12;
  long var_1;
  int var_11;
  void *modulus;
  void *order;
  long var_13;
  
  var_13 = *(long *)(var_1 + 0x28);
  var_3 = var_2(&modulus,&order,0);
  if (var_3 == 0) {
    var_5 = var_4();
    var_6 = var_4();
    var_10 = PTR_ltc_mp_001ddec0;
    if ((var_5 == (type_2 *)0x0) || (var_6 == (type_2 *)0x0)) {
      var_3 = 0xd;
      var_7(modulus,order,0);
      var_8(var_5);
      var_8(var_6);
    }
    else {
      var_3 = *(int *)var_9;
      if (var_3 != 0) {
        var_12 = (type_3 *)(var_9 + 0x10);
        do {
          var_3 = (**(type_4 **)(var_10 + 0x80))(modulus,*var_12,0x10);
          if (var_3 != 0) break;
          var_3 = (**(type_4 **)(var_10 + 0x80))(order,var_12[2],0x10);
          if (var_3 != 0) break;
          var_3 = (**(type_4 **)(var_10 + 0x148))(modulus,8,&var_11);
          if (var_3 != 0) break;
          if (var_11 == 0) {
LAB_0017e3a0:
            var_3 = 5;
            break;
          }
          var_3 = (**(type_4 **)(var_10 + 0x148))(order,8,&var_11);
          if (var_3 != 0) break;
          if (var_11 == 0) goto LAB_0017e3a0;
          var_3 = (**(type_4 **)(var_10 + 0x80))(var_5->x,var_12[3],0x10);
          if (var_3 != 0) break;
          var_3 = (**(type_4 **)(var_10 + 0x80))(var_5->y,var_12[4],0x10);
          if (var_3 != 0) break;
          (**(type_4 **)(var_10 + 0x38))(var_5->z,1);
          var_3 = (**(type_4 **)(var_10 + 0xb0))(order,1,order);
          if (var_3 != 0) break;
          var_3 = (**(type_4 **)(var_10 + 0x150))(order,var_5,var_6,modulus,1);
          if (var_3 != 0) break;
          var_3 = (**(type_4 **)(var_10 + 0x58))(var_5->x,var_6->x);
          if (var_3 != 0) goto LAB_0017e3a0;
          var_3 = (**(type_4 **)(var_10 + 0x58))(var_5->y,var_6->y);
          if (var_3 != 0) goto LAB_0017e3a0;
          var_3 = *(int *)(var_12 + 5);
          var_12 = var_12 + 7;
        } while (var_3 != 0);
      }
      var_8(var_6);
      var_8(var_5);
      var_7(order,modulus,0);
    }
  }
  if (var_13 == *(long *)(var_1 + 0x28)) {
    return var_3;
  }
                    /* WARNING: Subroutine does not return */
  var_14();
}


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

int MASKED(void)

{
  undefined *puVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  long in_FS_OFFSET;
  int local_54;
  undefined8 local_50;
  undefined8 local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  iVar2 = ltc_init_multi(&local_50,&local_48,0);
  if (iVar2 == 0) {
    puVar3 = (undefined8 *)ltc_ecc_new_point();
    puVar4 = (undefined8 *)ltc_ecc_new_point();
    puVar1 = PTR_ltc_mp_001ddec0;
    if ((puVar3 == (undefined8 *)0x0) || (puVar4 == (undefined8 *)0x0)) {
      iVar2 = 0xd;
      ltc_deinit_multi(local_50,local_48,0);
      ltc_ecc_del_point(puVar3);
      ltc_ecc_del_point(puVar4);
    }
    else {
      iVar2 = *(int *)PTR_ltc_ecc_sets_001ddeb8;
      if (iVar2 != 0) {
        puVar5 = (undefined8 *)(PTR_ltc_ecc_sets_001ddeb8 + 0x10);
        do {
          iVar2 = (**(code **)(puVar1 + 0x80))(local_50,*puVar5,0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x80))(local_48,puVar5[2],0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x148))(local_50,8,&local_54);
          if (iVar2 != 0) break;
          if (local_54 == 0) {
LAB_0017e3a0:
            iVar2 = 5;
            break;
          }
          iVar2 = (**(code **)(puVar1 + 0x148))(local_48,8,&local_54);
          if (iVar2 != 0) break;
          if (local_54 == 0) goto LAB_0017e3a0;
          iVar2 = (**(code **)(puVar1 + 0x80))(*puVar3,puVar5[3],0x10);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x80))(puVar3[1],puVar5[4],0x10);
          if (iVar2 != 0) break;
          (**(code **)(puVar1 + 0x38))(puVar3[2],1);
          iVar2 = (**(code **)(puVar1 + 0xb0))(local_48,1,local_48);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x150))(local_48,puVar3,puVar4,local_50,1);
          if (iVar2 != 0) break;
          iVar2 = (**(code **)(puVar1 + 0x58))(*puVar3,*puVar4);
          if (iVar2 != 0) goto LAB_0017e3a0;
          iVar2 = (**(code **)(puVar1 + 0x58))(puVar3[1],puVar4[1]);
          if (iVar2 != 0) goto LAB_0017e3a0;
          iVar2 = *(int *)(puVar5 + 5);
          puVar5 = puVar5 + 7;
        } while (iVar2 != 0);
      }
      ltc_ecc_del_point(puVar4);
      ltc_ecc_del_point(puVar3);
      ltc_deinit_multi(local_48,local_50,0);
    }
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return iVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

