
/* WARNING: Unknown calling convention */

bfd_boolean check_gnu_debuglink(char *pathname,void *crc_pointer)

{
  byte *__ptr;
  byte bVar1;
  void *file;
  FILE *__stream;
  size_t sVar2;
  char *pcVar3;
  byte *pbVar4;
  uint uVar5;
  bfd_boolean bVar6;
  uint uVar7;
  int unaff_EDI;
  
  bVar6 = 0;
  __x86_get_pc_thunk_di();
  file = open_debug_file(pathname);
  if (file != (void *)0x0) {
    __ptr = (byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3);
    __stream = fopen64(pathname,(char *)(unaff_EDI + 0x36c70));
    if (__stream == (FILE *)0x0) {
      close_debug_file(file);
      pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);
      warn(pcVar3,pathname);
    }
    else {
      uVar7 = 0;
      while( true ) {
        sVar2 = fread(__ptr,1,0x2000,__stream);
        if (sVar2 == 0) break;
        uVar5 = ~uVar7;
        if (__ptr < __ptr + sVar2) {
          pbVar4 = __ptr;
          do {
            bVar1 = *pbVar4;
            pbVar4 = pbVar4 + 1;
            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);
          } while (__ptr + sVar2 != pbVar4);
          uVar7 = ~uVar5;
        }
      }
      bVar6 = 1;
      fclose(__stream);
                    /* WARNING: Load size is inaccurate */
      if (*crc_pointer != uVar7) {
        bVar6 = 0;
        close_debug_file(file);
        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);
        warn(pcVar3,pathname);
      }
    }
  }
  return bVar6;
}



undefined4 FUN_0001c980(char *param_1,uint *param_2)

{
  byte *__ptr;
  byte bVar1;
  int iVar2;
  FILE *__stream;
  size_t sVar3;
  undefined4 uVar4;
  byte *pbVar5;
  uint uVar6;
  undefined4 uVar7;
  uint uVar8;
  int unaff_EDI;
  
  uVar7 = 0;
  FUN_0001c7a2();
  iVar2 = FUN_0001c750(param_1);
  if (iVar2 != 0) {
    __ptr = &DAT_00057f17 + unaff_EDI;
    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));
    if (__stream == (FILE *)0x0) {
      FUN_0001c730(iVar2);
      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);
      warn(uVar4,param_1);
    }
    else {
      uVar8 = 0;
      while( true ) {
        sVar3 = fread(__ptr,1,0x2000,__stream);
        if (sVar3 == 0) break;
        uVar6 = ~uVar8;
        if (__ptr < __ptr + sVar3) {
          pbVar5 = __ptr;
          do {
            bVar1 = *pbVar5;
            pbVar5 = pbVar5 + 1;
            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);
          } while (__ptr + sVar3 != pbVar5);
          uVar8 = ~uVar6;
        }
      }
      uVar7 = 1;
      fclose(__stream);
      if (*param_2 != uVar8) {
        uVar7 = 0;
        FUN_0001c730(iVar2);
        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);
        warn(uVar4,param_1);
      }
    }
  }
  return uVar7;
}


PUSH EBP
XOR EBP,EBP
PUSH EDI
CALL 0x0001c7a2
ADD EDI,0x56677
PUSH ESI
PUSH EBX
SUB ESP,0x28
MOV dword ptr [ESP + 0x10],EDI
MOV EBX,EDI
PUSH dword ptr [ESP + 0x3c]
CALL 0x0001c750
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001ca8e
SUB ESP,0x8
LEA EAX,[EDI + 0xfffe05f9]
XOR ESI,ESI
PUSH EAX
LEA EDI,[EDI + 0x18a0]
PUSH dword ptr [ESP + 0x3c]
CALL 0x00014280
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001ca98
LEA ESI,[ESI]
PUSH dword ptr [ESP + 0x8]
PUSH 0x2000
PUSH 0x1
PUSH EDI
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00014310
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001ca38
MOV EDX,ESI
ADD EAX,EDI
NOT EDX
CMP EAX,EDI
JBE 0x0001c9e0
MOV ESI,dword ptr [ESP + 0x4]
MOV ECX,EDI
LEA ESI,[ESI + 0xfffe3d00]
LEA ESI,[ESI]
MOVZX EBX,byte ptr [ECX]
ADD ECX,0x1
XOR EBX,EDX
SHR EDX,0x8
MOVZX EBX,BL
XOR EDX,dword ptr [ESI + EBX*0x4]
CMP EAX,ECX
JNZ 0x0001ca18
MOV ESI,EDX
NOT ESI
JMP 0x0001c9e0
SUB ESP,0xc
MOV EBP,0x1
PUSH dword ptr [ESP + 0x14]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00014190
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x34]
CMP dword ptr [EAX],ESI
JZ 0x0001ca8e
SUB ESP,0xc
XOR EBP,EBP
PUSH dword ptr [ESP + 0x18]
MOV EDI,dword ptr [ESP + 0x14]
MOV EBX,EDI
CALL 0x0001c730
ADD ESP,0xc
LEA EAX,[EDI + 0xfffdcf88]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141f0
POP EDX
POP ECX
PUSH dword ptr [ESP + 0x38]
PUSH EAX
CALL 0x00048d70
ADD ESP,0x10
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
MOV EDI,dword ptr [ESP + 0x14]
MOV EBX,EDI
CALL 0x0001c730
ADD ESP,0xc
LEA EAX,[EDI + 0xfffdcf58]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141f0
POP ESI
POP EDI
PUSH dword ptr [ESP + 0x38]
PUSH EAX
CALL 0x00048d70
ADD ESP,0x10
JMP 0x0001ca8e
(translation_unit "undefined4 FUN_0001c980(char *param_1,uint *param_2)\n\n{\n  byte *__ptr;\n  byte bVar1;\n  int iVar2;\n  FILE *__stream;\n  size_t sVar3;\n  undefined4 uVar4;\n  byte *pbVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int unaff_EDI;\n  \n  uVar7 = 0;\n  FUN_0001c7a2();\n  iVar2 = FUN_0001c750(param_1);\n  if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }\n  return uVar7;\n}\n\n" (function_definition "undefined4 FUN_0001c980(char *param_1,uint *param_2)\n\n{\n  byte *__ptr;\n  byte bVar1;\n  int iVar2;\n  FILE *__stream;\n  size_t sVar3;\n  undefined4 uVar4;\n  byte *pbVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int unaff_EDI;\n  \n  uVar7 = 0;\n  FUN_0001c7a2();\n  iVar2 = FUN_0001c750(param_1);\n  if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }\n  return uVar7;\n}" type_identifier (function_declarator "FUN_0001c980(char *param_1,uint *param_2)" identifier (parameter_list "(char *param_1,uint *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte *__ptr;\n  byte bVar1;\n  int iVar2;\n  FILE *__stream;\n  size_t sVar3;\n  undefined4 uVar4;\n  byte *pbVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int unaff_EDI;\n  \n  uVar7 = 0;\n  FUN_0001c7a2();\n  iVar2 = FUN_0001c750(param_1);\n  if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }\n  return uVar7;\n}" { (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "FUN_0001c7a2();" (call_expression "FUN_0001c7a2()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = FUN_0001c750(param_1);" (assignment_expression "iVar2 = FUN_0001c750(param_1)" identifier = (call_expression "FUN_0001c750(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }" { (expression_statement "__ptr = &DAT_00057f17 + unaff_EDI;" (assignment_expression "__ptr = &DAT_00057f17 + unaff_EDI" identifier = (binary_expression "&DAT_00057f17 + unaff_EDI" (pointer_expression "&DAT_00057f17" & identifier) + identifier)) ;) (expression_statement "__stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));" (assignment_expression "__stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70))" identifier = (call_expression "fopen64(param_1,(char *)(unaff_EDI + 0x36c70))" identifier (argument_list "(param_1,(char *)(unaff_EDI + 0x36c70))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x36c70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x36c70)" ( (binary_expression "unaff_EDI + 0x36c70" identifier + number_literal) ))) )))) ;) (if_statement "if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" if (parenthesized_expression "(__stream == (FILE *)0x0)" ( (binary_expression "__stream == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }" { (expression_statement "FUN_0001c730(iVar2);" (call_expression "FUN_0001c730(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);" (assignment_expression "uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5)" identifier = (call_expression "dcgettext(0,unaff_EDI + 0x335cf,5)" identifier (argument_list "(0,unaff_EDI + 0x335cf,5)" ( number_literal , (binary_expression "unaff_EDI + 0x335cf" identifier + number_literal) , number_literal )))) ;) (expression_statement "warn(uVar4,param_1);" (call_expression "warn(uVar4,param_1)" identifier (argument_list "(uVar4,param_1)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" else (compound_statement "{\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }" { (expression_statement "sVar3 = fread(__ptr,1,0x2000,__stream);" (assignment_expression "sVar3 = fread(__ptr,1,0x2000,__stream)" identifier = (call_expression "fread(__ptr,1,0x2000,__stream)" identifier (argument_list "(__ptr,1,0x2000,__stream)" ( identifier , number_literal , number_literal , identifier )))) ;) (if_statement "if (sVar3 == 0) break;" if (parenthesized_expression "(sVar3 == 0)" ( (binary_expression "sVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = ~uVar8;" (assignment_expression "uVar6 = ~uVar8" identifier = (unary_expression "~uVar8" ~ identifier)) ;) (if_statement "if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }" if (parenthesized_expression "(__ptr < __ptr + sVar3)" ( (binary_expression "__ptr < __ptr + sVar3" identifier < (binary_expression "__ptr + sVar3" identifier + identifier)) )) (compound_statement "{\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }" { (expression_statement "pbVar5 = __ptr;" (assignment_expression "pbVar5 = __ptr" identifier = identifier) ;) (do_statement "do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);" do (compound_statement "{\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          }" { (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);" (assignment_expression "uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" identifier = (binary_expression "uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" (binary_expression "uVar6 >> 8" identifier >> number_literal) ^ (pointer_expression "*(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" ( (binary_expression "unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4" (binary_expression "unaff_EDI + 0x3a377" identifier + number_literal) + (binary_expression "((bVar1 ^ uVar6) & 0xff) * 4" (parenthesized_expression "((bVar1 ^ uVar6) & 0xff)" ( (binary_expression "(bVar1 ^ uVar6) & 0xff" (parenthesized_expression "(bVar1 ^ uVar6)" ( (binary_expression "bVar1 ^ uVar6" identifier ^ identifier) )) & number_literal) )) * number_literal)) )))))) ;) }) while (parenthesized_expression "(__ptr + sVar3 != pbVar5)" ( (binary_expression "__ptr + sVar3 != pbVar5" (binary_expression "__ptr + sVar3" identifier + identifier) != identifier) )) ;) (expression_statement "uVar8 = ~uVar6;" (assignment_expression "uVar8 = ~uVar6" identifier = (unary_expression "~uVar6" ~ identifier)) ;) })) })) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) (if_statement "if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }" if (parenthesized_expression "(*param_2 != uVar8)" ( (binary_expression "*param_2 != uVar8" (pointer_expression "*param_2" * identifier) != identifier) )) (compound_statement "{\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "FUN_0001c730(iVar2);" (call_expression "FUN_0001c730(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);" (assignment_expression "uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5)" identifier = (call_expression "dcgettext(0,unaff_EDI + 0x335ff,5)" identifier (argument_list "(0,unaff_EDI + 0x335ff,5)" ( number_literal , (binary_expression "unaff_EDI + 0x335ff" identifier + number_literal) , number_literal )))) ;) (expression_statement "warn(uVar4,param_1);" (call_expression "warn(uVar4,param_1)" identifier (argument_list "(uVar4,param_1)" ( identifier , identifier ))) ;) })) }))) })) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nbfd_boolean check_gnu_debuglink(char *pathname,void *crc_pointer)\n\n{\n  byte *__ptr;\n  byte bVar1;\n  void *file;\n  FILE *__stream;\n  size_t sVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  uint uVar5;\n  bfd_boolean bVar6;\n  uint uVar7;\n  int unaff_EDI;\n  \n  bVar6 = 0;\n  __x86_get_pc_thunk_di();\n  file = open_debug_file(pathname);\n  if (file != (void *)0x0) {\n    __ptr = (byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3);\n    __stream = fopen64(pathname,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      close_debug_file(file);\n      pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(pcVar3,pathname);\n    }\n    else {\n      uVar7 = 0;\n      while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }\n      bVar6 = 1;\n      fclose(__stream);\n                    /* WARNING: Load size is inaccurate */\n      if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }\n    }\n  }\n  return bVar6;\n}\n\n" comment (function_definition "bfd_boolean check_gnu_debuglink(char *pathname,void *crc_pointer)\n\n{\n  byte *__ptr;\n  byte bVar1;\n  void *file;\n  FILE *__stream;\n  size_t sVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  uint uVar5;\n  bfd_boolean bVar6;\n  uint uVar7;\n  int unaff_EDI;\n  \n  bVar6 = 0;\n  __x86_get_pc_thunk_di();\n  file = open_debug_file(pathname);\n  if (file != (void *)0x0) {\n    __ptr = (byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3);\n    __stream = fopen64(pathname,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      close_debug_file(file);\n      pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(pcVar3,pathname);\n    }\n    else {\n      uVar7 = 0;\n      while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }\n      bVar6 = 1;\n      fclose(__stream);\n                    /* WARNING: Load size is inaccurate */\n      if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }\n    }\n  }\n  return bVar6;\n}" type_identifier (function_declarator "check_gnu_debuglink(char *pathname,void *crc_pointer)" identifier (parameter_list "(char *pathname,void *crc_pointer)" ( (parameter_declaration "char *pathname" primitive_type (pointer_declarator "*pathname" * identifier)) , (parameter_declaration "void *crc_pointer" primitive_type (pointer_declarator "*crc_pointer" * identifier)) ))) (compound_statement "{\n  byte *__ptr;\n  byte bVar1;\n  void *file;\n  FILE *__stream;\n  size_t sVar2;\n  char *pcVar3;\n  byte *pbVar4;\n  uint uVar5;\n  bfd_boolean bVar6;\n  uint uVar7;\n  int unaff_EDI;\n  \n  bVar6 = 0;\n  __x86_get_pc_thunk_di();\n  file = open_debug_file(pathname);\n  if (file != (void *)0x0) {\n    __ptr = (byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3);\n    __stream = fopen64(pathname,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      close_debug_file(file);\n      pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(pcVar3,pathname);\n    }\n    else {\n      uVar7 = 0;\n      while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }\n      bVar6 = 1;\n      fclose(__stream);\n                    /* WARNING: Load size is inaccurate */\n      if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }\n    }\n  }\n  return bVar6;\n}" { (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "void *file;" primitive_type (pointer_declarator "*file" * identifier) ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "bfd_boolean bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "file = open_debug_file(pathname);" (assignment_expression "file = open_debug_file(pathname)" identifier = (call_expression "open_debug_file(pathname)" identifier (argument_list "(pathname)" ( identifier )))) ;) (if_statement "if (file != (void *)0x0) {\n    __ptr = (byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3);\n    __stream = fopen64(pathname,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      close_debug_file(file);\n      pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(pcVar3,pathname);\n    }\n    else {\n      uVar7 = 0;\n      while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }\n      bVar6 = 1;\n      fclose(__stream);\n                    /* WARNING: Load size is inaccurate */\n      if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }\n    }\n  }" if (parenthesized_expression "(file != (void *)0x0)" ( (binary_expression "file != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __ptr = (byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3);\n    __stream = fopen64(pathname,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      close_debug_file(file);\n      pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(pcVar3,pathname);\n    }\n    else {\n      uVar7 = 0;\n      while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }\n      bVar6 = 1;\n      fclose(__stream);\n                    /* WARNING: Load size is inaccurate */\n      if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }\n    }\n  }" { (expression_statement "__ptr = (byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3);" (assignment_expression "__ptr = (byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3)" identifier = (cast_expression "(byte *)((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3)" ( (binary_expression "(int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI + 3" (binary_expression "(int)&switchD_0003bc05::switchdataD_00057f14 + unaff_EDI" (cast_expression "(int)&switchD_0003bc05" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&switchD_0003bc05" & identifier)) (ERROR "::switchdataD_00057f14" : : identifier) + identifier) + number_literal) )))) ;) (expression_statement "__stream = fopen64(pathname,(char *)(unaff_EDI + 0x36c70));" (assignment_expression "__stream = fopen64(pathname,(char *)(unaff_EDI + 0x36c70))" identifier = (call_expression "fopen64(pathname,(char *)(unaff_EDI + 0x36c70))" identifier (argument_list "(pathname,(char *)(unaff_EDI + 0x36c70))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x36c70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x36c70)" ( (binary_expression "unaff_EDI + 0x36c70" identifier + number_literal) ))) )))) ;) (if_statement "if (__stream == (FILE *)0x0) {\n      close_debug_file(file);\n      pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(pcVar3,pathname);\n    }\n    else {\n      uVar7 = 0;\n      while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }\n      bVar6 = 1;\n      fclose(__stream);\n                    /* WARNING: Load size is inaccurate */\n      if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }\n    }" if (parenthesized_expression "(__stream == (FILE *)0x0)" ( (binary_expression "__stream == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      close_debug_file(file);\n      pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(pcVar3,pathname);\n    }" { (expression_statement "close_debug_file(file);" (call_expression "close_debug_file(file)" identifier (argument_list "(file)" ( identifier ))) ;) (expression_statement "pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5);" (assignment_expression "pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335cf,5)" identifier = (cast_expression "(char *)dcgettext(0,unaff_EDI + 0x335cf,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,unaff_EDI + 0x335cf,5)" identifier (argument_list "(0,unaff_EDI + 0x335cf,5)" ( number_literal , (binary_expression "unaff_EDI + 0x335cf" identifier + number_literal) , number_literal ))))) ;) (expression_statement "warn(pcVar3,pathname);" (call_expression "warn(pcVar3,pathname)" identifier (argument_list "(pcVar3,pathname)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      uVar7 = 0;\n      while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }\n      bVar6 = 1;\n      fclose(__stream);\n                    /* WARNING: Load size is inaccurate */\n      if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }\n    }" else (compound_statement "{\n      uVar7 = 0;\n      while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }\n      bVar6 = 1;\n      fclose(__stream);\n                    /* WARNING: Load size is inaccurate */\n      if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }\n    }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        sVar2 = fread(__ptr,1,0x2000,__stream);\n        if (sVar2 == 0) break;\n        uVar5 = ~uVar7;\n        if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }\n      }" { (expression_statement "sVar2 = fread(__ptr,1,0x2000,__stream);" (assignment_expression "sVar2 = fread(__ptr,1,0x2000,__stream)" identifier = (call_expression "fread(__ptr,1,0x2000,__stream)" identifier (argument_list "(__ptr,1,0x2000,__stream)" ( identifier , number_literal , number_literal , identifier )))) ;) (if_statement "if (sVar2 == 0) break;" if (parenthesized_expression "(sVar2 == 0)" ( (binary_expression "sVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = ~uVar7;" (assignment_expression "uVar5 = ~uVar7" identifier = (unary_expression "~uVar7" ~ identifier)) ;) (if_statement "if (__ptr < __ptr + sVar2) {\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }" if (parenthesized_expression "(__ptr < __ptr + sVar2)" ( (binary_expression "__ptr < __ptr + sVar2" identifier < (binary_expression "__ptr + sVar2" identifier + identifier)) )) (compound_statement "{\n          pbVar4 = __ptr;\n          do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);\n          uVar7 = ~uVar5;\n        }" { (expression_statement "pbVar4 = __ptr;" (assignment_expression "pbVar4 = __ptr" identifier = identifier) ;) (do_statement "do {\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          } while (__ptr + sVar2 != pbVar4);" do (compound_statement "{\n            bVar1 = *pbVar4;\n            pbVar4 = pbVar4 + 1;\n            uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);\n          }" { (expression_statement "bVar1 = *pbVar4;" (assignment_expression "bVar1 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4);" (assignment_expression "uVar5 = uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4)" identifier = (binary_expression "uVar5 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4)" (binary_expression "uVar5 >> 8" identifier >> number_literal) ^ (pointer_expression "*(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4)" ( (binary_expression "unaff_EDI + 0x3a377 + ((bVar1 ^ uVar5) & 0xff) * 4" (binary_expression "unaff_EDI + 0x3a377" identifier + number_literal) + (binary_expression "((bVar1 ^ uVar5) & 0xff) * 4" (parenthesized_expression "((bVar1 ^ uVar5) & 0xff)" ( (binary_expression "(bVar1 ^ uVar5) & 0xff" (parenthesized_expression "(bVar1 ^ uVar5)" ( (binary_expression "bVar1 ^ uVar5" identifier ^ identifier) )) & number_literal) )) * number_literal)) )))))) ;) }) while (parenthesized_expression "(__ptr + sVar2 != pbVar4)" ( (binary_expression "__ptr + sVar2 != pbVar4" (binary_expression "__ptr + sVar2" identifier + identifier) != identifier) )) ;) (expression_statement "uVar7 = ~uVar5;" (assignment_expression "uVar7 = ~uVar5" identifier = (unary_expression "~uVar5" ~ identifier)) ;) })) })) (expression_statement "bVar6 = 1;" (assignment_expression "bVar6 = 1" identifier = number_literal) ;) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) comment (if_statement "if (*crc_pointer != uVar7) {\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }" if (parenthesized_expression "(*crc_pointer != uVar7)" ( (binary_expression "*crc_pointer != uVar7" (pointer_expression "*crc_pointer" * identifier) != identifier) )) (compound_statement "{\n        bVar6 = 0;\n        close_debug_file(file);\n        pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(pcVar3,pathname);\n      }" { (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "close_debug_file(file);" (call_expression "close_debug_file(file)" identifier (argument_list "(file)" ( identifier ))) ;) (expression_statement "pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5);" (assignment_expression "pcVar3 = (char *)dcgettext(0,unaff_EDI + 0x335ff,5)" identifier = (cast_expression "(char *)dcgettext(0,unaff_EDI + 0x335ff,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,unaff_EDI + 0x335ff,5)" identifier (argument_list "(0,unaff_EDI + 0x335ff,5)" ( number_literal , (binary_expression "unaff_EDI + 0x335ff" identifier + number_literal) , number_literal ))))) ;) (expression_statement "warn(pcVar3,pathname);" (call_expression "warn(pcVar3,pathname)" identifier (argument_list "(pcVar3,pathname)" ( identifier , identifier ))) ;) })) }))) })) (return_statement "return bVar6;" return identifier ;) })))
(translation_unit "undefined4 FUN_0001c980(char *param_1,uint *param_2)\n\n{\n  byte *__ptr;\n  byte bVar1;\n  int iVar2;\n  FILE *__stream;\n  size_t sVar3;\n  undefined4 uVar4;\n  byte *pbVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int unaff_EDI;\n  \n  uVar7 = 0;\n  FUN_0001c7a2();\n  iVar2 = FUN_0001c750(param_1);\n  if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }\n  return uVar7;\n}\n\n" (function_definition "undefined4 FUN_0001c980(char *param_1,uint *param_2)\n\n{\n  byte *__ptr;\n  byte bVar1;\n  int iVar2;\n  FILE *__stream;\n  size_t sVar3;\n  undefined4 uVar4;\n  byte *pbVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int unaff_EDI;\n  \n  uVar7 = 0;\n  FUN_0001c7a2();\n  iVar2 = FUN_0001c750(param_1);\n  if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }\n  return uVar7;\n}" type_identifier (function_declarator "FUN_0001c980(char *param_1,uint *param_2)" identifier (parameter_list "(char *param_1,uint *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte *__ptr;\n  byte bVar1;\n  int iVar2;\n  FILE *__stream;\n  size_t sVar3;\n  undefined4 uVar4;\n  byte *pbVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int unaff_EDI;\n  \n  uVar7 = 0;\n  FUN_0001c7a2();\n  iVar2 = FUN_0001c750(param_1);\n  if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }\n  return uVar7;\n}" { (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "FUN_0001c7a2();" (call_expression "FUN_0001c7a2()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = FUN_0001c750(param_1);" (assignment_expression "iVar2 = FUN_0001c750(param_1)" identifier = (call_expression "FUN_0001c750(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }" { (expression_statement "__ptr = &DAT_00057f17 + unaff_EDI;" (assignment_expression "__ptr = &DAT_00057f17 + unaff_EDI" identifier = (binary_expression "&DAT_00057f17 + unaff_EDI" (pointer_expression "&DAT_00057f17" & identifier) + identifier)) ;) (expression_statement "__stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));" (assignment_expression "__stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70))" identifier = (call_expression "fopen64(param_1,(char *)(unaff_EDI + 0x36c70))" identifier (argument_list "(param_1,(char *)(unaff_EDI + 0x36c70))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x36c70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x36c70)" ( (binary_expression "unaff_EDI + 0x36c70" identifier + number_literal) ))) )))) ;) (if_statement "if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" if (parenthesized_expression "(__stream == (FILE *)0x0)" ( (binary_expression "__stream == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }" { (expression_statement "FUN_0001c730(iVar2);" (call_expression "FUN_0001c730(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);" (assignment_expression "uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5)" identifier = (call_expression "dcgettext(0,unaff_EDI + 0x335cf,5)" identifier (argument_list "(0,unaff_EDI + 0x335cf,5)" ( number_literal , (binary_expression "unaff_EDI + 0x335cf" identifier + number_literal) , number_literal )))) ;) (expression_statement "warn(uVar4,param_1);" (call_expression "warn(uVar4,param_1)" identifier (argument_list "(uVar4,param_1)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" else (compound_statement "{\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }" { (expression_statement "sVar3 = fread(__ptr,1,0x2000,__stream);" (assignment_expression "sVar3 = fread(__ptr,1,0x2000,__stream)" identifier = (call_expression "fread(__ptr,1,0x2000,__stream)" identifier (argument_list "(__ptr,1,0x2000,__stream)" ( identifier , number_literal , number_literal , identifier )))) ;) (if_statement "if (sVar3 == 0) break;" if (parenthesized_expression "(sVar3 == 0)" ( (binary_expression "sVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = ~uVar8;" (assignment_expression "uVar6 = ~uVar8" identifier = (unary_expression "~uVar8" ~ identifier)) ;) (if_statement "if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }" if (parenthesized_expression "(__ptr < __ptr + sVar3)" ( (binary_expression "__ptr < __ptr + sVar3" identifier < (binary_expression "__ptr + sVar3" identifier + identifier)) )) (compound_statement "{\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }" { (expression_statement "pbVar5 = __ptr;" (assignment_expression "pbVar5 = __ptr" identifier = identifier) ;) (do_statement "do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);" do (compound_statement "{\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          }" { (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);" (assignment_expression "uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" identifier = (binary_expression "uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" (binary_expression "uVar6 >> 8" identifier >> number_literal) ^ (pointer_expression "*(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" ( (binary_expression "unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4" (binary_expression "unaff_EDI + 0x3a377" identifier + number_literal) + (binary_expression "((bVar1 ^ uVar6) & 0xff) * 4" (parenthesized_expression "((bVar1 ^ uVar6) & 0xff)" ( (binary_expression "(bVar1 ^ uVar6) & 0xff" (parenthesized_expression "(bVar1 ^ uVar6)" ( (binary_expression "bVar1 ^ uVar6" identifier ^ identifier) )) & number_literal) )) * number_literal)) )))))) ;) }) while (parenthesized_expression "(__ptr + sVar3 != pbVar5)" ( (binary_expression "__ptr + sVar3 != pbVar5" (binary_expression "__ptr + sVar3" identifier + identifier) != identifier) )) ;) (expression_statement "uVar8 = ~uVar6;" (assignment_expression "uVar8 = ~uVar6" identifier = (unary_expression "~uVar6" ~ identifier)) ;) })) })) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) (if_statement "if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }" if (parenthesized_expression "(*param_2 != uVar8)" ( (binary_expression "*param_2 != uVar8" (pointer_expression "*param_2" * identifier) != identifier) )) (compound_statement "{\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "FUN_0001c730(iVar2);" (call_expression "FUN_0001c730(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);" (assignment_expression "uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5)" identifier = (call_expression "dcgettext(0,unaff_EDI + 0x335ff,5)" identifier (argument_list "(0,unaff_EDI + 0x335ff,5)" ( number_literal , (binary_expression "unaff_EDI + 0x335ff" identifier + number_literal) , number_literal )))) ;) (expression_statement "warn(uVar4,param_1);" (call_expression "warn(uVar4,param_1)" identifier (argument_list "(uVar4,param_1)" ( identifier , identifier ))) ;) })) }))) })) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )))) ;) (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 ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (unary_expression ~ IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ IDENT) )) & LIT) )) * LIT)) )))))) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) }))) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_0001c980(char *param_1,uint *param_2)\n\n{\n  byte *__ptr;\n  byte bVar1;\n  int iVar2;\n  FILE *__stream;\n  size_t sVar3;\n  undefined4 uVar4;\n  byte *pbVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int unaff_EDI;\n  \n  uVar7 = 0;\n  FUN_0001c7a2();\n  iVar2 = FUN_0001c750(param_1);\n  if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }\n  return uVar7;\n}" (type_identifier "undefined4") (function_declarator "FUN_0001c980(char *param_1,uint *param_2)" (identifier "FUN_0001c980") (parameter_list "(char *param_1,uint *param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte *__ptr;\n  byte bVar1;\n  int iVar2;\n  FILE *__stream;\n  size_t sVar3;\n  undefined4 uVar4;\n  byte *pbVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int unaff_EDI;\n  \n  uVar7 = 0;\n  FUN_0001c7a2();\n  iVar2 = FUN_0001c750(param_1);\n  if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }\n  return uVar7;\n}" ({ "{") (declaration "byte *__ptr;" (type_identifier "byte") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "FILE *__stream;" (type_identifier "FILE") (pointer_declarator "*__stream" (* "*") (identifier "__stream")) (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0001c7a2();" (call_expression "FUN_0001c7a2()" (identifier "FUN_0001c7a2") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = FUN_0001c750(param_1);" (assignment_expression "iVar2 = FUN_0001c750(param_1)" (identifier "iVar2") (= "=") (call_expression "FUN_0001c750(param_1)" (identifier "FUN_0001c750") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    __ptr = &DAT_00057f17 + unaff_EDI;\n    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));\n    if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }\n  }" ({ "{") (expression_statement "__ptr = &DAT_00057f17 + unaff_EDI;" (assignment_expression "__ptr = &DAT_00057f17 + unaff_EDI" (identifier "__ptr") (= "=") (binary_expression "&DAT_00057f17 + unaff_EDI" (pointer_expression "&DAT_00057f17" (& "&") (identifier "DAT_00057f17")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (expression_statement "__stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));" (assignment_expression "__stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70))" (identifier "__stream") (= "=") (call_expression "fopen64(param_1,(char *)(unaff_EDI + 0x36c70))" (identifier "fopen64") (argument_list "(param_1,(char *)(unaff_EDI + 0x36c70))" (( "(") (identifier "param_1") (, ",") (cast_expression "(char *)(unaff_EDI + 0x36c70)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x36c70)" (( "(") (binary_expression "unaff_EDI + 0x36c70" (identifier "unaff_EDI") (+ "+") (number_literal "0x36c70")) () ")"))) () ")")))) (; ";")) (if_statement "if (__stream == (FILE *)0x0) {\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }\n    else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" (if "if") (parenthesized_expression "(__stream == (FILE *)0x0)" (( "(") (binary_expression "__stream == (FILE *)0x0" (identifier "__stream") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      FUN_0001c730(iVar2);\n      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);\n      warn(uVar4,param_1);\n    }" ({ "{") (expression_statement "FUN_0001c730(iVar2);" (call_expression "FUN_0001c730(iVar2)" (identifier "FUN_0001c730") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);" (assignment_expression "uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,unaff_EDI + 0x335cf,5)" (identifier "dcgettext") (argument_list "(0,unaff_EDI + 0x335cf,5)" (( "(") (number_literal "0") (, ",") (binary_expression "unaff_EDI + 0x335cf" (identifier "unaff_EDI") (+ "+") (number_literal "0x335cf")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "warn(uVar4,param_1);" (call_expression "warn(uVar4,param_1)" (identifier "warn") (argument_list "(uVar4,param_1)" (( "(") (identifier "uVar4") (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" (else "else") (compound_statement "{\n      uVar8 = 0;\n      while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }\n      uVar7 = 1;\n      fclose(__stream);\n      if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }\n    }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        sVar3 = fread(__ptr,1,0x2000,__stream);\n        if (sVar3 == 0) break;\n        uVar6 = ~uVar8;\n        if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }\n      }" ({ "{") (expression_statement "sVar3 = fread(__ptr,1,0x2000,__stream);" (assignment_expression "sVar3 = fread(__ptr,1,0x2000,__stream)" (identifier "sVar3") (= "=") (call_expression "fread(__ptr,1,0x2000,__stream)" (identifier "fread") (argument_list "(__ptr,1,0x2000,__stream)" (( "(") (identifier "__ptr") (, ",") (number_literal "1") (, ",") (number_literal "0x2000") (, ",") (identifier "__stream") () ")")))) (; ";")) (if_statement "if (sVar3 == 0) break;" (if "if") (parenthesized_expression "(sVar3 == 0)" (( "(") (binary_expression "sVar3 == 0" (identifier "sVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = ~uVar8;" (assignment_expression "uVar6 = ~uVar8" (identifier "uVar6") (= "=") (unary_expression "~uVar8" (~ "~") (identifier "uVar8"))) (; ";")) (if_statement "if (__ptr < __ptr + sVar3) {\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }" (if "if") (parenthesized_expression "(__ptr < __ptr + sVar3)" (( "(") (binary_expression "__ptr < __ptr + sVar3" (identifier "__ptr") (< "<") (binary_expression "__ptr + sVar3" (identifier "__ptr") (+ "+") (identifier "sVar3"))) () ")")) (compound_statement "{\n          pbVar5 = __ptr;\n          do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);\n          uVar8 = ~uVar6;\n        }" ({ "{") (expression_statement "pbVar5 = __ptr;" (assignment_expression "pbVar5 = __ptr" (identifier "pbVar5") (= "=") (identifier "__ptr")) (; ";")) (do_statement "do {\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          } while (__ptr + sVar3 != pbVar5);" (do "do") (compound_statement "{\n            bVar1 = *pbVar5;\n            pbVar5 = pbVar5 + 1;\n            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);\n          }" ({ "{") (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" (identifier "bVar1") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);" (assignment_expression "uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" (identifier "uVar6") (= "=") (binary_expression "uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" (binary_expression "uVar6 >> 8" (identifier "uVar6") (>> ">>") (number_literal "8")) (^ "^") (pointer_expression "*(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" (* "*") (cast_expression "(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4)" (( "(") (binary_expression "unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4" (binary_expression "unaff_EDI + 0x3a377" (identifier "unaff_EDI") (+ "+") (number_literal "0x3a377")) (+ "+") (binary_expression "((bVar1 ^ uVar6) & 0xff) * 4" (parenthesized_expression "((bVar1 ^ uVar6) & 0xff)" (( "(") (binary_expression "(bVar1 ^ uVar6) & 0xff" (parenthesized_expression "(bVar1 ^ uVar6)" (( "(") (binary_expression "bVar1 ^ uVar6" (identifier "bVar1") (^ "^") (identifier "uVar6")) () ")")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(__ptr + sVar3 != pbVar5)" (( "(") (binary_expression "__ptr + sVar3 != pbVar5" (binary_expression "__ptr + sVar3" (identifier "__ptr") (+ "+") (identifier "sVar3")) (!= "!=") (identifier "pbVar5")) () ")")) (; ";")) (expression_statement "uVar8 = ~uVar6;" (assignment_expression "uVar8 = ~uVar6" (identifier "uVar8") (= "=") (unary_expression "~uVar6" (~ "~") (identifier "uVar6"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" (identifier "fclose") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")"))) (; ";")) (if_statement "if (*param_2 != uVar8) {\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }" (if "if") (parenthesized_expression "(*param_2 != uVar8)" (( "(") (binary_expression "*param_2 != uVar8" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (identifier "uVar8")) () ")")) (compound_statement "{\n        uVar7 = 0;\n        FUN_0001c730(iVar2);\n        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);\n        warn(uVar4,param_1);\n      }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0001c730(iVar2);" (call_expression "FUN_0001c730(iVar2)" (identifier "FUN_0001c730") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);" (assignment_expression "uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,unaff_EDI + 0x335ff,5)" (identifier "dcgettext") (argument_list "(0,unaff_EDI + 0x335ff,5)" (( "(") (number_literal "0") (, ",") (binary_expression "unaff_EDI + 0x335ff" (identifier "unaff_EDI") (+ "+") (number_literal "0x335ff")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "warn(uVar4,param_1);" (call_expression "warn(uVar4,param_1)" (identifier "warn") (argument_list "(uVar4,param_1)" (( "(") (identifier "uVar4") (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

type_1 function_1(char *pathname,void *crc_pointer)

{
  type_2 *var_12;
  type_2 var_15;
  void *var_3;
  type_3 *var_6;
  size_t var_11;
  char *pcVar3;
  type_2 *var_13;
  type_4 var_14;
  type_1 bVar6;
  type_4 var_17;
  int var_4;
  
  bVar6 = 0;
  var_1();
  var_3 = var_2(pathname);
  if (var_3 != (void *)0x0) {
    var_12 = (type_2 *)((int)&switchD_0003bc05::switchdataD_00057f14 + var_4 + 3);
    var_6 = var_5(pathname,(char *)(var_4 + 0x36c70));
    if (var_6 == (type_3 *)0x0) {
      var_7(var_3);
      pcVar3 = (char *)var_8(0,var_4 + 0x335cf,5);
      var_9(pcVar3,pathname);
    }
    else {
      var_17 = 0;
      while( true ) {
        var_11 = var_10(var_12,1,0x2000,var_6);
        if (var_11 == 0) break;
        var_14 = ~var_17;
        if (var_12 < var_12 + var_11) {
          var_13 = var_12;
          do {
            var_15 = *var_13;
            var_13 = var_13 + 1;
            var_14 = var_14 >> 8 ^ *(type_4 *)(var_4 + 0x3a377 + ((var_15 ^ var_14) & 0xff) * 4);
          } while (var_12 + var_11 != var_13);
          var_17 = ~var_14;
        }
      }
      bVar6 = 1;
      var_16(var_6);
                    /* WARNING: Load size is inaccurate */
      if (*crc_pointer != var_17) {
        bVar6 = 0;
        var_7(var_3);
        pcVar3 = (char *)var_8(0,var_4 + 0x335ff,5);
        var_9(pcVar3,pathname);
      }
    }
  }
  return bVar6;
}


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

undefined4 MASKED(char *param_1,uint *param_2)

{
  byte *__ptr;
  byte bVar1;
  int iVar2;
  FILE *__stream;
  size_t sVar3;
  undefined4 uVar4;
  byte *pbVar5;
  uint uVar6;
  undefined4 uVar7;
  uint uVar8;
  int unaff_EDI;
  
  uVar7 = 0;
  FUN_0001c7a2();
  iVar2 = FUN_0001c750(param_1);
  if (iVar2 != 0) {
    __ptr = &DAT_00057f17 + unaff_EDI;
    __stream = fopen64(param_1,(char *)(unaff_EDI + 0x36c70));
    if (__stream == (FILE *)0x0) {
      FUN_0001c730(iVar2);
      uVar4 = dcgettext(0,unaff_EDI + 0x335cf,5);
      warn(uVar4,param_1);
    }
    else {
      uVar8 = 0;
      while( true ) {
        sVar3 = fread(__ptr,1,0x2000,__stream);
        if (sVar3 == 0) break;
        uVar6 = ~uVar8;
        if (__ptr < __ptr + sVar3) {
          pbVar5 = __ptr;
          do {
            bVar1 = *pbVar5;
            pbVar5 = pbVar5 + 1;
            uVar6 = uVar6 >> 8 ^ *(uint *)(unaff_EDI + 0x3a377 + ((bVar1 ^ uVar6) & 0xff) * 4);
          } while (__ptr + sVar3 != pbVar5);
          uVar8 = ~uVar6;
        }
      }
      uVar7 = 1;
      fclose(__stream);
      if (*param_2 != uVar8) {
        uVar7 = 0;
        FUN_0001c730(iVar2);
        uVar4 = dcgettext(0,unaff_EDI + 0x335ff,5);
        warn(uVar4,param_1);
      }
    }
  }
  return uVar7;
}

