
int register_prng(ltc_prng_descriptor *prng)

{
  undefined8 uVar1;
  _func_int_uchar_ptr_ulong_prng_state_ptr *p_Var2;
  _func_ulong_uchar_ptr_ulong_prng_state_ptr *p_Var3;
  _func_int_uchar_ptr_ulong_ptr_prng_state_ptr *p_Var4;
  _func_int *p_Var5;
  undefined *puVar6;
  int iVar7;
  int iVar8;
  undefined *__s1;
  long *plVar9;
  undefined8 *puVar10;
  
  puVar6 = PTR_prng_descriptor_001ddf90;
  if (prng == (ltc_prng_descriptor *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);
  }
  iVar8 = 0;
  __s1 = PTR_prng_descriptor_001ddf90;
  while( true ) {
    iVar7 = memcmp(__s1,prng,0x50);
    if (iVar7 == 0) {
      return iVar8;
    }
    iVar7 = memcmp(__s1 + 0x50,prng,0x50);
    if (iVar7 == 0) {
      return iVar8 + 1;
    }
    iVar7 = memcmp(__s1 + 0xa0,prng,0x50);
    if (iVar7 == 0) {
      return iVar8 + 2;
    }
    iVar7 = memcmp(__s1 + 0xf0,prng,0x50);
    if (iVar7 == 0) {
      return iVar8 + 3;
    }
    iVar7 = memcmp(__s1 + 0x140,prng,0x50);
    if (iVar7 == 0) {
      return iVar8 + 4;
    }
    iVar7 = memcmp(__s1 + 400,prng,0x50);
    if (iVar7 == 0) {
      return iVar8 + 5;
    }
    iVar7 = memcmp(__s1 + 0x1e0,prng,0x50);
    if (iVar7 == 0) {
      return iVar8 + 6;
    }
    iVar7 = memcmp(__s1 + 0x230,prng,0x50);
    if (iVar7 == 0) break;
    iVar8 = iVar8 + 8;
    __s1 = __s1 + 0x280;
    if (iVar8 == 0x20) {
      iVar8 = 0;
      plVar9 = (long *)puVar6;
      while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&
               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&
              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&
             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&
              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))
      {
        iVar8 = iVar8 + 8;
        plVar9 = plVar9 + 0x50;
        if (iVar8 == 0x20) {
          return -1;
        }
      }
      uVar1 = *(undefined8 *)&prng->export_size;
      puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);
      *puVar10 = prng->name;
      puVar10[1] = uVar1;
      p_Var2 = prng->add_entropy;
      puVar10[2] = prng->start;
      puVar10[3] = p_Var2;
      p_Var3 = prng->read;
      puVar10[4] = prng->ready;
      puVar10[5] = p_Var3;
      p_Var4 = prng->pexport;
      puVar10[6] = prng->done;
      puVar10[7] = p_Var4;
      p_Var5 = prng->test;
      puVar10[8] = prng->pimport;
      puVar10[9] = p_Var5;
      return iVar7;
    }
  }
  return iVar8 + 7;
}



int register_prng(undefined8 *param_1)

{
  undefined8 uVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined *__s1;
  long *plVar5;
  undefined8 *puVar6;
  
  puVar2 = PTR_prng_descriptor_001ddf90;
  if (param_1 == (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);
  }
  iVar4 = 0;
  __s1 = PTR_prng_descriptor_001ddf90;
  while( true ) {
    iVar3 = memcmp(__s1,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4;
    }
    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 1;
    }
    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 2;
    }
    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 3;
    }
    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 4;
    }
    iVar3 = memcmp(__s1 + 400,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 5;
    }
    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 6;
    }
    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);
    if (iVar3 == 0) break;
    iVar4 = iVar4 + 8;
    __s1 = __s1 + 0x280;
    if (iVar4 == 0x20) {
      iVar4 = 0;
      plVar5 = (long *)puVar2;
      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&
               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&
              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&
             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&
              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))
      {
        iVar4 = iVar4 + 8;
        plVar5 = plVar5 + 0x50;
        if (iVar4 == 0x20) {
          return -1;
        }
      }
      uVar1 = param_1[1];
      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);
      *puVar6 = *param_1;
      puVar6[1] = uVar1;
      uVar1 = param_1[3];
      puVar6[2] = param_1[2];
      puVar6[3] = uVar1;
      uVar1 = param_1[5];
      puVar6[4] = param_1[4];
      puVar6[5] = uVar1;
      uVar1 = param_1[7];
      puVar6[6] = param_1[6];
      puVar6[7] = uVar1;
      uVar1 = param_1[9];
      puVar6[8] = param_1[8];
      puVar6[9] = uVar1;
      return iVar3;
    }
  }
  return iVar4 + 7;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
TEST RDI,RDI
JZ 0x00165b3a
MOV R15,qword ptr [0x001ddf90]
MOV R12,RDI
XOR EBX,EBX
MOV R14,R15
MOV RBP,R15
MOV EDX,0x50
MOV RSI,R12
MOV RDI,RBP
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00165ade
LEA R13D,[RBX + 0x1]
LEA RDI,[RBP + 0x50]
MOV EDX,0x50
MOV RSI,R12
MOV EBX,R13D
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00165ade
LEA RDI,[RBP + 0xa0]
MOV EDX,0x50
MOV RSI,R12
ADD EBX,0x1
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00165ade
LEA RDI,[RBP + 0xf0]
MOV EDX,0x50
LEA EBX,[R13 + 0x2]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00165ade
LEA RDI,[RBP + 0x140]
MOV EDX,0x50
LEA EBX,[R13 + 0x3]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00165ade
LEA RDI,[RBP + 0x190]
MOV EDX,0x50
LEA EBX,[R13 + 0x4]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00165ade
LEA RDI,[RBP + 0x1e0]
MOV EDX,0x50
LEA EBX,[R13 + 0x5]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00165ade
LEA RDI,[RBP + 0x230]
MOV EDX,0x50
LEA EBX,[R13 + 0x6]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00165ade
LEA EBX,[R13 + 0x7]
ADD RBP,0x280
CMP EBX,0x20
JNZ 0x00165959
XOR EBX,EBX
CMP qword ptr [R14],0x0
JZ 0x00165af0
LEA EAX,[RBX + 0x1]
CMP qword ptr [R14 + 0x50],0x0
MOV EBX,EAX
JZ 0x00165af0
ADD EBX,0x1
CMP qword ptr [R14 + 0xa0],0x0
JZ 0x00165af0
CMP qword ptr [R14 + 0xf0],0x0
LEA EBX,[RAX + 0x2]
JZ 0x00165af0
CMP qword ptr [R14 + 0x140],0x0
LEA EBX,[RAX + 0x3]
JZ 0x00165af0
CMP qword ptr [R14 + 0x190],0x0
LEA EBX,[RAX + 0x4]
JZ 0x00165af0
CMP qword ptr [R14 + 0x1e0],0x0
LEA EBX,[RAX + 0x5]
JZ 0x00165af0
CMP qword ptr [R14 + 0x230],0x0
LEA EBX,[RAX + 0x6]
JZ 0x00165af0
LEA EBX,[RAX + 0x7]
ADD R14,0x280
CMP EBX,0x20
JNZ 0x00165a66
MOV EBX,0xffffffff
ADD RSP,0x8
MOV EAX,EBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOVSXD RDX,EBX
MOVDQU XMM0,xmmword ptr [R12]
LEA RCX,[RDX + RDX*0x4]
SHL RCX,0x4
ADD R15,RCX
MOVUPS xmmword ptr [R15],XMM0
MOVDQU XMM1,xmmword ptr [R12 + 0x10]
MOVUPS xmmword ptr [R15 + 0x10],XMM1
MOVDQU XMM2,xmmword ptr [R12 + 0x20]
MOVUPS xmmword ptr [R15 + 0x20],XMM2
MOVDQU XMM3,xmmword ptr [R12 + 0x30]
MOVUPS xmmword ptr [R15 + 0x30],XMM3
MOVDQU XMM4,xmmword ptr [R12 + 0x40]
MOVUPS xmmword ptr [R15 + 0x40],XMM4
JMP 0x00165ade
MOV EDX,0x19
LEA RSI,[0x1bfae8]
LEA RDI,[0x1bfb0d]
CALL 0x00114270
(translation_unit "int register_prng(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined *__s1;\n  long *plVar5;\n  undefined8 *puVar6;\n  \n  puVar2 = PTR_prng_descriptor_001ddf90;\n  if (param_1 == (undefined8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar4 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }\n  return iVar4 + 7;\n}\n\n" (function_definition "int register_prng(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined *__s1;\n  long *plVar5;\n  undefined8 *puVar6;\n  \n  puVar2 = PTR_prng_descriptor_001ddf90;\n  if (param_1 == (undefined8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar4 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }\n  return iVar4 + 7;\n}" primitive_type (function_declarator "register_prng(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined *__s1;\n  long *plVar5;\n  undefined8 *puVar6;\n  \n  puVar2 = PTR_prng_descriptor_001ddf90;\n  if (param_1 == (undefined8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar4 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }\n  return iVar4 + 7;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (expression_statement "puVar2 = PTR_prng_descriptor_001ddf90;" (assignment_expression "puVar2 = PTR_prng_descriptor_001ddf90" identifier = identifier) ;) (if_statement "if (param_1 == (undefined8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }" { comment (expression_statement "crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);" (call_expression "crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19)" identifier (argument_list "("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19)" ( (string_literal ""prng != NULL"" " string_content ") , (string_literal ""src/misc/crypt/crypt_register_prng.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "__s1 = PTR_prng_descriptor_001ddf90;" (assignment_expression "__s1 = PTR_prng_descriptor_001ddf90" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }" { (expression_statement "iVar3 = memcmp(__s1,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1,param_1,0x50)" identifier = (call_expression "memcmp(__s1,param_1,0x50)" identifier (argument_list "(__s1,param_1,0x50)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4;\n    }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0x50,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x50,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0x50,param_1,0x50)" identifier (argument_list "(__s1 + 0x50,param_1,0x50)" ( (binary_expression "__s1 + 0x50" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 1;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 1;\n    }" { (return_statement "return iVar4 + 1;" return (binary_expression "iVar4 + 1" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0xa0,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0xa0,param_1,0x50)" identifier (argument_list "(__s1 + 0xa0,param_1,0x50)" ( (binary_expression "__s1 + 0xa0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 2;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 2;\n    }" { (return_statement "return iVar4 + 2;" return (binary_expression "iVar4 + 2" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0xf0,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0xf0,param_1,0x50)" identifier (argument_list "(__s1 + 0xf0,param_1,0x50)" ( (binary_expression "__s1 + 0xf0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 3;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 3;\n    }" { (return_statement "return iVar4 + 3;" return (binary_expression "iVar4 + 3" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0x140,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x140,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0x140,param_1,0x50)" identifier (argument_list "(__s1 + 0x140,param_1,0x50)" ( (binary_expression "__s1 + 0x140" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 4;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 4;\n    }" { (return_statement "return iVar4 + 4;" return (binary_expression "iVar4 + 4" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 400,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 400,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 400,param_1,0x50)" identifier (argument_list "(__s1 + 400,param_1,0x50)" ( (binary_expression "__s1 + 400" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 5;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 5;\n    }" { (return_statement "return iVar4 + 5;" return (binary_expression "iVar4 + 5" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0x1e0,param_1,0x50)" identifier (argument_list "(__s1 + 0x1e0,param_1,0x50)" ( (binary_expression "__s1 + 0x1e0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 6;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 6;\n    }" { (return_statement "return iVar4 + 6;" return (binary_expression "iVar4 + 6" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0x230,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x230,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0x230,param_1,0x50)" identifier (argument_list "(__s1 + 0x230,param_1,0x50)" ( (binary_expression "__s1 + 0x230" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + 8;" (assignment_expression "iVar4 = iVar4 + 8" identifier = (binary_expression "iVar4 + 8" identifier + number_literal)) ;) (expression_statement "__s1 = __s1 + 0x280;" (assignment_expression "__s1 = __s1 + 0x280" identifier = (binary_expression "__s1 + 0x280" identifier + number_literal)) ;) (if_statement "if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }" if (parenthesized_expression "(iVar4 == 0x20)" ( (binary_expression "iVar4 == 0x20" identifier == number_literal) )) (compound_statement "{\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "plVar5 = (long *)puVar2;" (assignment_expression "plVar5 = (long *)puVar2" identifier = (cast_expression "(long *)puVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) ;) (while_statement "while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }" while (parenthesized_expression "(((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))" ( (parenthesized_expression "((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))))))" ( (binary_expression "(((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))" (parenthesized_expression "(((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0))))" ( (binary_expression "((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))" (parenthesized_expression "((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0))" ( (binary_expression "(iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)" (parenthesized_expression "(iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0))" ( (comma_expression "iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)" (assignment_expression "iVar3 = iVar4" identifier = identifier) , (binary_expression "*plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)" (binary_expression "*plVar5 != 0" (pointer_expression "*plVar5" * identifier) != number_literal) && (parenthesized_expression "(iVar3 = iVar4 + 1, plVar5[10] != 0)" ( (comma_expression "iVar3 = iVar4 + 1, plVar5[10] != 0" (assignment_expression "iVar3 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) , (binary_expression "plVar5[10] != 0" (subscript_expression "plVar5[10]" identifier [ number_literal ]) != number_literal)) )))) )) && (parenthesized_expression "(iVar3 = iVar4 + 2, plVar5[0x14] != 0)" ( (comma_expression "iVar3 = iVar4 + 2, plVar5[0x14] != 0" (assignment_expression "iVar3 = iVar4 + 2" identifier = (binary_expression "iVar4 + 2" identifier + number_literal)) , (binary_expression "plVar5[0x14] != 0" (subscript_expression "plVar5[0x14]" identifier [ number_literal ]) != number_literal)) ))) )) && (parenthesized_expression "((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))" ( (parenthesized_expression "(iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0))" ( (comma_expression "iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)" (assignment_expression "iVar3 = iVar4 + 3" identifier = (binary_expression "iVar4 + 3" identifier + number_literal)) , (binary_expression "plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)" (binary_expression "plVar5[0x1e] != 0" (subscript_expression "plVar5[0x1e]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(iVar3 = iVar4 + 4, plVar5[0x28] != 0)" ( (comma_expression "iVar3 = iVar4 + 4, plVar5[0x28] != 0" (assignment_expression "iVar3 = iVar4 + 4" identifier = (binary_expression "iVar4 + 4" identifier + number_literal)) , (binary_expression "plVar5[0x28] != 0" (subscript_expression "plVar5[0x28]" identifier [ number_literal ]) != number_literal)) )))) )) ))) )) && (parenthesized_expression "((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))" ( (parenthesized_expression "(iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))))" ( (comma_expression "iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" (assignment_expression "iVar3 = iVar4 + 5" identifier = (binary_expression "iVar4 + 5" identifier + number_literal)) , (binary_expression "plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" (binary_expression "plVar5[0x32] != 0" (subscript_expression "plVar5[0x32]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" ( (parenthesized_expression "(iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))" ( (comma_expression "iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)" (assignment_expression "iVar3 = iVar4 + 6" identifier = (binary_expression "iVar4 + 6" identifier + number_literal)) , (binary_expression "plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)" (binary_expression "plVar5[0x3c] != 0" (subscript_expression "plVar5[0x3c]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(iVar3 = iVar4 + 7, plVar5[0x46] != 0)" ( (comma_expression "iVar3 = iVar4 + 7, plVar5[0x46] != 0" (assignment_expression "iVar3 = iVar4 + 7" identifier = (binary_expression "iVar4 + 7" identifier + number_literal)) , (binary_expression "plVar5[0x46] != 0" (subscript_expression "plVar5[0x46]" identifier [ number_literal ]) != number_literal)) )))) )) )))) )) ))) )) )) (compound_statement "{\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }" { (expression_statement "iVar4 = iVar4 + 8;" (assignment_expression "iVar4 = iVar4 + 8" identifier = (binary_expression "iVar4 + 8" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + 0x50;" (assignment_expression "plVar5 = plVar5 + 0x50" identifier = (binary_expression "plVar5 + 0x50" identifier + number_literal)) ;) (if_statement "if (iVar4 == 0x20) {\n          return -1;\n        }" if (parenthesized_expression "(iVar4 == 0x20)" ( (binary_expression "iVar4 == 0x20" identifier == number_literal) )) (compound_statement "{\n          return -1;\n        }" { (return_statement "return -1;" return number_literal ;) })) })) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);" (assignment_expression "puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50)" identifier = (cast_expression "(undefined8 *)(puVar2 + (long)iVar3 * 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (long)iVar3 * 0x50)" ( (binary_expression "puVar2 + (long)iVar3 * 0x50" identifier + (binary_expression "(long)iVar3 * 0x50" (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "*puVar6 = *param_1;" (assignment_expression "*puVar6 = *param_1" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar6[1] = uVar1;" (assignment_expression "puVar6[1] = uVar1" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[2] = param_1[2];" (assignment_expression "puVar6[2] = param_1[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = uVar1;" (assignment_expression "puVar6[3] = uVar1" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[5];" (assignment_expression "uVar1 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = param_1[4];" (assignment_expression "puVar6[4] = param_1[4]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = uVar1;" (assignment_expression "puVar6[5] = uVar1" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[7];" (assignment_expression "uVar1 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = param_1[6];" (assignment_expression "puVar6[6] = param_1[6]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "puVar6[7] = uVar1;" (assignment_expression "puVar6[7] = uVar1" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[9];" (assignment_expression "uVar1 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "puVar6[8] = param_1[8];" (assignment_expression "puVar6[8] = param_1[8]" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "puVar6[9] = uVar1;" (assignment_expression "puVar6[9] = uVar1" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar3;" return identifier ;) })) })) (return_statement "return iVar4 + 7;" return (binary_expression "iVar4 + 7" identifier + number_literal) ;) })))
(translation_unit "int register_prng(ltc_prng_descriptor *prng)\n\n{\n  undefined8 uVar1;\n  _func_int_uchar_ptr_ulong_prng_state_ptr *p_Var2;\n  _func_ulong_uchar_ptr_ulong_prng_state_ptr *p_Var3;\n  _func_int_uchar_ptr_ulong_ptr_prng_state_ptr *p_Var4;\n  _func_int *p_Var5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  undefined *__s1;\n  long *plVar9;\n  undefined8 *puVar10;\n  \n  puVar6 = PTR_prng_descriptor_001ddf90;\n  if (prng == (ltc_prng_descriptor *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar8 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar7 = memcmp(__s1,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8;\n    }\n    iVar7 = memcmp(__s1 + 0x50,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 1;\n    }\n    iVar7 = memcmp(__s1 + 0xa0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 2;\n    }\n    iVar7 = memcmp(__s1 + 0xf0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 3;\n    }\n    iVar7 = memcmp(__s1 + 0x140,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 4;\n    }\n    iVar7 = memcmp(__s1 + 400,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 5;\n    }\n    iVar7 = memcmp(__s1 + 0x1e0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 6;\n    }\n    iVar7 = memcmp(__s1 + 0x230,prng,0x50);\n    if (iVar7 == 0) break;\n    iVar8 = iVar8 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar8 == 0x20) {\n      iVar8 = 0;\n      plVar9 = (long *)puVar6;\n      while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))\n      {\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = *(undefined8 *)&prng->export_size;\n      puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);\n      *puVar10 = prng->name;\n      puVar10[1] = uVar1;\n      p_Var2 = prng->add_entropy;\n      puVar10[2] = prng->start;\n      puVar10[3] = p_Var2;\n      p_Var3 = prng->read;\n      puVar10[4] = prng->ready;\n      puVar10[5] = p_Var3;\n      p_Var4 = prng->pexport;\n      puVar10[6] = prng->done;\n      puVar10[7] = p_Var4;\n      p_Var5 = prng->test;\n      puVar10[8] = prng->pimport;\n      puVar10[9] = p_Var5;\n      return iVar7;\n    }\n  }\n  return iVar8 + 7;\n}\n\n" (function_definition "int register_prng(ltc_prng_descriptor *prng)\n\n{\n  undefined8 uVar1;\n  _func_int_uchar_ptr_ulong_prng_state_ptr *p_Var2;\n  _func_ulong_uchar_ptr_ulong_prng_state_ptr *p_Var3;\n  _func_int_uchar_ptr_ulong_ptr_prng_state_ptr *p_Var4;\n  _func_int *p_Var5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  undefined *__s1;\n  long *plVar9;\n  undefined8 *puVar10;\n  \n  puVar6 = PTR_prng_descriptor_001ddf90;\n  if (prng == (ltc_prng_descriptor *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar8 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar7 = memcmp(__s1,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8;\n    }\n    iVar7 = memcmp(__s1 + 0x50,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 1;\n    }\n    iVar7 = memcmp(__s1 + 0xa0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 2;\n    }\n    iVar7 = memcmp(__s1 + 0xf0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 3;\n    }\n    iVar7 = memcmp(__s1 + 0x140,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 4;\n    }\n    iVar7 = memcmp(__s1 + 400,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 5;\n    }\n    iVar7 = memcmp(__s1 + 0x1e0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 6;\n    }\n    iVar7 = memcmp(__s1 + 0x230,prng,0x50);\n    if (iVar7 == 0) break;\n    iVar8 = iVar8 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar8 == 0x20) {\n      iVar8 = 0;\n      plVar9 = (long *)puVar6;\n      while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))\n      {\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = *(undefined8 *)&prng->export_size;\n      puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);\n      *puVar10 = prng->name;\n      puVar10[1] = uVar1;\n      p_Var2 = prng->add_entropy;\n      puVar10[2] = prng->start;\n      puVar10[3] = p_Var2;\n      p_Var3 = prng->read;\n      puVar10[4] = prng->ready;\n      puVar10[5] = p_Var3;\n      p_Var4 = prng->pexport;\n      puVar10[6] = prng->done;\n      puVar10[7] = p_Var4;\n      p_Var5 = prng->test;\n      puVar10[8] = prng->pimport;\n      puVar10[9] = p_Var5;\n      return iVar7;\n    }\n  }\n  return iVar8 + 7;\n}" primitive_type (function_declarator "register_prng(ltc_prng_descriptor *prng)" identifier (parameter_list "(ltc_prng_descriptor *prng)" ( (parameter_declaration "ltc_prng_descriptor *prng" type_identifier (pointer_declarator "*prng" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  _func_int_uchar_ptr_ulong_prng_state_ptr *p_Var2;\n  _func_ulong_uchar_ptr_ulong_prng_state_ptr *p_Var3;\n  _func_int_uchar_ptr_ulong_ptr_prng_state_ptr *p_Var4;\n  _func_int *p_Var5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  undefined *__s1;\n  long *plVar9;\n  undefined8 *puVar10;\n  \n  puVar6 = PTR_prng_descriptor_001ddf90;\n  if (prng == (ltc_prng_descriptor *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar8 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar7 = memcmp(__s1,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8;\n    }\n    iVar7 = memcmp(__s1 + 0x50,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 1;\n    }\n    iVar7 = memcmp(__s1 + 0xa0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 2;\n    }\n    iVar7 = memcmp(__s1 + 0xf0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 3;\n    }\n    iVar7 = memcmp(__s1 + 0x140,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 4;\n    }\n    iVar7 = memcmp(__s1 + 400,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 5;\n    }\n    iVar7 = memcmp(__s1 + 0x1e0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 6;\n    }\n    iVar7 = memcmp(__s1 + 0x230,prng,0x50);\n    if (iVar7 == 0) break;\n    iVar8 = iVar8 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar8 == 0x20) {\n      iVar8 = 0;\n      plVar9 = (long *)puVar6;\n      while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))\n      {\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = *(undefined8 *)&prng->export_size;\n      puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);\n      *puVar10 = prng->name;\n      puVar10[1] = uVar1;\n      p_Var2 = prng->add_entropy;\n      puVar10[2] = prng->start;\n      puVar10[3] = p_Var2;\n      p_Var3 = prng->read;\n      puVar10[4] = prng->ready;\n      puVar10[5] = p_Var3;\n      p_Var4 = prng->pexport;\n      puVar10[6] = prng->done;\n      puVar10[7] = p_Var4;\n      p_Var5 = prng->test;\n      puVar10[8] = prng->pimport;\n      puVar10[9] = p_Var5;\n      return iVar7;\n    }\n  }\n  return iVar8 + 7;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "_func_int_uchar_ptr_ulong_prng_state_ptr *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "_func_ulong_uchar_ptr_ulong_prng_state_ptr *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "_func_int_uchar_ptr_ulong_ptr_prng_state_ptr *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "_func_int *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (expression_statement "puVar6 = PTR_prng_descriptor_001ddf90;" (assignment_expression "puVar6 = PTR_prng_descriptor_001ddf90" identifier = identifier) ;) (if_statement "if (prng == (ltc_prng_descriptor *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }" if (parenthesized_expression "(prng == (ltc_prng_descriptor *)0x0)" ( (binary_expression "prng == (ltc_prng_descriptor *)0x0" identifier == (cast_expression "(ltc_prng_descriptor *)0x0" ( (type_descriptor "ltc_prng_descriptor *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }" { comment (expression_statement "crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);" (call_expression "crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19)" identifier (argument_list "("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19)" ( (string_literal ""prng != NULL"" " string_content ") , (string_literal ""src/misc/crypt/crypt_register_prng.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "__s1 = PTR_prng_descriptor_001ddf90;" (assignment_expression "__s1 = PTR_prng_descriptor_001ddf90" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar7 = memcmp(__s1,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8;\n    }\n    iVar7 = memcmp(__s1 + 0x50,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 1;\n    }\n    iVar7 = memcmp(__s1 + 0xa0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 2;\n    }\n    iVar7 = memcmp(__s1 + 0xf0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 3;\n    }\n    iVar7 = memcmp(__s1 + 0x140,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 4;\n    }\n    iVar7 = memcmp(__s1 + 400,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 5;\n    }\n    iVar7 = memcmp(__s1 + 0x1e0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 6;\n    }\n    iVar7 = memcmp(__s1 + 0x230,prng,0x50);\n    if (iVar7 == 0) break;\n    iVar8 = iVar8 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar8 == 0x20) {\n      iVar8 = 0;\n      plVar9 = (long *)puVar6;\n      while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))\n      {\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = *(undefined8 *)&prng->export_size;\n      puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);\n      *puVar10 = prng->name;\n      puVar10[1] = uVar1;\n      p_Var2 = prng->add_entropy;\n      puVar10[2] = prng->start;\n      puVar10[3] = p_Var2;\n      p_Var3 = prng->read;\n      puVar10[4] = prng->ready;\n      puVar10[5] = p_Var3;\n      p_Var4 = prng->pexport;\n      puVar10[6] = prng->done;\n      puVar10[7] = p_Var4;\n      p_Var5 = prng->test;\n      puVar10[8] = prng->pimport;\n      puVar10[9] = p_Var5;\n      return iVar7;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar7 = memcmp(__s1,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8;\n    }\n    iVar7 = memcmp(__s1 + 0x50,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 1;\n    }\n    iVar7 = memcmp(__s1 + 0xa0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 2;\n    }\n    iVar7 = memcmp(__s1 + 0xf0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 3;\n    }\n    iVar7 = memcmp(__s1 + 0x140,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 4;\n    }\n    iVar7 = memcmp(__s1 + 400,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 5;\n    }\n    iVar7 = memcmp(__s1 + 0x1e0,prng,0x50);\n    if (iVar7 == 0) {\n      return iVar8 + 6;\n    }\n    iVar7 = memcmp(__s1 + 0x230,prng,0x50);\n    if (iVar7 == 0) break;\n    iVar8 = iVar8 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar8 == 0x20) {\n      iVar8 = 0;\n      plVar9 = (long *)puVar6;\n      while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))\n      {\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = *(undefined8 *)&prng->export_size;\n      puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);\n      *puVar10 = prng->name;\n      puVar10[1] = uVar1;\n      p_Var2 = prng->add_entropy;\n      puVar10[2] = prng->start;\n      puVar10[3] = p_Var2;\n      p_Var3 = prng->read;\n      puVar10[4] = prng->ready;\n      puVar10[5] = p_Var3;\n      p_Var4 = prng->pexport;\n      puVar10[6] = prng->done;\n      puVar10[7] = p_Var4;\n      p_Var5 = prng->test;\n      puVar10[8] = prng->pimport;\n      puVar10[9] = p_Var5;\n      return iVar7;\n    }\n  }" { (expression_statement "iVar7 = memcmp(__s1,prng,0x50);" (assignment_expression "iVar7 = memcmp(__s1,prng,0x50)" identifier = (call_expression "memcmp(__s1,prng,0x50)" identifier (argument_list "(__s1,prng,0x50)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n      return iVar8;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar8;\n    }" { (return_statement "return iVar8;" return identifier ;) })) (expression_statement "iVar7 = memcmp(__s1 + 0x50,prng,0x50);" (assignment_expression "iVar7 = memcmp(__s1 + 0x50,prng,0x50)" identifier = (call_expression "memcmp(__s1 + 0x50,prng,0x50)" identifier (argument_list "(__s1 + 0x50,prng,0x50)" ( (binary_expression "__s1 + 0x50" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n      return iVar8 + 1;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar8 + 1;\n    }" { (return_statement "return iVar8 + 1;" return (binary_expression "iVar8 + 1" identifier + number_literal) ;) })) (expression_statement "iVar7 = memcmp(__s1 + 0xa0,prng,0x50);" (assignment_expression "iVar7 = memcmp(__s1 + 0xa0,prng,0x50)" identifier = (call_expression "memcmp(__s1 + 0xa0,prng,0x50)" identifier (argument_list "(__s1 + 0xa0,prng,0x50)" ( (binary_expression "__s1 + 0xa0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n      return iVar8 + 2;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar8 + 2;\n    }" { (return_statement "return iVar8 + 2;" return (binary_expression "iVar8 + 2" identifier + number_literal) ;) })) (expression_statement "iVar7 = memcmp(__s1 + 0xf0,prng,0x50);" (assignment_expression "iVar7 = memcmp(__s1 + 0xf0,prng,0x50)" identifier = (call_expression "memcmp(__s1 + 0xf0,prng,0x50)" identifier (argument_list "(__s1 + 0xf0,prng,0x50)" ( (binary_expression "__s1 + 0xf0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n      return iVar8 + 3;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar8 + 3;\n    }" { (return_statement "return iVar8 + 3;" return (binary_expression "iVar8 + 3" identifier + number_literal) ;) })) (expression_statement "iVar7 = memcmp(__s1 + 0x140,prng,0x50);" (assignment_expression "iVar7 = memcmp(__s1 + 0x140,prng,0x50)" identifier = (call_expression "memcmp(__s1 + 0x140,prng,0x50)" identifier (argument_list "(__s1 + 0x140,prng,0x50)" ( (binary_expression "__s1 + 0x140" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n      return iVar8 + 4;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar8 + 4;\n    }" { (return_statement "return iVar8 + 4;" return (binary_expression "iVar8 + 4" identifier + number_literal) ;) })) (expression_statement "iVar7 = memcmp(__s1 + 400,prng,0x50);" (assignment_expression "iVar7 = memcmp(__s1 + 400,prng,0x50)" identifier = (call_expression "memcmp(__s1 + 400,prng,0x50)" identifier (argument_list "(__s1 + 400,prng,0x50)" ( (binary_expression "__s1 + 400" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n      return iVar8 + 5;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar8 + 5;\n    }" { (return_statement "return iVar8 + 5;" return (binary_expression "iVar8 + 5" identifier + number_literal) ;) })) (expression_statement "iVar7 = memcmp(__s1 + 0x1e0,prng,0x50);" (assignment_expression "iVar7 = memcmp(__s1 + 0x1e0,prng,0x50)" identifier = (call_expression "memcmp(__s1 + 0x1e0,prng,0x50)" identifier (argument_list "(__s1 + 0x1e0,prng,0x50)" ( (binary_expression "__s1 + 0x1e0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) {\n      return iVar8 + 6;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar8 + 6;\n    }" { (return_statement "return iVar8 + 6;" return (binary_expression "iVar8 + 6" identifier + number_literal) ;) })) (expression_statement "iVar7 = memcmp(__s1 + 0x230,prng,0x50);" (assignment_expression "iVar7 = memcmp(__s1 + 0x230,prng,0x50)" identifier = (call_expression "memcmp(__s1 + 0x230,prng,0x50)" identifier (argument_list "(__s1 + 0x230,prng,0x50)" ( (binary_expression "__s1 + 0x230" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + 8;" (assignment_expression "iVar8 = iVar8 + 8" identifier = (binary_expression "iVar8 + 8" identifier + number_literal)) ;) (expression_statement "__s1 = __s1 + 0x280;" (assignment_expression "__s1 = __s1 + 0x280" identifier = (binary_expression "__s1 + 0x280" identifier + number_literal)) ;) (if_statement "if (iVar8 == 0x20) {\n      iVar8 = 0;\n      plVar9 = (long *)puVar6;\n      while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))\n      {\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = *(undefined8 *)&prng->export_size;\n      puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);\n      *puVar10 = prng->name;\n      puVar10[1] = uVar1;\n      p_Var2 = prng->add_entropy;\n      puVar10[2] = prng->start;\n      puVar10[3] = p_Var2;\n      p_Var3 = prng->read;\n      puVar10[4] = prng->ready;\n      puVar10[5] = p_Var3;\n      p_Var4 = prng->pexport;\n      puVar10[6] = prng->done;\n      puVar10[7] = p_Var4;\n      p_Var5 = prng->test;\n      puVar10[8] = prng->pimport;\n      puVar10[9] = p_Var5;\n      return iVar7;\n    }" if (parenthesized_expression "(iVar8 == 0x20)" ( (binary_expression "iVar8 == 0x20" identifier == number_literal) )) (compound_statement "{\n      iVar8 = 0;\n      plVar9 = (long *)puVar6;\n      while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))\n      {\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = *(undefined8 *)&prng->export_size;\n      puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);\n      *puVar10 = prng->name;\n      puVar10[1] = uVar1;\n      p_Var2 = prng->add_entropy;\n      puVar10[2] = prng->start;\n      puVar10[3] = p_Var2;\n      p_Var3 = prng->read;\n      puVar10[4] = prng->ready;\n      puVar10[5] = p_Var3;\n      p_Var4 = prng->pexport;\n      puVar10[6] = prng->done;\n      puVar10[7] = p_Var4;\n      p_Var5 = prng->test;\n      puVar10[8] = prng->pimport;\n      puVar10[9] = p_Var5;\n      return iVar7;\n    }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "plVar9 = (long *)puVar6;" (assignment_expression "plVar9 = (long *)puVar6" identifier = (cast_expression "(long *)puVar6" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) ;) (while_statement "while (((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))\n      {\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }" while (parenthesized_expression "(((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))))" ( (parenthesized_expression "((((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0))))))" ( (binary_expression "(((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))) &&\n             ((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))" (parenthesized_expression "(((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0))))" ( (binary_expression "((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)) &&\n              ((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))" (parenthesized_expression "((iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0))" ( (binary_expression "(iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)) &&\n               (iVar7 = iVar8 + 2, plVar9[0x14] != 0)" (parenthesized_expression "(iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0))" ( (comma_expression "iVar7 = iVar8, *plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)" (assignment_expression "iVar7 = iVar8" identifier = identifier) , (binary_expression "*plVar9 != 0 && (iVar7 = iVar8 + 1, plVar9[10] != 0)" (binary_expression "*plVar9 != 0" (pointer_expression "*plVar9" * identifier) != number_literal) && (parenthesized_expression "(iVar7 = iVar8 + 1, plVar9[10] != 0)" ( (comma_expression "iVar7 = iVar8 + 1, plVar9[10] != 0" (assignment_expression "iVar7 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) , (binary_expression "plVar9[10] != 0" (subscript_expression "plVar9[10]" identifier [ number_literal ]) != number_literal)) )))) )) && (parenthesized_expression "(iVar7 = iVar8 + 2, plVar9[0x14] != 0)" ( (comma_expression "iVar7 = iVar8 + 2, plVar9[0x14] != 0" (assignment_expression "iVar7 = iVar8 + 2" identifier = (binary_expression "iVar8 + 2" identifier + number_literal)) , (binary_expression "plVar9[0x14] != 0" (subscript_expression "plVar9[0x14]" identifier [ number_literal ]) != number_literal)) ))) )) && (parenthesized_expression "((iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)))" ( (parenthesized_expression "(iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0))" ( (comma_expression "iVar7 = iVar8 + 3, plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)" (assignment_expression "iVar7 = iVar8 + 3" identifier = (binary_expression "iVar8 + 3" identifier + number_literal)) , (binary_expression "plVar9[0x1e] != 0 && (iVar7 = iVar8 + 4, plVar9[0x28] != 0)" (binary_expression "plVar9[0x1e] != 0" (subscript_expression "plVar9[0x1e]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(iVar7 = iVar8 + 4, plVar9[0x28] != 0)" ( (comma_expression "iVar7 = iVar8 + 4, plVar9[0x28] != 0" (assignment_expression "iVar7 = iVar8 + 4" identifier = (binary_expression "iVar8 + 4" identifier + number_literal)) , (binary_expression "plVar9[0x28] != 0" (subscript_expression "plVar9[0x28]" identifier [ number_literal ]) != number_literal)) )))) )) ))) )) && (parenthesized_expression "((iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))))" ( (parenthesized_expression "(iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0))))" ( (comma_expression "iVar7 = iVar8 + 5, plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))" (assignment_expression "iVar7 = iVar8 + 5" identifier = (binary_expression "iVar8 + 5" identifier + number_literal)) , (binary_expression "plVar9[0x32] != 0 &&\n              ((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))" (binary_expression "plVar9[0x32] != 0" (subscript_expression "plVar9[0x32]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "((iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)))" ( (parenthesized_expression "(iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0))" ( (comma_expression "iVar7 = iVar8 + 6, plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)" (assignment_expression "iVar7 = iVar8 + 6" identifier = (binary_expression "iVar8 + 6" identifier + number_literal)) , (binary_expression "plVar9[0x3c] != 0 && (iVar7 = iVar8 + 7, plVar9[0x46] != 0)" (binary_expression "plVar9[0x3c] != 0" (subscript_expression "plVar9[0x3c]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(iVar7 = iVar8 + 7, plVar9[0x46] != 0)" ( (comma_expression "iVar7 = iVar8 + 7, plVar9[0x46] != 0" (assignment_expression "iVar7 = iVar8 + 7" identifier = (binary_expression "iVar8 + 7" identifier + number_literal)) , (binary_expression "plVar9[0x46] != 0" (subscript_expression "plVar9[0x46]" identifier [ number_literal ]) != number_literal)) )))) )) )))) )) ))) )) )) (compound_statement "{\n        iVar8 = iVar8 + 8;\n        plVar9 = plVar9 + 0x50;\n        if (iVar8 == 0x20) {\n          return -1;\n        }\n      }" { (expression_statement "iVar8 = iVar8 + 8;" (assignment_expression "iVar8 = iVar8 + 8" identifier = (binary_expression "iVar8 + 8" identifier + number_literal)) ;) (expression_statement "plVar9 = plVar9 + 0x50;" (assignment_expression "plVar9 = plVar9 + 0x50" identifier = (binary_expression "plVar9 + 0x50" identifier + number_literal)) ;) (if_statement "if (iVar8 == 0x20) {\n          return -1;\n        }" if (parenthesized_expression "(iVar8 == 0x20)" ( (binary_expression "iVar8 == 0x20" identifier == number_literal) )) (compound_statement "{\n          return -1;\n        }" { (return_statement "return -1;" return number_literal ;) })) })) (expression_statement "uVar1 = *(undefined8 *)&prng->export_size;" (assignment_expression "uVar1 = *(undefined8 *)&prng->export_size" identifier = (pointer_expression "*(undefined8 *)&prng->export_size" * (cast_expression "(undefined8 *)&prng->export_size" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prng->export_size" & (field_expression "prng->export_size" identifier -> field_identifier))))) ;) (expression_statement "puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50);" (assignment_expression "puVar10 = (undefined8 *)(puVar6 + (long)iVar7 * 0x50)" identifier = (cast_expression "(undefined8 *)(puVar6 + (long)iVar7 * 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + (long)iVar7 * 0x50)" ( (binary_expression "puVar6 + (long)iVar7 * 0x50" identifier + (binary_expression "(long)iVar7 * 0x50" (cast_expression "(long)iVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "*puVar10 = prng->name;" (assignment_expression "*puVar10 = prng->name" (pointer_expression "*puVar10" * identifier) = (field_expression "prng->name" identifier -> field_identifier)) ;) (expression_statement "puVar10[1] = uVar1;" (assignment_expression "puVar10[1] = uVar1" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "p_Var2 = prng->add_entropy;" (assignment_expression "p_Var2 = prng->add_entropy" identifier = (field_expression "prng->add_entropy" identifier -> field_identifier)) ;) (expression_statement "puVar10[2] = prng->start;" (assignment_expression "puVar10[2] = prng->start" (subscript_expression "puVar10[2]" identifier [ number_literal ]) = (field_expression "prng->start" identifier -> field_identifier)) ;) (expression_statement "puVar10[3] = p_Var2;" (assignment_expression "puVar10[3] = p_Var2" (subscript_expression "puVar10[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "p_Var3 = prng->read;" (assignment_expression "p_Var3 = prng->read" identifier = (field_expression "prng->read" identifier -> field_identifier)) ;) (expression_statement "puVar10[4] = prng->ready;" (assignment_expression "puVar10[4] = prng->ready" (subscript_expression "puVar10[4]" identifier [ number_literal ]) = (field_expression "prng->ready" identifier -> field_identifier)) ;) (expression_statement "puVar10[5] = p_Var3;" (assignment_expression "puVar10[5] = p_Var3" (subscript_expression "puVar10[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "p_Var4 = prng->pexport;" (assignment_expression "p_Var4 = prng->pexport" identifier = (field_expression "prng->pexport" identifier -> field_identifier)) ;) (expression_statement "puVar10[6] = prng->done;" (assignment_expression "puVar10[6] = prng->done" (subscript_expression "puVar10[6]" identifier [ number_literal ]) = (field_expression "prng->done" identifier -> field_identifier)) ;) (expression_statement "puVar10[7] = p_Var4;" (assignment_expression "puVar10[7] = p_Var4" (subscript_expression "puVar10[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "p_Var5 = prng->test;" (assignment_expression "p_Var5 = prng->test" identifier = (field_expression "prng->test" identifier -> field_identifier)) ;) (expression_statement "puVar10[8] = prng->pimport;" (assignment_expression "puVar10[8] = prng->pimport" (subscript_expression "puVar10[8]" identifier [ number_literal ]) = (field_expression "prng->pimport" identifier -> field_identifier)) ;) (expression_statement "puVar10[9] = p_Var5;" (assignment_expression "puVar10[9] = p_Var5" (subscript_expression "puVar10[9]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar7;" return identifier ;) })) })) (return_statement "return iVar8 + 7;" return (binary_expression "iVar8 + 7" identifier + number_literal) ;) })))
(translation_unit "int register_prng(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined *__s1;\n  long *plVar5;\n  undefined8 *puVar6;\n  \n  puVar2 = PTR_prng_descriptor_001ddf90;\n  if (param_1 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar4 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }\n  return iVar4 + 7;\n}\n\n" (function_definition "int register_prng(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined *__s1;\n  long *plVar5;\n  undefined8 *puVar6;\n  \n  puVar2 = PTR_prng_descriptor_001ddf90;\n  if (param_1 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar4 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }\n  return iVar4 + 7;\n}" primitive_type (function_declarator "register_prng(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined *__s1;\n  long *plVar5;\n  undefined8 *puVar6;\n  \n  puVar2 = PTR_prng_descriptor_001ddf90;\n  if (param_1 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar4 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }\n  return iVar4 + 7;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (expression_statement "puVar2 = PTR_prng_descriptor_001ddf90;" (assignment_expression "puVar2 = PTR_prng_descriptor_001ddf90" identifier = identifier) ;) (if_statement "if (param_1 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }" { (expression_statement "crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);" (call_expression "crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19)" identifier (argument_list "("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19)" ( (string_literal ""prng != NULL"" " string_content ") , (string_literal ""src/misc/crypt/crypt_register_prng.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "__s1 = PTR_prng_descriptor_001ddf90;" (assignment_expression "__s1 = PTR_prng_descriptor_001ddf90" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }" { (expression_statement "iVar3 = memcmp(__s1,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1,param_1,0x50)" identifier = (call_expression "memcmp(__s1,param_1,0x50)" identifier (argument_list "(__s1,param_1,0x50)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4;\n    }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0x50,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x50,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0x50,param_1,0x50)" identifier (argument_list "(__s1 + 0x50,param_1,0x50)" ( (binary_expression "__s1 + 0x50" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 1;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 1;\n    }" { (return_statement "return iVar4 + 1;" return (binary_expression "iVar4 + 1" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0xa0,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0xa0,param_1,0x50)" identifier (argument_list "(__s1 + 0xa0,param_1,0x50)" ( (binary_expression "__s1 + 0xa0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 2;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 2;\n    }" { (return_statement "return iVar4 + 2;" return (binary_expression "iVar4 + 2" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0xf0,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0xf0,param_1,0x50)" identifier (argument_list "(__s1 + 0xf0,param_1,0x50)" ( (binary_expression "__s1 + 0xf0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 3;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 3;\n    }" { (return_statement "return iVar4 + 3;" return (binary_expression "iVar4 + 3" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0x140,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x140,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0x140,param_1,0x50)" identifier (argument_list "(__s1 + 0x140,param_1,0x50)" ( (binary_expression "__s1 + 0x140" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 4;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 4;\n    }" { (return_statement "return iVar4 + 4;" return (binary_expression "iVar4 + 4" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 400,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 400,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 400,param_1,0x50)" identifier (argument_list "(__s1 + 400,param_1,0x50)" ( (binary_expression "__s1 + 400" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 5;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 5;\n    }" { (return_statement "return iVar4 + 5;" return (binary_expression "iVar4 + 5" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0x1e0,param_1,0x50)" identifier (argument_list "(__s1 + 0x1e0,param_1,0x50)" ( (binary_expression "__s1 + 0x1e0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 6;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return iVar4 + 6;\n    }" { (return_statement "return iVar4 + 6;" return (binary_expression "iVar4 + 6" identifier + number_literal) ;) })) (expression_statement "iVar3 = memcmp(__s1 + 0x230,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x230,param_1,0x50)" identifier = (call_expression "memcmp(__s1 + 0x230,param_1,0x50)" identifier (argument_list "(__s1 + 0x230,param_1,0x50)" ( (binary_expression "__s1 + 0x230" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + 8;" (assignment_expression "iVar4 = iVar4 + 8" identifier = (binary_expression "iVar4 + 8" identifier + number_literal)) ;) (expression_statement "__s1 = __s1 + 0x280;" (assignment_expression "__s1 = __s1 + 0x280" identifier = (binary_expression "__s1 + 0x280" identifier + number_literal)) ;) (if_statement "if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }" if (parenthesized_expression "(iVar4 == 0x20)" ( (binary_expression "iVar4 == 0x20" identifier == number_literal) )) (compound_statement "{\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "plVar5 = (long *)puVar2;" (assignment_expression "plVar5 = (long *)puVar2" identifier = (cast_expression "(long *)puVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) ;) (while_statement "while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }" while (parenthesized_expression "(((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))" ( (parenthesized_expression "((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))))))" ( (binary_expression "(((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))" (parenthesized_expression "(((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0))))" ( (binary_expression "((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))" (parenthesized_expression "((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0))" ( (binary_expression "(iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)" (parenthesized_expression "(iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0))" ( (comma_expression "iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)" (assignment_expression "iVar3 = iVar4" identifier = identifier) , (binary_expression "*plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)" (binary_expression "*plVar5 != 0" (pointer_expression "*plVar5" * identifier) != number_literal) && (parenthesized_expression "(iVar3 = iVar4 + 1, plVar5[10] != 0)" ( (comma_expression "iVar3 = iVar4 + 1, plVar5[10] != 0" (assignment_expression "iVar3 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) , (binary_expression "plVar5[10] != 0" (subscript_expression "plVar5[10]" identifier [ number_literal ]) != number_literal)) )))) )) && (parenthesized_expression "(iVar3 = iVar4 + 2, plVar5[0x14] != 0)" ( (comma_expression "iVar3 = iVar4 + 2, plVar5[0x14] != 0" (assignment_expression "iVar3 = iVar4 + 2" identifier = (binary_expression "iVar4 + 2" identifier + number_literal)) , (binary_expression "plVar5[0x14] != 0" (subscript_expression "plVar5[0x14]" identifier [ number_literal ]) != number_literal)) ))) )) && (parenthesized_expression "((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))" ( (parenthesized_expression "(iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0))" ( (comma_expression "iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)" (assignment_expression "iVar3 = iVar4 + 3" identifier = (binary_expression "iVar4 + 3" identifier + number_literal)) , (binary_expression "plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)" (binary_expression "plVar5[0x1e] != 0" (subscript_expression "plVar5[0x1e]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(iVar3 = iVar4 + 4, plVar5[0x28] != 0)" ( (comma_expression "iVar3 = iVar4 + 4, plVar5[0x28] != 0" (assignment_expression "iVar3 = iVar4 + 4" identifier = (binary_expression "iVar4 + 4" identifier + number_literal)) , (binary_expression "plVar5[0x28] != 0" (subscript_expression "plVar5[0x28]" identifier [ number_literal ]) != number_literal)) )))) )) ))) )) && (parenthesized_expression "((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))" ( (parenthesized_expression "(iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))))" ( (comma_expression "iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" (assignment_expression "iVar3 = iVar4 + 5" identifier = (binary_expression "iVar4 + 5" identifier + number_literal)) , (binary_expression "plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" (binary_expression "plVar5[0x32] != 0" (subscript_expression "plVar5[0x32]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" ( (parenthesized_expression "(iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))" ( (comma_expression "iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)" (assignment_expression "iVar3 = iVar4 + 6" identifier = (binary_expression "iVar4 + 6" identifier + number_literal)) , (binary_expression "plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)" (binary_expression "plVar5[0x3c] != 0" (subscript_expression "plVar5[0x3c]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(iVar3 = iVar4 + 7, plVar5[0x46] != 0)" ( (comma_expression "iVar3 = iVar4 + 7, plVar5[0x46] != 0" (assignment_expression "iVar3 = iVar4 + 7" identifier = (binary_expression "iVar4 + 7" identifier + number_literal)) , (binary_expression "plVar5[0x46] != 0" (subscript_expression "plVar5[0x46]" identifier [ number_literal ]) != number_literal)) )))) )) )))) )) ))) )) )) (compound_statement "{\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }" { (expression_statement "iVar4 = iVar4 + 8;" (assignment_expression "iVar4 = iVar4 + 8" identifier = (binary_expression "iVar4 + 8" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + 0x50;" (assignment_expression "plVar5 = plVar5 + 0x50" identifier = (binary_expression "plVar5 + 0x50" identifier + number_literal)) ;) (if_statement "if (iVar4 == 0x20) {\n          return -1;\n        }" if (parenthesized_expression "(iVar4 == 0x20)" ( (binary_expression "iVar4 == 0x20" identifier == number_literal) )) (compound_statement "{\n          return -1;\n        }" { (return_statement "return -1;" return number_literal ;) })) })) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);" (assignment_expression "puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50)" identifier = (cast_expression "(undefined8 *)(puVar2 + (long)iVar3 * 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (long)iVar3 * 0x50)" ( (binary_expression "puVar2 + (long)iVar3 * 0x50" identifier + (binary_expression "(long)iVar3 * 0x50" (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "*puVar6 = *param_1;" (assignment_expression "*puVar6 = *param_1" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar6[1] = uVar1;" (assignment_expression "puVar6[1] = uVar1" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[2] = param_1[2];" (assignment_expression "puVar6[2] = param_1[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = uVar1;" (assignment_expression "puVar6[3] = uVar1" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[5];" (assignment_expression "uVar1 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = param_1[4];" (assignment_expression "puVar6[4] = param_1[4]" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "puVar6[5] = uVar1;" (assignment_expression "puVar6[5] = uVar1" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[7];" (assignment_expression "uVar1 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "puVar6[6] = param_1[6];" (assignment_expression "puVar6[6] = param_1[6]" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "puVar6[7] = uVar1;" (assignment_expression "puVar6[7] = uVar1" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = param_1[9];" (assignment_expression "uVar1 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "puVar6[8] = param_1[8];" (assignment_expression "puVar6[8] = param_1[8]" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "puVar6[9] = uVar1;" (assignment_expression "puVar6[9] = uVar1" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar3;" return identifier ;) })) })) (return_statement "return iVar4 + 7;" return (binary_expression "iVar4 + 7" identifier + number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) IDENT)) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression (pointer_expression * IDENT) != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) )))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) )))) )) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) )))) )) )))) )) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })) })) (return_statement return (binary_expression IDENT + LIT) ;) })))
(function_definition "int register_prng(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined *__s1;\n  long *plVar5;\n  undefined8 *puVar6;\n  \n  puVar2 = PTR_prng_descriptor_001ddf90;\n  if (param_1 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar4 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }\n  return iVar4 + 7;\n}" (primitive_type "int") (function_declarator "register_prng(undefined8 *param_1)" (identifier "register_prng") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined *__s1;\n  long *plVar5;\n  undefined8 *puVar6;\n  \n  puVar2 = PTR_prng_descriptor_001ddf90;\n  if (param_1 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }\n  iVar4 = 0;\n  __s1 = PTR_prng_descriptor_001ddf90;\n  while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }\n  return iVar4 + 7;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined *__s1;" (type_identifier "undefined") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (expression_statement "puVar2 = PTR_prng_descriptor_001ddf90;" (assignment_expression "puVar2 = PTR_prng_descriptor_001ddf90" (identifier "puVar2") (= "=") (identifier "PTR_prng_descriptor_001ddf90")) (; ";")) (if_statement "if (param_1 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }" (if "if") (parenthesized_expression "(param_1 == (undefined8 *)0x0)" (( "(") (binary_expression "param_1 == (undefined8 *)0x0" (identifier "param_1") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);\n  }" ({ "{") (expression_statement "crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);" (call_expression "crypt_argchk("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19)" (identifier "crypt_argchk") (argument_list "("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19)" (( "(") (string_literal ""prng != NULL"" (" """) (string_content "prng != NULL") (" """)) (, ",") (string_literal ""src/misc/crypt/crypt_register_prng.c"" (" """) (string_content "src/misc/crypt/crypt_register_prng.c") (" """)) (, ",") (number_literal "0x19") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "__s1 = PTR_prng_descriptor_001ddf90;" (assignment_expression "__s1 = PTR_prng_descriptor_001ddf90" (identifier "__s1") (= "=") (identifier "PTR_prng_descriptor_001ddf90")) (; ";")) (while_statement "while( true ) {\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar3 = memcmp(__s1,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4;\n    }\n    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 1;\n    }\n    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 2;\n    }\n    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 3;\n    }\n    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 4;\n    }\n    iVar3 = memcmp(__s1 + 400,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 5;\n    }\n    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);\n    if (iVar3 == 0) {\n      return iVar4 + 6;\n    }\n    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);\n    if (iVar3 == 0) break;\n    iVar4 = iVar4 + 8;\n    __s1 = __s1 + 0x280;\n    if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }\n  }" ({ "{") (expression_statement "iVar3 = memcmp(__s1,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1,param_1,0x50)" (identifier "iVar3") (= "=") (call_expression "memcmp(__s1,param_1,0x50)" (identifier "memcmp") (argument_list "(__s1,param_1,0x50)" (( "(") (identifier "__s1") (, ",") (identifier "param_1") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return iVar4;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar4;\n    }" ({ "{") (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (expression_statement "iVar3 = memcmp(__s1 + 0x50,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x50,param_1,0x50)" (identifier "iVar3") (= "=") (call_expression "memcmp(__s1 + 0x50,param_1,0x50)" (identifier "memcmp") (argument_list "(__s1 + 0x50,param_1,0x50)" (( "(") (binary_expression "__s1 + 0x50" (identifier "__s1") (+ "+") (number_literal "0x50")) (, ",") (identifier "param_1") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 1;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar4 + 1;\n    }" ({ "{") (return_statement "return iVar4 + 1;" (return "return") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0xa0,param_1,0x50)" (identifier "iVar3") (= "=") (call_expression "memcmp(__s1 + 0xa0,param_1,0x50)" (identifier "memcmp") (argument_list "(__s1 + 0xa0,param_1,0x50)" (( "(") (binary_expression "__s1 + 0xa0" (identifier "__s1") (+ "+") (number_literal "0xa0")) (, ",") (identifier "param_1") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 2;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar4 + 2;\n    }" ({ "{") (return_statement "return iVar4 + 2;" (return "return") (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2")) (; ";")) (} "}"))) (expression_statement "iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0xf0,param_1,0x50)" (identifier "iVar3") (= "=") (call_expression "memcmp(__s1 + 0xf0,param_1,0x50)" (identifier "memcmp") (argument_list "(__s1 + 0xf0,param_1,0x50)" (( "(") (binary_expression "__s1 + 0xf0" (identifier "__s1") (+ "+") (number_literal "0xf0")) (, ",") (identifier "param_1") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 3;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar4 + 3;\n    }" ({ "{") (return_statement "return iVar4 + 3;" (return "return") (binary_expression "iVar4 + 3" (identifier "iVar4") (+ "+") (number_literal "3")) (; ";")) (} "}"))) (expression_statement "iVar3 = memcmp(__s1 + 0x140,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x140,param_1,0x50)" (identifier "iVar3") (= "=") (call_expression "memcmp(__s1 + 0x140,param_1,0x50)" (identifier "memcmp") (argument_list "(__s1 + 0x140,param_1,0x50)" (( "(") (binary_expression "__s1 + 0x140" (identifier "__s1") (+ "+") (number_literal "0x140")) (, ",") (identifier "param_1") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 4;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar4 + 4;\n    }" ({ "{") (return_statement "return iVar4 + 4;" (return "return") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) (; ";")) (} "}"))) (expression_statement "iVar3 = memcmp(__s1 + 400,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 400,param_1,0x50)" (identifier "iVar3") (= "=") (call_expression "memcmp(__s1 + 400,param_1,0x50)" (identifier "memcmp") (argument_list "(__s1 + 400,param_1,0x50)" (( "(") (binary_expression "__s1 + 400" (identifier "__s1") (+ "+") (number_literal "400")) (, ",") (identifier "param_1") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 5;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar4 + 5;\n    }" ({ "{") (return_statement "return iVar4 + 5;" (return "return") (binary_expression "iVar4 + 5" (identifier "iVar4") (+ "+") (number_literal "5")) (; ";")) (} "}"))) (expression_statement "iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50)" (identifier "iVar3") (= "=") (call_expression "memcmp(__s1 + 0x1e0,param_1,0x50)" (identifier "memcmp") (argument_list "(__s1 + 0x1e0,param_1,0x50)" (( "(") (binary_expression "__s1 + 0x1e0" (identifier "__s1") (+ "+") (number_literal "0x1e0")) (, ",") (identifier "param_1") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return iVar4 + 6;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar4 + 6;\n    }" ({ "{") (return_statement "return iVar4 + 6;" (return "return") (binary_expression "iVar4 + 6" (identifier "iVar4") (+ "+") (number_literal "6")) (; ";")) (} "}"))) (expression_statement "iVar3 = memcmp(__s1 + 0x230,param_1,0x50);" (assignment_expression "iVar3 = memcmp(__s1 + 0x230,param_1,0x50)" (identifier "iVar3") (= "=") (call_expression "memcmp(__s1 + 0x230,param_1,0x50)" (identifier "memcmp") (argument_list "(__s1 + 0x230,param_1,0x50)" (( "(") (binary_expression "__s1 + 0x230" (identifier "__s1") (+ "+") (number_literal "0x230")) (, ",") (identifier "param_1") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) break;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar4 + 8;" (assignment_expression "iVar4 = iVar4 + 8" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "__s1 = __s1 + 0x280;" (assignment_expression "__s1 = __s1 + 0x280" (identifier "__s1") (= "=") (binary_expression "__s1 + 0x280" (identifier "__s1") (+ "+") (number_literal "0x280"))) (; ";")) (if_statement "if (iVar4 == 0x20) {\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0x20)" (( "(") (binary_expression "iVar4 == 0x20" (identifier "iVar4") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n      iVar4 = 0;\n      plVar5 = (long *)puVar2;\n      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }\n      uVar1 = param_1[1];\n      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);\n      *puVar6 = *param_1;\n      puVar6[1] = uVar1;\n      uVar1 = param_1[3];\n      puVar6[2] = param_1[2];\n      puVar6[3] = uVar1;\n      uVar1 = param_1[5];\n      puVar6[4] = param_1[4];\n      puVar6[5] = uVar1;\n      uVar1 = param_1[7];\n      puVar6[6] = param_1[6];\n      puVar6[7] = uVar1;\n      uVar1 = param_1[9];\n      puVar6[8] = param_1[8];\n      puVar6[9] = uVar1;\n      return iVar3;\n    }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar5 = (long *)puVar2;" (assignment_expression "plVar5 = (long *)puVar2" (identifier "plVar5") (= "=") (cast_expression "(long *)puVar2" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (; ";")) (while_statement "while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))\n      {\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }" (while "while") (parenthesized_expression "(((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))" (( "(") (parenthesized_expression "((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))))))" (( "(") (binary_expression "(((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&\n             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))" (parenthesized_expression "(((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0))))" (( "(") (binary_expression "((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&\n              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))" (parenthesized_expression "((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0))" (( "(") (binary_expression "(iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&\n               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)" (parenthesized_expression "(iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0))" (( "(") (comma_expression "iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)" (assignment_expression "iVar3 = iVar4" (identifier "iVar3") (= "=") (identifier "iVar4")) (, ",") (binary_expression "*plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)" (binary_expression "*plVar5 != 0" (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar3 = iVar4 + 1, plVar5[10] != 0)" (( "(") (comma_expression "iVar3 = iVar4 + 1, plVar5[10] != 0" (assignment_expression "iVar3 = iVar4 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (, ",") (binary_expression "plVar5[10] != 0" (subscript_expression "plVar5[10]" (identifier "plVar5") ([ "[") (number_literal "10") (] "]")) (!= "!=") (number_literal "0"))) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = iVar4 + 2, plVar5[0x14] != 0)" (( "(") (comma_expression "iVar3 = iVar4 + 2, plVar5[0x14] != 0" (assignment_expression "iVar3 = iVar4 + 2" (identifier "iVar3") (= "=") (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2"))) (, ",") (binary_expression "plVar5[0x14] != 0" (subscript_expression "plVar5[0x14]" (identifier "plVar5") ([ "[") (number_literal "0x14") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))" (( "(") (parenthesized_expression "(iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0))" (( "(") (comma_expression "iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)" (assignment_expression "iVar3 = iVar4 + 3" (identifier "iVar3") (= "=") (binary_expression "iVar4 + 3" (identifier "iVar4") (+ "+") (number_literal "3"))) (, ",") (binary_expression "plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)" (binary_expression "plVar5[0x1e] != 0" (subscript_expression "plVar5[0x1e]" (identifier "plVar5") ([ "[") (number_literal "0x1e") (] "]")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar3 = iVar4 + 4, plVar5[0x28] != 0)" (( "(") (comma_expression "iVar3 = iVar4 + 4, plVar5[0x28] != 0" (assignment_expression "iVar3 = iVar4 + 4" (identifier "iVar3") (= "=") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4"))) (, ",") (binary_expression "plVar5[0x28] != 0" (subscript_expression "plVar5[0x28]" (identifier "plVar5") ([ "[") (number_literal "0x28") (] "]")) (!= "!=") (number_literal "0"))) () ")")))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))" (( "(") (parenthesized_expression "(iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))))" (( "(") (comma_expression "iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" (assignment_expression "iVar3 = iVar4 + 5" (identifier "iVar3") (= "=") (binary_expression "iVar4 + 5" (identifier "iVar4") (+ "+") (number_literal "5"))) (, ",") (binary_expression "plVar5[0x32] != 0 &&\n              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" (binary_expression "plVar5[0x32] != 0" (subscript_expression "plVar5[0x32]" (identifier "plVar5") ([ "[") (number_literal "0x32") (] "]")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))" (( "(") (parenthesized_expression "(iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0))" (( "(") (comma_expression "iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)" (assignment_expression "iVar3 = iVar4 + 6" (identifier "iVar3") (= "=") (binary_expression "iVar4 + 6" (identifier "iVar4") (+ "+") (number_literal "6"))) (, ",") (binary_expression "plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)" (binary_expression "plVar5[0x3c] != 0" (subscript_expression "plVar5[0x3c]" (identifier "plVar5") ([ "[") (number_literal "0x3c") (] "]")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar3 = iVar4 + 7, plVar5[0x46] != 0)" (( "(") (comma_expression "iVar3 = iVar4 + 7, plVar5[0x46] != 0" (assignment_expression "iVar3 = iVar4 + 7" (identifier "iVar3") (= "=") (binary_expression "iVar4 + 7" (identifier "iVar4") (+ "+") (number_literal "7"))) (, ",") (binary_expression "plVar5[0x46] != 0" (subscript_expression "plVar5[0x46]" (identifier "plVar5") ([ "[") (number_literal "0x46") (] "]")) (!= "!=") (number_literal "0"))) () ")")))) () ")")) () ")")))) () ")")) () ")"))) () ")")) () ")")) (compound_statement "{\n        iVar4 = iVar4 + 8;\n        plVar5 = plVar5 + 0x50;\n        if (iVar4 == 0x20) {\n          return -1;\n        }\n      }" ({ "{") (expression_statement "iVar4 = iVar4 + 8;" (assignment_expression "iVar4 = iVar4 + 8" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "plVar5 = plVar5 + 0x50;" (assignment_expression "plVar5 = plVar5 + 0x50" (identifier "plVar5") (= "=") (binary_expression "plVar5 + 0x50" (identifier "plVar5") (+ "+") (number_literal "0x50"))) (; ";")) (if_statement "if (iVar4 == 0x20) {\n          return -1;\n        }" (if "if") (parenthesized_expression "(iVar4 == 0x20)" (( "(") (binary_expression "iVar4 == 0x20" (identifier "iVar4") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n          return -1;\n        }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);" (assignment_expression "puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)(puVar2 + (long)iVar3 * 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (long)iVar3 * 0x50)" (( "(") (binary_expression "puVar2 + (long)iVar3 * 0x50" (identifier "puVar2") (+ "+") (binary_expression "(long)iVar3 * 0x50" (cast_expression "(long)iVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar3")) (* "*") (number_literal "0x50"))) () ")")))) (; ";")) (expression_statement "*puVar6 = *param_1;" (assignment_expression "*puVar6 = *param_1" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar6[1] = uVar1;" (assignment_expression "puVar6[1] = uVar1" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" (identifier "uVar1") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar6[2] = param_1[2];" (assignment_expression "puVar6[2] = param_1[2]" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar6[3] = uVar1;" (assignment_expression "puVar6[3] = uVar1" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = param_1[5];" (assignment_expression "uVar1 = param_1[5]" (identifier "uVar1") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar6[4] = param_1[4];" (assignment_expression "puVar6[4] = param_1[4]" (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar6[5] = uVar1;" (assignment_expression "puVar6[5] = uVar1" (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = param_1[7];" (assignment_expression "uVar1 = param_1[7]" (identifier "uVar1") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "puVar6[6] = param_1[6];" (assignment_expression "puVar6[6] = param_1[6]" (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "puVar6[7] = uVar1;" (assignment_expression "puVar6[7] = uVar1" (subscript_expression "puVar6[7]" (identifier "puVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = param_1[9];" (assignment_expression "uVar1 = param_1[9]" (identifier "uVar1") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar6[8] = param_1[8];" (assignment_expression "puVar6[8] = param_1[8]" (subscript_expression "puVar6[8]" (identifier "puVar6") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "puVar6[9] = uVar1;" (assignment_expression "puVar6[9] = uVar1" (subscript_expression "puVar6[9]" (identifier "puVar6") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (} "}"))) (return_statement "return iVar4 + 7;" (return "return") (binary_expression "iVar4 + 7" (identifier "iVar4") (+ "+") (number_literal "7")) (; ";")) (} "}")))

int function_1(type_1 *var_1)

{
  type_2 uVar1;
  type_3 *p_Var2;
  type_4 *p_Var3;
  type_5 *p_Var4;
  type_6 *p_Var5;
  type_7 *var_8;
  int var_4;
  int var_6;
  type_7 *var_5;
  long *var_7;
  type_2 *puVar10;
  
  var_8 = PTR_prng_descriptor_001ddf90;
  if (var_1 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("prng != NULL","src/misc/crypt/crypt_register_prng.c",0x19);
  }
  var_6 = 0;
  var_5 = PTR_prng_descriptor_001ddf90;
  while( true ) {
    var_4 = var_3(var_5,var_1,0x50);
    if (var_4 == 0) {
      return var_6;
    }
    var_4 = var_3(var_5 + 0x50,var_1,0x50);
    if (var_4 == 0) {
      return var_6 + 1;
    }
    var_4 = var_3(var_5 + 0xa0,var_1,0x50);
    if (var_4 == 0) {
      return var_6 + 2;
    }
    var_4 = var_3(var_5 + 0xf0,var_1,0x50);
    if (var_4 == 0) {
      return var_6 + 3;
    }
    var_4 = var_3(var_5 + 0x140,var_1,0x50);
    if (var_4 == 0) {
      return var_6 + 4;
    }
    var_4 = var_3(var_5 + 400,var_1,0x50);
    if (var_4 == 0) {
      return var_6 + 5;
    }
    var_4 = var_3(var_5 + 0x1e0,var_1,0x50);
    if (var_4 == 0) {
      return var_6 + 6;
    }
    var_4 = var_3(var_5 + 0x230,var_1,0x50);
    if (var_4 == 0) break;
    var_6 = var_6 + 8;
    var_5 = var_5 + 0x280;
    if (var_6 == 0x20) {
      var_6 = 0;
      var_7 = (long *)var_8;
      while (((((var_4 = var_6, *var_7 != 0 && (var_4 = var_6 + 1, var_7[10] != 0)) &&
               (var_4 = var_6 + 2, var_7[0x14] != 0)) &&
              ((var_4 = var_6 + 3, var_7[0x1e] != 0 && (var_4 = var_6 + 4, var_7[0x28] != 0)))) &&
             ((var_4 = var_6 + 5, var_7[0x32] != 0 &&
              ((var_4 = var_6 + 6, var_7[0x3c] != 0 && (var_4 = var_6 + 7, var_7[0x46] != 0)))))))
      {
        var_6 = var_6 + 8;
        var_7 = var_7 + 0x50;
        if (var_6 == 0x20) {
          return -1;
        }
      }
      uVar1 = *(type_2 *)&var_1->export_size;
      puVar10 = (type_2 *)(var_8 + (long)var_4 * 0x50);
      *puVar10 = var_1->name;
      puVar10[1] = uVar1;
      p_Var2 = var_1->add_entropy;
      puVar10[2] = var_1->start;
      puVar10[3] = p_Var2;
      p_Var3 = var_1->read;
      puVar10[4] = var_1->ready;
      puVar10[5] = p_Var3;
      p_Var4 = var_1->pexport;
      puVar10[6] = var_1->done;
      puVar10[7] = p_Var4;
      p_Var5 = var_1->test;
      puVar10[8] = var_1->pimport;
      puVar10[9] = p_Var5;
      return var_4;
    }
  }
  return var_6 + 7;
}


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

int MASKED(undefined8 *param_1)

{
  undefined8 uVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined *__s1;
  long *plVar5;
  undefined8 *puVar6;
  
  puVar2 = PTR_prng_descriptor_001ddf90;
  if (param_1 == (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("prng != NULL","src/misc/crypt/crypt_MASKED.c",0x19);
  }
  iVar4 = 0;
  __s1 = PTR_prng_descriptor_001ddf90;
  while( true ) {
    iVar3 = memcmp(__s1,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4;
    }
    iVar3 = memcmp(__s1 + 0x50,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 1;
    }
    iVar3 = memcmp(__s1 + 0xa0,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 2;
    }
    iVar3 = memcmp(__s1 + 0xf0,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 3;
    }
    iVar3 = memcmp(__s1 + 0x140,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 4;
    }
    iVar3 = memcmp(__s1 + 400,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 5;
    }
    iVar3 = memcmp(__s1 + 0x1e0,param_1,0x50);
    if (iVar3 == 0) {
      return iVar4 + 6;
    }
    iVar3 = memcmp(__s1 + 0x230,param_1,0x50);
    if (iVar3 == 0) break;
    iVar4 = iVar4 + 8;
    __s1 = __s1 + 0x280;
    if (iVar4 == 0x20) {
      iVar4 = 0;
      plVar5 = (long *)puVar2;
      while (((((iVar3 = iVar4, *plVar5 != 0 && (iVar3 = iVar4 + 1, plVar5[10] != 0)) &&
               (iVar3 = iVar4 + 2, plVar5[0x14] != 0)) &&
              ((iVar3 = iVar4 + 3, plVar5[0x1e] != 0 && (iVar3 = iVar4 + 4, plVar5[0x28] != 0)))) &&
             ((iVar3 = iVar4 + 5, plVar5[0x32] != 0 &&
              ((iVar3 = iVar4 + 6, plVar5[0x3c] != 0 && (iVar3 = iVar4 + 7, plVar5[0x46] != 0)))))))
      {
        iVar4 = iVar4 + 8;
        plVar5 = plVar5 + 0x50;
        if (iVar4 == 0x20) {
          return -1;
        }
      }
      uVar1 = param_1[1];
      puVar6 = (undefined8 *)(puVar2 + (long)iVar3 * 0x50);
      *puVar6 = *param_1;
      puVar6[1] = uVar1;
      uVar1 = param_1[3];
      puVar6[2] = param_1[2];
      puVar6[3] = uVar1;
      uVar1 = param_1[5];
      puVar6[4] = param_1[4];
      puVar6[5] = uVar1;
      uVar1 = param_1[7];
      puVar6[6] = param_1[6];
      puVar6[7] = uVar1;
      uVar1 = param_1[9];
      puVar6[8] = param_1[8];
      puVar6[9] = uVar1;
      return iVar3;
    }
  }
  return iVar4 + 7;
}

