
/* WARNING: Unknown calling convention */

int blake2b_256_test(void)

{
  uchar uVar1;
  long lVar2;
  int iVar3;
  ulong uVar4;
  uchar *in;
  long lVar5;
  uchar *puVar6;
  int iVar7;
  long in_FS_OFFSET;
  byte bVar8;
  hash_state md;
  uchar tmp [32];
  
  bVar8 = 0;
  lVar2 = *(long *)(in_FS_OFFSET + 0x28);
  iVar7 = 0;
  in = "";
  lVar5 = 0x102a08;
  do {
    blake2b_256_init(&md);
    uVar4 = 0xffffffffffffffff;
    puVar6 = in;
    do {
      if (uVar4 == 0) break;
      uVar4 = uVar4 - 1;
      uVar1 = *puVar6;
      puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;
    } while (uVar1 != '\0');
    blake2b_process(&md,in,~uVar4 - 1);
    blake2b_done(&md,tmp);
    iVar3 = compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7);
    if (iVar3 != 0) {
      iVar7 = 5;
      goto LAB_001026d2;
    }
    iVar7 = iVar7 + 1;
    in = *(uchar **)(lVar5 + 0x20);
    lVar5 = lVar5 + 0x28;
    if (in == (uchar *)0x0) {
      iVar7 = 0;
LAB_001026d2:
      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {
        return iVar7;
      }
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail();
    }
  } while( true );
}



/* WARNING: Removing unreachable block (ram,0x001026cd) */

undefined1  [16] FUN_0010261b(void)

{
  char cVar1;
  undefined1 auVar2 [16];
  undefined1 *puVar3;
  ulong uVar4;
  long lVar5;
  char *pcVar6;
  undefined1 *puVar7;
  ulong uVar8;
  long in_FS_OFFSET;
  undefined8 auStack_240 [7];
  undefined1 auStack_208 [424];
  long local_60 [6];
  
  pcVar6 = (char *)0x102653;
  puVar3 = auStack_208;
  uVar4 = 0x102646;
  do {
    uVar8 = uVar4;
    puVar7 = puVar3;
    *(undefined8 *)(puVar7 + -8) = 0x10266d;
    lVar5 = -1;
    do {
      if (lVar5 == 0) break;
      lVar5 = lVar5 + -1;
      cVar1 = *pcVar6;
      pcVar6 = pcVar6 + 1;
    } while (cVar1 != '\0');
    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;
    *(undefined8 *)(puVar7 + -0x18) = 0x102697;
    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;
    pcVar6 = *(char **)(uVar8 + 0x20);
    puVar3 = puVar7 + -0x20;
    uVar4 = uVar8 + 0x28;
    if (pcVar6 == (char *)0x0) {
      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {
        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;
        *(undefined8 *)(puVar7 + -0x38) = 0x102714;
        return ZEXT816(0);
      }
      auVar2._8_8_ = 0;
      auVar2._0_8_ = uVar8;
      return auVar2 << 0x40;
    }
  } while( true );
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x1d8
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x1c8],RAX
XOR EAX,EAX
LEA RBP,[0x102646]
MOV R13D,0x0
LEA RBX,[0x102653]
MOV R12,RSP
MOV R15,-0x1
LEA R14,[RSP + 0x1a0]
MOV RDI,R12
CALL 0x0010266d
MOV RCX,R15
MOV RDI,RBX
MOV EAX,0x0
SCASB.REPNE RDI
NOT RCX
LEA RDX,[RCX + -0x1]
MOV RSI,RBX
MOV RDI,R12
CALL 0x0010268c
MOV RSI,R14
MOV RDI,R12
CALL 0x00102697
MOV R9D,R13D
LEA R8,[0x1026a1]
MOV ECX,0x20
MOV RDX,RBP
MOV ESI,0x20
MOV RDI,R14
CALL 0x001026b6
TEST EAX,EAX
JNZ 0x001026cd
ADD R13D,0x1
ADD RBP,0x28
MOV RBX,qword ptr [RBP + -0x8]
TEST RBX,RBX
JNZ 0x00102665
JMP 0x001026d2
MOV EAX,0x5
MOV RSI,qword ptr [RSP + 0x1c8]
XOR RSI,qword ptr FS:[0x28]
JNZ 0x001026f7
ADD RSP,0x1d8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x001026fc
SUB RSP,0x8
MOV ECX,0x0
MOV EDX,0x0
MOV ESI,0x30
CALL 0x00102714
ADD RSP,0x8
RET
(translation_unit "/* WARNING: Removing unreachable block (ram,0x001026cd) */\n\nundefined1  [16] FUN_0010261b(void)\n\n{\n  char cVar1;\n  undefined1 auVar2 [16];\n  undefined1 *puVar3;\n  ulong uVar4;\n  long lVar5;\n  char *pcVar6;\n  undefined1 *puVar7;\n  ulong uVar8;\n  long in_FS_OFFSET;\n  undefined8 auStack_240 [7];\n  undefined1 auStack_208 [424];\n  long local_60 [6];\n  \n  pcVar6 = (char *)0x102653;\n  puVar3 = auStack_208;\n  uVar4 = 0x102646;\n  do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );\n}\n\n" comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_0010261b(void)\n\n{\n  char cVar1;\n  undefined1 auVar2 [16];\n  undefined1 *puVar3;\n  ulong uVar4;\n  long lVar5;\n  char *pcVar6;\n  undefined1 *puVar7;\n  ulong uVar8;\n  long in_FS_OFFSET;\n  undefined8 auStack_240 [7];\n  undefined1 auStack_208 [424];\n  long local_60 [6];\n  \n  pcVar6 = (char *)0x102653;\n  puVar3 = auStack_208;\n  uVar4 = 0x102646;\n  do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );\n}" type_identifier (parenthesized_declarator "(void)" ( identifier )) (compound_statement "{\n  char cVar1;\n  undefined1 auVar2 [16];\n  undefined1 *puVar3;\n  ulong uVar4;\n  long lVar5;\n  char *pcVar6;\n  undefined1 *puVar7;\n  ulong uVar8;\n  long in_FS_OFFSET;\n  undefined8 auStack_240 [7];\n  undefined1 auStack_208 [424];\n  long local_60 [6];\n  \n  pcVar6 = (char *)0x102653;\n  puVar3 = auStack_208;\n  uVar4 = 0x102646;\n  do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 auStack_240 [7];" type_identifier (array_declarator "auStack_240 [7]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_208 [424];" type_identifier (array_declarator "auStack_208 [424]" identifier [ number_literal ]) ;) (declaration "long local_60 [6];" (sized_type_specifier "long" long) (array_declarator "local_60 [6]" identifier [ number_literal ]) ;) (expression_statement "pcVar6 = (char *)0x102653;" (assignment_expression "pcVar6 = (char *)0x102653" identifier = (cast_expression "(char *)0x102653" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar3 = auStack_208;" (assignment_expression "puVar3 = auStack_208" identifier = identifier) ;) (expression_statement "uVar4 = 0x102646;" (assignment_expression "uVar4 = 0x102646" identifier = number_literal) ;) (do_statement "do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );" do (compound_statement "{\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  }" { (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) (expression_statement "puVar7 = puVar3;" (assignment_expression "puVar7 = puVar3" identifier = identifier) ;) (expression_statement "*(undefined8 *)(puVar7 + -8) = 0x10266d;" (assignment_expression "*(undefined8 *)(puVar7 + -8) = 0x10266d" (pointer_expression "*(undefined8 *)(puVar7 + -8)" * (cast_expression "(undefined8 *)(puVar7 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -8)" ( (binary_expression "puVar7 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "lVar5 = -1;" (assignment_expression "lVar5 = -1" identifier = number_literal) ;) (do_statement "do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "*(undefined8 *)(puVar7 + -0x10) = 0x10268c;" (assignment_expression "*(undefined8 *)(puVar7 + -0x10) = 0x10268c" (pointer_expression "*(undefined8 *)(puVar7 + -0x10)" * (cast_expression "(undefined8 *)(puVar7 + -0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar7 + -0x18) = 0x102697;" (assignment_expression "*(undefined8 *)(puVar7 + -0x18) = 0x102697" (pointer_expression "*(undefined8 *)(puVar7 + -0x18)" * (cast_expression "(undefined8 *)(puVar7 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x18)" ( (binary_expression "puVar7 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar7 + -0x20) = 0x1026b6;" (assignment_expression "*(undefined8 *)(puVar7 + -0x20) = 0x1026b6" (pointer_expression "*(undefined8 *)(puVar7 + -0x20)" * (cast_expression "(undefined8 *)(puVar7 + -0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x20)" ( (binary_expression "puVar7 + -0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pcVar6 = *(char **)(uVar8 + 0x20);" (assignment_expression "pcVar6 = *(char **)(uVar8 + 0x20)" identifier = (pointer_expression "*(char **)(uVar8 + 0x20)" * (cast_expression "(char **)(uVar8 + 0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar8 + 0x20)" ( (binary_expression "uVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = puVar7 + -0x20;" (assignment_expression "puVar3 = puVar7 + -0x20" identifier = (binary_expression "puVar7 + -0x20" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar8 + 0x28;" (assignment_expression "uVar4 = uVar8 + 0x28" identifier = (binary_expression "uVar8 + 0x28" identifier + number_literal)) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }" { (if_statement "if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }" if (parenthesized_expression "(*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)" (pointer_expression "*(long *)(puVar7 + 0x1a8)" * (cast_expression "(long *)(puVar7 + 0x1a8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x1a8)" ( (binary_expression "puVar7 + 0x1a8" identifier + number_literal) )))) != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }" { (expression_statement "*(undefined8 *)(puVar7 + -0x28) = 0x1026fc;" (assignment_expression "*(undefined8 *)(puVar7 + -0x28) = 0x1026fc" (pointer_expression "*(undefined8 *)(puVar7 + -0x28)" * (cast_expression "(undefined8 *)(puVar7 + -0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x28)" ( (binary_expression "puVar7 + -0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar7 + -0x38) = 0x102714;" (assignment_expression "*(undefined8 *)(puVar7 + -0x38) = 0x102714" (pointer_expression "*(undefined8 *)(puVar7 + -0x38)" * (cast_expression "(undefined8 *)(puVar7 + -0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x38)" ( (binary_expression "puVar7 + -0x38" identifier + number_literal) )))) = number_literal) ;) (return_statement "return ZEXT816(0);" return (call_expression "ZEXT816(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })) (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar2._0_8_ = uVar8;" (assignment_expression "auVar2._0_8_ = uVar8" (field_expression "auVar2._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar2 << 0x40;" return (binary_expression "auVar2 << 0x40" identifier << number_literal) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint blake2b_256_test(void)\n\n{\n  uchar uVar1;\n  long lVar2;\n  int iVar3;\n  ulong uVar4;\n  uchar *in;\n  long lVar5;\n  uchar *puVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  hash_state md;\n  uchar tmp [32];\n  \n  bVar8 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  in = "";\n  lVar5 = 0x102a08;\n  do {\n    blake2b_256_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar6 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar6;\n      puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7);\n    if (iVar3 != 0) {\n      iVar7 = 5;\n      goto LAB_001026d2;\n    }\n    iVar7 = iVar7 + 1;\n    in = *(uchar **)(lVar5 + 0x20);\n    lVar5 = lVar5 + 0x28;\n    if (in == (uchar *)0x0) {\n      iVar7 = 0;\nLAB_001026d2:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  } while( true );\n}\n\n" comment (function_definition "int blake2b_256_test(void)\n\n{\n  uchar uVar1;\n  long lVar2;\n  int iVar3;\n  ulong uVar4;\n  uchar *in;\n  long lVar5;\n  uchar *puVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  hash_state md;\n  uchar tmp [32];\n  \n  bVar8 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  in = "";\n  lVar5 = 0x102a08;\n  do {\n    blake2b_256_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar6 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar6;\n      puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7);\n    if (iVar3 != 0) {\n      iVar7 = 5;\n      goto LAB_001026d2;\n    }\n    iVar7 = iVar7 + 1;\n    in = *(uchar **)(lVar5 + 0x20);\n    lVar5 = lVar5 + 0x28;\n    if (in == (uchar *)0x0) {\n      iVar7 = 0;\nLAB_001026d2:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  } while( true );\n}" primitive_type (function_declarator "blake2b_256_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uchar uVar1;\n  long lVar2;\n  int iVar3;\n  ulong uVar4;\n  uchar *in;\n  long lVar5;\n  uchar *puVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  hash_state md;\n  uchar tmp [32];\n  \n  bVar8 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  in = "";\n  lVar5 = 0x102a08;\n  do {\n    blake2b_256_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar6 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar6;\n      puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7);\n    if (iVar3 != 0) {\n      iVar7 = 5;\n      goto LAB_001026d2;\n    }\n    iVar7 = iVar7 + 1;\n    in = *(uchar **)(lVar5 + 0x20);\n    lVar5 = lVar5 + 0x28;\n    if (in == (uchar *)0x0) {\n      iVar7 = 0;\nLAB_001026d2:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  } while( true );\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uchar *in;" type_identifier (pointer_declarator "*in" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "uchar *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "hash_state md;" type_identifier identifier ;) (declaration "uchar tmp [32];" type_identifier (array_declarator "tmp [32]" identifier [ number_literal ]) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar2 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar2 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "in = "";" (assignment_expression "in = """ identifier = (string_literal """" " ")) ;) (expression_statement "lVar5 = 0x102a08;" (assignment_expression "lVar5 = 0x102a08" identifier = number_literal) ;) (do_statement "do {\n    blake2b_256_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar6 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar6;\n      puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7);\n    if (iVar3 != 0) {\n      iVar7 = 5;\n      goto LAB_001026d2;\n    }\n    iVar7 = iVar7 + 1;\n    in = *(uchar **)(lVar5 + 0x20);\n    lVar5 = lVar5 + 0x28;\n    if (in == (uchar *)0x0) {\n      iVar7 = 0;\nLAB_001026d2:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  } while( true );" do (compound_statement "{\n    blake2b_256_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar6 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar6;\n      puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7);\n    if (iVar3 != 0) {\n      iVar7 = 5;\n      goto LAB_001026d2;\n    }\n    iVar7 = iVar7 + 1;\n    in = *(uchar **)(lVar5 + 0x20);\n    lVar5 = lVar5 + 0x28;\n    if (in == (uchar *)0x0) {\n      iVar7 = 0;\nLAB_001026d2:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  }" { (expression_statement "blake2b_256_init(&md);" (call_expression "blake2b_256_init(&md)" identifier (argument_list "(&md)" ( (pointer_expression "&md" & identifier) ))) ;) (expression_statement "uVar4 = 0xffffffffffffffff;" (assignment_expression "uVar4 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "puVar6 = in;" (assignment_expression "puVar6 = in" identifier = identifier) ;) (do_statement "do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar6;\n      puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;\n    } while (uVar1 != '\0');" do (compound_statement "{\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar6;\n      puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;\n    }" { (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "uVar1 = *puVar6;" (assignment_expression "uVar1 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + (ulong)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (ulong)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (ulong)bVar8 * -2 + 1" (binary_expression "puVar6 + (ulong)bVar8 * -2" identifier + (binary_expression "(ulong)bVar8 * -2" (cast_expression "(ulong)bVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != '\0')" ( (binary_expression "uVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "blake2b_process(&md,in,~uVar4 - 1);" (call_expression "blake2b_process(&md,in,~uVar4 - 1)" identifier (argument_list "(&md,in,~uVar4 - 1)" ( (pointer_expression "&md" & identifier) , identifier , (binary_expression "~uVar4 - 1" (unary_expression "~uVar4" ~ identifier) - number_literal) ))) ;) (expression_statement "blake2b_done(&md,tmp);" (call_expression "blake2b_done(&md,tmp)" identifier (argument_list "(&md,tmp)" ( (pointer_expression "&md" & identifier) , identifier ))) ;) (expression_statement "iVar3 = compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7);" (assignment_expression "iVar3 = compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7)" identifier = (call_expression "compare_testvector(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7)" identifier (argument_list "(tmp,0x20,lVar5,0x20,"BLAKE2B_256",iVar7)" ( identifier , number_literal , identifier , number_literal , (string_literal ""BLAKE2B_256"" " string_content ") , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n      iVar7 = 5;\n      goto LAB_001026d2;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar7 = 5;\n      goto LAB_001026d2;\n    }" { (expression_statement "iVar7 = 5;" (assignment_expression "iVar7 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_001026d2;" goto statement_identifier ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "in = *(uchar **)(lVar5 + 0x20);" (assignment_expression "in = *(uchar **)(lVar5 + 0x20)" identifier = (pointer_expression "*(uchar **)(lVar5 + 0x20)" * (cast_expression "(uchar **)(lVar5 + 0x20)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = lVar5 + 0x28;" (assignment_expression "lVar5 = lVar5 + 0x28" identifier = (binary_expression "lVar5 + 0x28" identifier + number_literal)) ;) (if_statement "if (in == (uchar *)0x0) {\n      iVar7 = 0;\nLAB_001026d2:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" if (parenthesized_expression "(in == (uchar *)0x0)" ( (binary_expression "in == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar7 = 0;\nLAB_001026d2:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (labeled_statement "LAB_001026d2:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }" statement_identifier : (if_statement "if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar7;\n      }" if (parenthesized_expression "(lVar2 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar2 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n        return iVar7;\n      }" { (return_statement "return iVar7;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "undefined1  [16] FUN_0010261b(void)\n\n{\n  char cVar1;\n  undefined1 auVar2 [16];\n  undefined1 *puVar3;\n  ulong uVar4;\n  long lVar5;\n  char *pcVar6;\n  undefined1 *puVar7;\n  ulong uVar8;\n  long in_FS_OFFSET;\n  undefined8 auStack_240 [7];\n  undefined1 auStack_208 [424];\n  long local_60 [6];\n  \n  pcVar6 = (char *)0x102653;\n  puVar3 = auStack_208;\n  uVar4 = 0x102646;\n  do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_0010261b(void)\n\n{\n  char cVar1;\n  undefined1 auVar2 [16];\n  undefined1 *puVar3;\n  ulong uVar4;\n  long lVar5;\n  char *pcVar6;\n  undefined1 *puVar7;\n  ulong uVar8;\n  long in_FS_OFFSET;\n  undefined8 auStack_240 [7];\n  undefined1 auStack_208 [424];\n  long local_60 [6];\n  \n  pcVar6 = (char *)0x102653;\n  puVar3 = auStack_208;\n  uVar4 = 0x102646;\n  do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );\n}" type_identifier (parenthesized_declarator "(void)" ( identifier )) (compound_statement "{\n  char cVar1;\n  undefined1 auVar2 [16];\n  undefined1 *puVar3;\n  ulong uVar4;\n  long lVar5;\n  char *pcVar6;\n  undefined1 *puVar7;\n  ulong uVar8;\n  long in_FS_OFFSET;\n  undefined8 auStack_240 [7];\n  undefined1 auStack_208 [424];\n  long local_60 [6];\n  \n  pcVar6 = (char *)0x102653;\n  puVar3 = auStack_208;\n  uVar4 = 0x102646;\n  do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 auStack_240 [7];" type_identifier (array_declarator "auStack_240 [7]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_208 [424];" type_identifier (array_declarator "auStack_208 [424]" identifier [ number_literal ]) ;) (declaration "long local_60 [6];" (sized_type_specifier "long" long) (array_declarator "local_60 [6]" identifier [ number_literal ]) ;) (expression_statement "pcVar6 = (char *)0x102653;" (assignment_expression "pcVar6 = (char *)0x102653" identifier = (cast_expression "(char *)0x102653" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar3 = auStack_208;" (assignment_expression "puVar3 = auStack_208" identifier = identifier) ;) (expression_statement "uVar4 = 0x102646;" (assignment_expression "uVar4 = 0x102646" identifier = number_literal) ;) (do_statement "do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );" do (compound_statement "{\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  }" { (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) (expression_statement "puVar7 = puVar3;" (assignment_expression "puVar7 = puVar3" identifier = identifier) ;) (expression_statement "*(undefined8 *)(puVar7 + -8) = 0x10266d;" (assignment_expression "*(undefined8 *)(puVar7 + -8) = 0x10266d" (pointer_expression "*(undefined8 *)(puVar7 + -8)" * (cast_expression "(undefined8 *)(puVar7 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -8)" ( (binary_expression "puVar7 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "lVar5 = -1;" (assignment_expression "lVar5 = -1" identifier = number_literal) ;) (do_statement "do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "*(undefined8 *)(puVar7 + -0x10) = 0x10268c;" (assignment_expression "*(undefined8 *)(puVar7 + -0x10) = 0x10268c" (pointer_expression "*(undefined8 *)(puVar7 + -0x10)" * (cast_expression "(undefined8 *)(puVar7 + -0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar7 + -0x18) = 0x102697;" (assignment_expression "*(undefined8 *)(puVar7 + -0x18) = 0x102697" (pointer_expression "*(undefined8 *)(puVar7 + -0x18)" * (cast_expression "(undefined8 *)(puVar7 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x18)" ( (binary_expression "puVar7 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar7 + -0x20) = 0x1026b6;" (assignment_expression "*(undefined8 *)(puVar7 + -0x20) = 0x1026b6" (pointer_expression "*(undefined8 *)(puVar7 + -0x20)" * (cast_expression "(undefined8 *)(puVar7 + -0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x20)" ( (binary_expression "puVar7 + -0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pcVar6 = *(char **)(uVar8 + 0x20);" (assignment_expression "pcVar6 = *(char **)(uVar8 + 0x20)" identifier = (pointer_expression "*(char **)(uVar8 + 0x20)" * (cast_expression "(char **)(uVar8 + 0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar8 + 0x20)" ( (binary_expression "uVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = puVar7 + -0x20;" (assignment_expression "puVar3 = puVar7 + -0x20" identifier = (binary_expression "puVar7 + -0x20" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar8 + 0x28;" (assignment_expression "uVar4 = uVar8 + 0x28" identifier = (binary_expression "uVar8 + 0x28" identifier + number_literal)) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }" { (if_statement "if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }" if (parenthesized_expression "(*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)" (pointer_expression "*(long *)(puVar7 + 0x1a8)" * (cast_expression "(long *)(puVar7 + 0x1a8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x1a8)" ( (binary_expression "puVar7 + 0x1a8" identifier + number_literal) )))) != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }" { (expression_statement "*(undefined8 *)(puVar7 + -0x28) = 0x1026fc;" (assignment_expression "*(undefined8 *)(puVar7 + -0x28) = 0x1026fc" (pointer_expression "*(undefined8 *)(puVar7 + -0x28)" * (cast_expression "(undefined8 *)(puVar7 + -0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x28)" ( (binary_expression "puVar7 + -0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(puVar7 + -0x38) = 0x102714;" (assignment_expression "*(undefined8 *)(puVar7 + -0x38) = 0x102714" (pointer_expression "*(undefined8 *)(puVar7 + -0x38)" * (cast_expression "(undefined8 *)(puVar7 + -0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x38)" ( (binary_expression "puVar7 + -0x38" identifier + number_literal) )))) = number_literal) ;) (return_statement "return ZEXT816(0);" return (call_expression "ZEXT816(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })) (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar2._0_8_ = uVar8;" (assignment_expression "auVar2._0_8_ = uVar8" (field_expression "auVar2._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar2 << 0x40;" return (binary_expression "auVar2 << 0x40" identifier << number_literal) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (function_definition TYPE (parenthesized_declarator ( IDENT )) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return (binary_expression IDENT << LIT) ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (function_definition "FUN_0010261b(void)\n\n{\n  char cVar1;\n  undefined1 auVar2 [16];\n  undefined1 *puVar3;\n  ulong uVar4;\n  long lVar5;\n  char *pcVar6;\n  undefined1 *puVar7;\n  ulong uVar8;\n  long in_FS_OFFSET;\n  undefined8 auStack_240 [7];\n  undefined1 auStack_208 [424];\n  long local_60 [6];\n  \n  pcVar6 = (char *)0x102653;\n  puVar3 = auStack_208;\n  uVar4 = 0x102646;\n  do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );\n}" (type_identifier "FUN_0010261b") (parenthesized_declarator "(void)" (( "(") (identifier "void") () ")")) (compound_statement "{\n  char cVar1;\n  undefined1 auVar2 [16];\n  undefined1 *puVar3;\n  ulong uVar4;\n  long lVar5;\n  char *pcVar6;\n  undefined1 *puVar7;\n  ulong uVar8;\n  long in_FS_OFFSET;\n  undefined8 auStack_240 [7];\n  undefined1 auStack_208 [424];\n  long local_60 [6];\n  \n  pcVar6 = (char *)0x102653;\n  puVar3 = auStack_208;\n  uVar4 = 0x102646;\n  do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined1 auVar2 [16];" (type_identifier "undefined1") (array_declarator "auVar2 [16]" (identifier "auVar2") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined8 auStack_240 [7];" (type_identifier "undefined8") (array_declarator "auStack_240 [7]" (identifier "auStack_240") ([ "[") (number_literal "7") (] "]")) (; ";")) (declaration "undefined1 auStack_208 [424];" (type_identifier "undefined1") (array_declarator "auStack_208 [424]" (identifier "auStack_208") ([ "[") (number_literal "424") (] "]")) (; ";")) (declaration "long local_60 [6];" (sized_type_specifier "long" (long "long")) (array_declarator "local_60 [6]" (identifier "local_60") ([ "[") (number_literal "6") (] "]")) (; ";")) (expression_statement "pcVar6 = (char *)0x102653;" (assignment_expression "pcVar6 = (char *)0x102653" (identifier "pcVar6") (= "=") (cast_expression "(char *)0x102653" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x102653"))) (; ";")) (expression_statement "puVar3 = auStack_208;" (assignment_expression "puVar3 = auStack_208" (identifier "puVar3") (= "=") (identifier "auStack_208")) (; ";")) (expression_statement "uVar4 = 0x102646;" (assignment_expression "uVar4 = 0x102646" (identifier "uVar4") (= "=") (number_literal "0x102646")) (; ";")) (do_statement "do {\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    uVar8 = uVar4;\n    puVar7 = puVar3;\n    *(undefined8 *)(puVar7 + -8) = 0x10266d;\n    lVar5 = -1;\n    do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');\n    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;\n    *(undefined8 *)(puVar7 + -0x18) = 0x102697;\n    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;\n    pcVar6 = *(char **)(uVar8 + 0x20);\n    puVar3 = puVar7 + -0x20;\n    uVar4 = uVar8 + 0x28;\n    if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }\n  }" ({ "{") (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" (identifier "uVar8") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar7 = puVar3;" (assignment_expression "puVar7 = puVar3" (identifier "puVar7") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*(undefined8 *)(puVar7 + -8) = 0x10266d;" (assignment_expression "*(undefined8 *)(puVar7 + -8) = 0x10266d" (pointer_expression "*(undefined8 *)(puVar7 + -8)" (* "*") (cast_expression "(undefined8 *)(puVar7 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -8)" (( "(") (binary_expression "puVar7 + -8" (identifier "puVar7") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x10266d")) (; ";")) (expression_statement "lVar5 = -1;" (assignment_expression "lVar5 = -1" (identifier "lVar5") (= "=") (number_literal "-1")) (; ";")) (do_statement "do {\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    } while (cVar1 != '\0');" (do "do") (compound_statement "{\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + 1;\n    }" ({ "{") (if_statement "if (lVar5 == 0) break;" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + -1" (identifier "lVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" (identifier "cVar1") (= "=") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) (; ";")) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + 1" (identifier "pcVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "*(undefined8 *)(puVar7 + -0x10) = 0x10268c;" (assignment_expression "*(undefined8 *)(puVar7 + -0x10) = 0x10268c" (pointer_expression "*(undefined8 *)(puVar7 + -0x10)" (* "*") (cast_expression "(undefined8 *)(puVar7 + -0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x10)" (( "(") (binary_expression "puVar7 + -0x10" (identifier "puVar7") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0x10268c")) (; ";")) (expression_statement "*(undefined8 *)(puVar7 + -0x18) = 0x102697;" (assignment_expression "*(undefined8 *)(puVar7 + -0x18) = 0x102697" (pointer_expression "*(undefined8 *)(puVar7 + -0x18)" (* "*") (cast_expression "(undefined8 *)(puVar7 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x18)" (( "(") (binary_expression "puVar7 + -0x18" (identifier "puVar7") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x102697")) (; ";")) (expression_statement "*(undefined8 *)(puVar7 + -0x20) = 0x1026b6;" (assignment_expression "*(undefined8 *)(puVar7 + -0x20) = 0x1026b6" (pointer_expression "*(undefined8 *)(puVar7 + -0x20)" (* "*") (cast_expression "(undefined8 *)(puVar7 + -0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x20)" (( "(") (binary_expression "puVar7 + -0x20" (identifier "puVar7") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (number_literal "0x1026b6")) (; ";")) (expression_statement "pcVar6 = *(char **)(uVar8 + 0x20);" (assignment_expression "pcVar6 = *(char **)(uVar8 + 0x20)" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)(uVar8 + 0x20)" (* "*") (cast_expression "(char **)(uVar8 + 0x20)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar8 + 0x20)" (( "(") (binary_expression "uVar8 + 0x20" (identifier "uVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "puVar3 = puVar7 + -0x20;" (assignment_expression "puVar3 = puVar7 + -0x20" (identifier "puVar3") (= "=") (binary_expression "puVar7 + -0x20" (identifier "puVar7") (+ "+") (number_literal "-0x20"))) (; ";")) (expression_statement "uVar4 = uVar8 + 0x28;" (assignment_expression "uVar4 = uVar8 + 0x28" (identifier "uVar4") (= "=") (binary_expression "uVar8 + 0x28" (identifier "uVar8") (+ "+") (number_literal "0x28"))) (; ";")) (if_statement "if (pcVar6 == (char *)0x0) {\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }" (if "if") (parenthesized_expression "(pcVar6 == (char *)0x0)" (( "(") (binary_expression "pcVar6 == (char *)0x0" (identifier "pcVar6") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = uVar8;\n      return auVar2 << 0x40;\n    }" ({ "{") (if_statement "if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }" (if "if") (parenthesized_expression "(*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)" (pointer_expression "*(long *)(puVar7 + 0x1a8)" (* "*") (cast_expression "(long *)(puVar7 + 0x1a8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 0x1a8)" (( "(") (binary_expression "puVar7 + 0x1a8" (identifier "puVar7") (+ "+") (number_literal "0x1a8")) () ")")))) (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;\n        *(undefined8 *)(puVar7 + -0x38) = 0x102714;\n        return ZEXT816(0);\n      }" ({ "{") (expression_statement "*(undefined8 *)(puVar7 + -0x28) = 0x1026fc;" (assignment_expression "*(undefined8 *)(puVar7 + -0x28) = 0x1026fc" (pointer_expression "*(undefined8 *)(puVar7 + -0x28)" (* "*") (cast_expression "(undefined8 *)(puVar7 + -0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x28)" (( "(") (binary_expression "puVar7 + -0x28" (identifier "puVar7") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (number_literal "0x1026fc")) (; ";")) (expression_statement "*(undefined8 *)(puVar7 + -0x38) = 0x102714;" (assignment_expression "*(undefined8 *)(puVar7 + -0x38) = 0x102714" (pointer_expression "*(undefined8 *)(puVar7 + -0x38)" (* "*") (cast_expression "(undefined8 *)(puVar7 + -0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x38)" (( "(") (binary_expression "puVar7 + -0x38" (identifier "puVar7") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (number_literal "0x102714")) (; ";")) (return_statement "return ZEXT816(0);" (return "return") (call_expression "ZEXT816(0)" (identifier "ZEXT816") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}"))) (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" (identifier "auVar2") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar2._0_8_ = uVar8;" (assignment_expression "auVar2._0_8_ = uVar8" (field_expression "auVar2._0_8_" (identifier "auVar2") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar8")) (; ";")) (return_statement "return auVar2 << 0x40;" (return "return") (binary_expression "auVar2 << 0x40" (identifier "auVar2") (<< "<<") (number_literal "0x40")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(void)

{
  type_1 var_5;
  long var_13;
  int var_9;
  type_2 var_3;
  type_1 *var_12;
  long var_11;
  type_1 *var_4;
  int var_10;
  long var_1;
  type_3 bVar8;
  type_4 md;
  type_1 tmp [32];
  
  bVar8 = 0;
  var_13 = *(long *)(var_1 + 0x28);
  var_10 = 0;
  var_12 = "";
  var_11 = 0x102a08;
  do {
    var_2(&md);
    var_3 = 0xffffffffffffffff;
    var_4 = var_12;
    do {
      if (var_3 == 0) break;
      var_3 = var_3 - 1;
      var_5 = *var_4;
      var_4 = var_4 + (type_2)bVar8 * -2 + 1;
    } while (var_5 != '\0');
    var_6(&md,var_12,~var_3 - 1);
    var_7(&md,tmp);
    var_9 = var_8(tmp,0x20,var_11,0x20,"BLAKE2B_256",var_10);
    if (var_9 != 0) {
      var_10 = 5;
      goto LAB_001026d2;
    }
    var_10 = var_10 + 1;
    var_12 = *(type_1 **)(var_11 + 0x20);
    var_11 = var_11 + 0x28;
    if (var_12 == (type_1 *)0x0) {
      var_10 = 0;
LAB_001026d2:
      if (var_13 == *(long *)(var_1 + 0x28)) {
        return var_10;
      }
                    /* WARNING: Subroutine does not return */
      var_14();
    }
  } while( true );
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (function_definition type: (type_identifier) declarator: (parenthesized_declarator (identifier)) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (binary_expression left: (identifier) right: (number_literal)))))) condition: (parenthesized_expression (true))))))

/* WARNING: Removing unreachable block (ram,0x001026cd) */

undefined1  [16] MASKED(void)

{
  char cVar1;
  undefined1 auVar2 [16];
  undefined1 *puVar3;
  ulong uVar4;
  long lVar5;
  char *pcVar6;
  undefined1 *puVar7;
  ulong uVar8;
  long in_FS_OFFSET;
  undefined8 auStack_240 [7];
  undefined1 auStack_208 [424];
  long local_60 [6];
  
  pcVar6 = (char *)0x102653;
  puVar3 = auStack_208;
  uVar4 = 0x102646;
  do {
    uVar8 = uVar4;
    puVar7 = puVar3;
    *(undefined8 *)(puVar7 + -8) = 0x10266d;
    lVar5 = -1;
    do {
      if (lVar5 == 0) break;
      lVar5 = lVar5 + -1;
      cVar1 = *pcVar6;
      pcVar6 = pcVar6 + 1;
    } while (cVar1 != '\0');
    *(undefined8 *)(puVar7 + -0x10) = 0x10268c;
    *(undefined8 *)(puVar7 + -0x18) = 0x102697;
    *(undefined8 *)(puVar7 + -0x20) = 0x1026b6;
    pcVar6 = *(char **)(uVar8 + 0x20);
    puVar3 = puVar7 + -0x20;
    uVar4 = uVar8 + 0x28;
    if (pcVar6 == (char *)0x0) {
      if (*(long *)(puVar7 + 0x1a8) != *(long *)(in_FS_OFFSET + 0x28)) {
        *(undefined8 *)(puVar7 + -0x28) = 0x1026fc;
        *(undefined8 *)(puVar7 + -0x38) = 0x102714;
        return ZEXT816(0);
      }
      auVar2._8_8_ = 0;
      auVar2._0_8_ = uVar8;
      return auVar2 << 0x40;
    }
  } while( true );
}

