
lang_input_statement_type *
lang_add_input_file(char *name,lang_input_file_enum_type file_type,char *target)

{
  byte bVar1;
  lang_input_statement_type *plVar2;
  char *name_00;
  long lVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  
  if (name != (char *)0x0) {
    bVar6 = (byte)*name < 0x3d;
    bVar7 = *name == 0x3d;
    if (bVar7) {
      lVar3 = 1;
    }
    else {
      lVar3 = 8;
      pbVar4 = (byte *)name;
      pbVar5 = (byte *)"$SYSROOT";
      do {
        if (lVar3 == 0) break;
        lVar3 = lVar3 + -1;
        bVar6 = *pbVar4 < *pbVar5;
        bVar7 = *pbVar4 == *pbVar5;
        pbVar4 = pbVar4 + 1;
        pbVar5 = pbVar5 + 1;
      } while (bVar7);
      lVar3 = 8;
      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;
    }
    name_00 = (char *)concat(ld_sysroot,name + lVar3,0);
    bVar1 = (byte)input_flags._0_1_ >> 3;
    input_flags._0_1_ = input_flags._0_1_ & 0xf7;
    plVar2 = new_afile(name_00,file_type,target,1);
    input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3);
    return plVar2;
  }
LAB_00115be3:
  plVar2 = new_afile(name,file_type,target,1);
  return plVar2;
}



void FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)

{
  byte bVar1;
  undefined8 uVar2;
  long lVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  
  if (param_1 != (byte *)0x0) {
    bVar6 = *param_1 < 0x3d;
    bVar7 = *param_1 == 0x3d;
    if (bVar7) {
      lVar3 = 1;
    }
    else {
      lVar3 = 8;
      pbVar4 = param_1;
      pbVar5 = (byte *)"$SYSROOT";
      do {
        if (lVar3 == 0) break;
        lVar3 = lVar3 + -1;
        bVar6 = *pbVar4 < *pbVar5;
        bVar7 = *pbVar4 == *pbVar5;
        pbVar4 = pbVar4 + 1;
        pbVar5 = pbVar5 + 1;
      } while (bVar7);
      lVar3 = 8;
      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;
    }
    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);
    bVar1 = DAT_00182ce0 >> 3;
    DAT_00182ce0 = DAT_00182ce0 & 0xf7;
    FUN_001158b0(uVar2,param_2,param_3,1);
    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);
    return;
  }
LAB_00115be3:
  FUN_001158b0(param_1,param_2,param_3,1);
  return;
}


PUSH R12
MOV RAX,RDI
PUSH RBP
PUSH RBX
MOV EBX,ESI
TEST RDI,RDI
JZ 0x00115be3
CMP byte ptr [RDI],0x3d
JZ 0x00115c00
MOV ECX,0x8
MOV RSI,RAX
LEA RDI,[0x142140]
CMPSB.REPE RDI,RSI
MOV ESI,0x8
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x00115c05
MOV ESI,EBX
MOV ECX,0x1
POP RBX
MOV RDI,RAX
POP RBP
POP R12
JMP 0x001158b0
MOV ESI,0x1
MOV RDI,qword ptr [0x00182e48]
MOV RBP,RDX
ADD RSI,RAX
XOR EDX,EDX
XOR EAX,EAX
CALL 0x00109430
MOVZX EDX,byte ptr [0x00182ce0]
MOV ESI,EBX
MOV ECX,0x1
MOV RDI,RAX
MOV R12D,EDX
AND EDX,0xfffffff7
MOV byte ptr [0x00182ce0],DL
MOV RDX,RBP
SHR R12B,0x3
CALL 0x001158b0
MOVZX EDX,byte ptr [0x00182ce0]
AND R12D,0x1
POP RBX
SHL R12D,0x3
POP RBP
AND EDX,0xfffffff7
OR EDX,R12D
POP R12
MOV byte ptr [0x00182ce0],DL
RET
(translation_unit "void FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }\nLAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);\n  return;\n}\n\n" (function_definition "void FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }\nLAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);\n  return;\n}" primitive_type (function_declarator "FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)" identifier (parameter_list "(byte *param_1,undefined4 param_2,undefined8 param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }\nLAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (if_statement "if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }" if (parenthesized_expression "(param_1 != (byte *)0x0)" ( (binary_expression "param_1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }" { (expression_statement "bVar6 = *param_1 < 0x3d;" (assignment_expression "bVar6 = *param_1 < 0x3d" identifier = (binary_expression "*param_1 < 0x3d" (pointer_expression "*param_1" * identifier) < number_literal)) ;) (expression_statement "bVar7 = *param_1 == 0x3d;" (assignment_expression "bVar7 = *param_1 == 0x3d" identifier = (binary_expression "*param_1 == 0x3d" (pointer_expression "*param_1" * identifier) == number_literal)) ;) (if_statement "if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      lVar3 = 1;\n    }" { (expression_statement "lVar3 = 1;" (assignment_expression "lVar3 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" else (compound_statement "{\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" { (expression_statement "lVar3 = 8;" (assignment_expression "lVar3 = 8" identifier = number_literal) ;) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"$SYSROOT";" (assignment_expression "pbVar5 = (byte *)"$SYSROOT"" identifier = (cast_expression "(byte *)"$SYSROOT"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""$SYSROOT"" " string_content "))) ;) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" do (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (expression_statement "lVar3 = 8;" (assignment_expression "lVar3 = 8" identifier = number_literal) ;) (if_statement "if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;" if (parenthesized_expression "((!bVar6 && !bVar7) != bVar6)" ( (binary_expression "(!bVar6 && !bVar7) != bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_00115be3;" goto statement_identifier ;)) }))) (expression_statement "uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);" (assignment_expression "uVar2 = concat(DAT_00182e48,param_1 + lVar3,0)" identifier = (call_expression "concat(DAT_00182e48,param_1 + lVar3,0)" identifier (argument_list "(DAT_00182e48,param_1 + lVar3,0)" ( identifier , (binary_expression "param_1 + lVar3" identifier + identifier) , number_literal )))) ;) (expression_statement "bVar1 = DAT_00182ce0 >> 3;" (assignment_expression "bVar1 = DAT_00182ce0 >> 3" identifier = (binary_expression "DAT_00182ce0 >> 3" identifier >> number_literal)) ;) (expression_statement "DAT_00182ce0 = DAT_00182ce0 & 0xf7;" (assignment_expression "DAT_00182ce0 = DAT_00182ce0 & 0xf7" identifier = (binary_expression "DAT_00182ce0 & 0xf7" identifier & number_literal)) ;) (expression_statement "FUN_001158b0(uVar2,param_2,param_3,1);" (call_expression "FUN_001158b0(uVar2,param_2,param_3,1)" identifier (argument_list "(uVar2,param_2,param_3,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);" (assignment_expression "DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3)" identifier = (binary_expression "DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3)" (binary_expression "DAT_00182ce0 & 0xf7" identifier & number_literal) | (call_expression "(byte)((bVar1 & 1) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar1 & 1) << 3)" ( (binary_expression "(bVar1 & 1) << 3" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);" statement_identifier : (expression_statement "FUN_001158b0(param_1,param_2,param_3,1);" (call_expression "FUN_001158b0(param_1,param_2,param_3,1)" identifier (argument_list "(param_1,param_2,param_3,1)" ( identifier , identifier , identifier , number_literal ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "lang_input_statement_type *\nlang_add_input_file(char *name,lang_input_file_enum_type file_type,char *target)\n\n{\n  byte bVar1;\n  lang_input_statement_type *plVar2;\n  char *name_00;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (name != (char *)0x0) {\n    bVar6 = (byte)*name < 0x3d;\n    bVar7 = *name == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = (byte *)name;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    name_00 = (char *)concat(ld_sysroot,name + lVar3,0);\n    bVar1 = (byte)input_flags._0_1_ >> 3;\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7;\n    plVar2 = new_afile(name_00,file_type,target,1);\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return plVar2;\n  }\nLAB_00115be3:\n  plVar2 = new_afile(name,file_type,target,1);\n  return plVar2;\n}\n\n" (function_definition "lang_input_statement_type *\nlang_add_input_file(char *name,lang_input_file_enum_type file_type,char *target)\n\n{\n  byte bVar1;\n  lang_input_statement_type *plVar2;\n  char *name_00;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (name != (char *)0x0) {\n    bVar6 = (byte)*name < 0x3d;\n    bVar7 = *name == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = (byte *)name;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    name_00 = (char *)concat(ld_sysroot,name + lVar3,0);\n    bVar1 = (byte)input_flags._0_1_ >> 3;\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7;\n    plVar2 = new_afile(name_00,file_type,target,1);\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return plVar2;\n  }\nLAB_00115be3:\n  plVar2 = new_afile(name,file_type,target,1);\n  return plVar2;\n}" type_identifier (pointer_declarator "*\nlang_add_input_file(char *name,lang_input_file_enum_type file_type,char *target)" * (function_declarator "lang_add_input_file(char *name,lang_input_file_enum_type file_type,char *target)" identifier (parameter_list "(char *name,lang_input_file_enum_type file_type,char *target)" ( (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "lang_input_file_enum_type file_type" type_identifier identifier) , (parameter_declaration "char *target" primitive_type (pointer_declarator "*target" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  lang_input_statement_type *plVar2;\n  char *name_00;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (name != (char *)0x0) {\n    bVar6 = (byte)*name < 0x3d;\n    bVar7 = *name == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = (byte *)name;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    name_00 = (char *)concat(ld_sysroot,name + lVar3,0);\n    bVar1 = (byte)input_flags._0_1_ >> 3;\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7;\n    plVar2 = new_afile(name_00,file_type,target,1);\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return plVar2;\n  }\nLAB_00115be3:\n  plVar2 = new_afile(name,file_type,target,1);\n  return plVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "lang_input_statement_type *plVar2;" type_identifier (pointer_declarator "*plVar2" * identifier) ;) (declaration "char *name_00;" primitive_type (pointer_declarator "*name_00" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (if_statement "if (name != (char *)0x0) {\n    bVar6 = (byte)*name < 0x3d;\n    bVar7 = *name == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = (byte *)name;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    name_00 = (char *)concat(ld_sysroot,name + lVar3,0);\n    bVar1 = (byte)input_flags._0_1_ >> 3;\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7;\n    plVar2 = new_afile(name_00,file_type,target,1);\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return plVar2;\n  }" if (parenthesized_expression "(name != (char *)0x0)" ( (binary_expression "name != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar6 = (byte)*name < 0x3d;\n    bVar7 = *name == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = (byte *)name;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    name_00 = (char *)concat(ld_sysroot,name + lVar3,0);\n    bVar1 = (byte)input_flags._0_1_ >> 3;\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7;\n    plVar2 = new_afile(name_00,file_type,target,1);\n    input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return plVar2;\n  }" { (expression_statement "bVar6 = (byte)*name < 0x3d;" (assignment_expression "bVar6 = (byte)*name < 0x3d" identifier = (binary_expression "(byte)*name < 0x3d" (binary_expression "(byte)*name" (parenthesized_expression "(byte)" ( identifier )) * identifier) < number_literal)) ;) (expression_statement "bVar7 = *name == 0x3d;" (assignment_expression "bVar7 = *name == 0x3d" identifier = (binary_expression "*name == 0x3d" (pointer_expression "*name" * identifier) == number_literal)) ;) (if_statement "if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = (byte *)name;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      lVar3 = 1;\n    }" { (expression_statement "lVar3 = 1;" (assignment_expression "lVar3 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      lVar3 = 8;\n      pbVar4 = (byte *)name;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" else (compound_statement "{\n      lVar3 = 8;\n      pbVar4 = (byte *)name;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" { (expression_statement "lVar3 = 8;" (assignment_expression "lVar3 = 8" identifier = number_literal) ;) (expression_statement "pbVar4 = (byte *)name;" (assignment_expression "pbVar4 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar5 = (byte *)"$SYSROOT";" (assignment_expression "pbVar5 = (byte *)"$SYSROOT"" identifier = (cast_expression "(byte *)"$SYSROOT"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""$SYSROOT"" " string_content "))) ;) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" do (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (expression_statement "lVar3 = 8;" (assignment_expression "lVar3 = 8" identifier = number_literal) ;) (if_statement "if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;" if (parenthesized_expression "((!bVar6 && !bVar7) != bVar6)" ( (binary_expression "(!bVar6 && !bVar7) != bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_00115be3;" goto statement_identifier ;)) }))) (expression_statement "name_00 = (char *)concat(ld_sysroot,name + lVar3,0);" (assignment_expression "name_00 = (char *)concat(ld_sysroot,name + lVar3,0)" identifier = (cast_expression "(char *)concat(ld_sysroot,name + lVar3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(ld_sysroot,name + lVar3,0)" identifier (argument_list "(ld_sysroot,name + lVar3,0)" ( identifier , (binary_expression "name + lVar3" identifier + identifier) , number_literal ))))) ;) (expression_statement "bVar1 = (byte)input_flags._0_1_ >> 3;" (assignment_expression "bVar1 = (byte)input_flags._0_1_ >> 3" identifier = (binary_expression "(byte)input_flags._0_1_ >> 3" (cast_expression "(byte)input_flags._0_1_" ( (type_descriptor "byte" type_identifier) ) (field_expression "input_flags._0_1_" identifier . field_identifier)) >> number_literal)) ;) (expression_statement "input_flags._0_1_ = input_flags._0_1_ & 0xf7;" (assignment_expression "input_flags._0_1_ = input_flags._0_1_ & 0xf7" (field_expression "input_flags._0_1_" identifier . field_identifier) = (binary_expression "input_flags._0_1_ & 0xf7" (field_expression "input_flags._0_1_" identifier . field_identifier) & number_literal)) ;) (expression_statement "plVar2 = new_afile(name_00,file_type,target,1);" (assignment_expression "plVar2 = new_afile(name_00,file_type,target,1)" identifier = (call_expression "new_afile(name_00,file_type,target,1)" identifier (argument_list "(name_00,file_type,target,1)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3);" (assignment_expression "input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3)" (field_expression "input_flags._0_1_" identifier . field_identifier) = (binary_expression "input_flags._0_1_ & 0xf7 | (byte)((bVar1 & 1) << 3)" (binary_expression "input_flags._0_1_ & 0xf7" (field_expression "input_flags._0_1_" identifier . field_identifier) & number_literal) | (call_expression "(byte)((bVar1 & 1) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar1 & 1) << 3)" ( (binary_expression "(bVar1 & 1) << 3" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (return_statement "return plVar2;" return identifier ;) })) (labeled_statement "LAB_00115be3:\n  plVar2 = new_afile(name,file_type,target,1);" statement_identifier : (expression_statement "plVar2 = new_afile(name,file_type,target,1);" (assignment_expression "plVar2 = new_afile(name,file_type,target,1)" identifier = (call_expression "new_afile(name,file_type,target,1)" identifier (argument_list "(name,file_type,target,1)" ( identifier , identifier , identifier , number_literal )))) ;)) (return_statement "return plVar2;" return identifier ;) })))
(translation_unit "void FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }\nLAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);\n  return;\n}\n\n" (function_definition "void FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }\nLAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);\n  return;\n}" primitive_type (function_declarator "FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)" identifier (parameter_list "(byte *param_1,undefined4 param_2,undefined8 param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }\nLAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (if_statement "if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }" if (parenthesized_expression "(param_1 != (byte *)0x0)" ( (binary_expression "param_1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }" { (expression_statement "bVar6 = *param_1 < 0x3d;" (assignment_expression "bVar6 = *param_1 < 0x3d" identifier = (binary_expression "*param_1 < 0x3d" (pointer_expression "*param_1" * identifier) < number_literal)) ;) (expression_statement "bVar7 = *param_1 == 0x3d;" (assignment_expression "bVar7 = *param_1 == 0x3d" identifier = (binary_expression "*param_1 == 0x3d" (pointer_expression "*param_1" * identifier) == number_literal)) ;) (if_statement "if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      lVar3 = 1;\n    }" { (expression_statement "lVar3 = 1;" (assignment_expression "lVar3 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" else (compound_statement "{\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" { (expression_statement "lVar3 = 8;" (assignment_expression "lVar3 = 8" identifier = number_literal) ;) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"$SYSROOT";" (assignment_expression "pbVar5 = (byte *)"$SYSROOT"" identifier = (cast_expression "(byte *)"$SYSROOT"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""$SYSROOT"" " string_content "))) ;) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" do (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (expression_statement "lVar3 = 8;" (assignment_expression "lVar3 = 8" identifier = number_literal) ;) (if_statement "if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;" if (parenthesized_expression "((!bVar6 && !bVar7) != bVar6)" ( (binary_expression "(!bVar6 && !bVar7) != bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_00115be3;" goto statement_identifier ;)) }))) (expression_statement "uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);" (assignment_expression "uVar2 = concat(DAT_00182e48,param_1 + lVar3,0)" identifier = (call_expression "concat(DAT_00182e48,param_1 + lVar3,0)" identifier (argument_list "(DAT_00182e48,param_1 + lVar3,0)" ( identifier , (binary_expression "param_1 + lVar3" identifier + identifier) , number_literal )))) ;) (expression_statement "bVar1 = DAT_00182ce0 >> 3;" (assignment_expression "bVar1 = DAT_00182ce0 >> 3" identifier = (binary_expression "DAT_00182ce0 >> 3" identifier >> number_literal)) ;) (expression_statement "DAT_00182ce0 = DAT_00182ce0 & 0xf7;" (assignment_expression "DAT_00182ce0 = DAT_00182ce0 & 0xf7" identifier = (binary_expression "DAT_00182ce0 & 0xf7" identifier & number_literal)) ;) (expression_statement "FUN_001158b0(uVar2,param_2,param_3,1);" (call_expression "FUN_001158b0(uVar2,param_2,param_3,1)" identifier (argument_list "(uVar2,param_2,param_3,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);" (assignment_expression "DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3)" identifier = (binary_expression "DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3)" (binary_expression "DAT_00182ce0 & 0xf7" identifier & number_literal) | (call_expression "(byte)((bVar1 & 1) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar1 & 1) << 3)" ( (binary_expression "(bVar1 & 1) << 3" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);" statement_identifier : (expression_statement "FUN_001158b0(param_1,param_2,param_3,1);" (call_expression "FUN_001158b0(param_1,param_2,param_3,1)" identifier (argument_list "(param_1,param_2,param_3,1)" ( identifier , identifier , identifier , number_literal ))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))))) ;) (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;)) (return_statement return ;) })))
(function_definition "void FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }\nLAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00115bb0(byte *param_1,undefined4 param_2,undefined8 param_3)" (identifier "FUN_00115bb0") (parameter_list "(byte *param_1,undefined4 param_2,undefined8 param_3)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  long lVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  \n  if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }\nLAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (if_statement "if (param_1 != (byte *)0x0) {\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }" (if "if") (parenthesized_expression "(param_1 != (byte *)0x0)" (( "(") (binary_expression "param_1 != (byte *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    bVar6 = *param_1 < 0x3d;\n    bVar7 = *param_1 == 0x3d;\n    if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }\n    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);\n    bVar1 = DAT_00182ce0 >> 3;\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7;\n    FUN_001158b0(uVar2,param_2,param_3,1);\n    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);\n    return;\n  }" ({ "{") (expression_statement "bVar6 = *param_1 < 0x3d;" (assignment_expression "bVar6 = *param_1 < 0x3d" (identifier "bVar6") (= "=") (binary_expression "*param_1 < 0x3d" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (< "<") (number_literal "0x3d"))) (; ";")) (expression_statement "bVar7 = *param_1 == 0x3d;" (assignment_expression "bVar7 = *param_1 == 0x3d" (identifier "bVar7") (= "=") (binary_expression "*param_1 == 0x3d" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0x3d"))) (; ";")) (if_statement "if (bVar7) {\n      lVar3 = 1;\n    }\n    else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n      lVar3 = 1;\n    }" ({ "{") (expression_statement "lVar3 = 1;" (assignment_expression "lVar3 = 1" (identifier "lVar3") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" (else "else") (compound_statement "{\n      lVar3 = 8;\n      pbVar4 = param_1;\n      pbVar5 = (byte *)"$SYSROOT";\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      lVar3 = 8;\n      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;\n    }" ({ "{") (expression_statement "lVar3 = 8;" (assignment_expression "lVar3 = 8" (identifier "lVar3") (= "=") (number_literal "8")) (; ";")) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" (identifier "pbVar4") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pbVar5 = (byte *)"$SYSROOT";" (assignment_expression "pbVar5 = (byte *)"$SYSROOT"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"$SYSROOT"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""$SYSROOT"" (" """) (string_content "$SYSROOT") (" """)))) (; ";")) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" (do "do") (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" (identifier "bVar6") (= "=") (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" (identifier "bVar7") (= "=") (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (; ";")) (expression_statement "lVar3 = 8;" (assignment_expression "lVar3 = 8" (identifier "lVar3") (= "=") (number_literal "8")) (; ";")) (if_statement "if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;" (if "if") (parenthesized_expression "((!bVar6 && !bVar7) != bVar6)" (( "(") (binary_expression "(!bVar6 && !bVar7) != bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" (( "(") (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" (! "!") (identifier "bVar6")) (&& "&&") (unary_expression "!bVar7" (! "!") (identifier "bVar7"))) () ")")) (!= "!=") (identifier "bVar6")) () ")")) (goto_statement "goto LAB_00115be3;" (goto "goto") (statement_identifier "LAB_00115be3") (; ";"))) (} "}")))) (expression_statement "uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);" (assignment_expression "uVar2 = concat(DAT_00182e48,param_1 + lVar3,0)" (identifier "uVar2") (= "=") (call_expression "concat(DAT_00182e48,param_1 + lVar3,0)" (identifier "concat") (argument_list "(DAT_00182e48,param_1 + lVar3,0)" (( "(") (identifier "DAT_00182e48") (, ",") (binary_expression "param_1 + lVar3" (identifier "param_1") (+ "+") (identifier "lVar3")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar1 = DAT_00182ce0 >> 3;" (assignment_expression "bVar1 = DAT_00182ce0 >> 3" (identifier "bVar1") (= "=") (binary_expression "DAT_00182ce0 >> 3" (identifier "DAT_00182ce0") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "DAT_00182ce0 = DAT_00182ce0 & 0xf7;" (assignment_expression "DAT_00182ce0 = DAT_00182ce0 & 0xf7" (identifier "DAT_00182ce0") (= "=") (binary_expression "DAT_00182ce0 & 0xf7" (identifier "DAT_00182ce0") (& "&") (number_literal "0xf7"))) (; ";")) (expression_statement "FUN_001158b0(uVar2,param_2,param_3,1);" (call_expression "FUN_001158b0(uVar2,param_2,param_3,1)" (identifier "FUN_001158b0") (argument_list "(uVar2,param_2,param_3,1)" (( "(") (identifier "uVar2") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);" (assignment_expression "DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3)" (identifier "DAT_00182ce0") (= "=") (binary_expression "DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3)" (binary_expression "DAT_00182ce0 & 0xf7" (identifier "DAT_00182ce0") (& "&") (number_literal "0xf7")) (| "|") (call_expression "(byte)((bVar1 & 1) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((bVar1 & 1) << 3)" (( "(") (binary_expression "(bVar1 & 1) << 3" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "3")) () ")"))))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_00115be3:\n  FUN_001158b0(param_1,param_2,param_3,1);" (statement_identifier "LAB_00115be3") (: ":") (expression_statement "FUN_001158b0(param_1,param_2,param_3,1);" (call_expression "FUN_001158b0(param_1,param_2,param_3,1)" (identifier "FUN_001158b0") (argument_list "(param_1,param_2,param_3,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "1") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

type_1 *
function_1(char *var_1,type_2 file_type,char *target)

{
  type_3 var_8;
  type_1 *plVar2;
  char *name_00;
  long var_2;
  type_3 *var_3;
  type_3 *var_4;
  bool var_5;
  bool bVar7;
  
  if (var_1 != (char *)0x0) {
    var_5 = (type_3)*var_1 < 0x3d;
    bVar7 = *var_1 == 0x3d;
    if (bVar7) {
      var_2 = 1;
    }
    else {
      var_2 = 8;
      var_3 = (type_3 *)var_1;
      var_4 = (type_3 *)"$SYSROOT";
      do {
        if (var_2 == 0) break;
        var_2 = var_2 + -1;
        var_5 = *var_3 < *var_4;
        bVar7 = *var_3 == *var_4;
        var_3 = var_3 + 1;
        var_4 = var_4 + 1;
      } while (bVar7);
      var_2 = 8;
      if ((!var_5 && !bVar7) != var_5) goto LAB_00115be3;
    }
    name_00 = (char *)var_6(ld_sysroot,var_1 + var_2,0);
    var_8 = (type_3)input_flags._0_1_ >> 3;
    input_flags._0_1_ = input_flags._0_1_ & 0xf7;
    plVar2 = var_7(name_00,file_type,target,1);
    input_flags._0_1_ = input_flags._0_1_ & 0xf7 | (type_3)((var_8 & 1) << 3);
    return plVar2;
  }
LAB_00115be3:
  plVar2 = var_7(var_1,file_type,target,1);
  return plVar2;
}


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

void MASKED(byte *param_1,undefined4 param_2,undefined8 param_3)

{
  byte bVar1;
  undefined8 uVar2;
  long lVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  
  if (param_1 != (byte *)0x0) {
    bVar6 = *param_1 < 0x3d;
    bVar7 = *param_1 == 0x3d;
    if (bVar7) {
      lVar3 = 1;
    }
    else {
      lVar3 = 8;
      pbVar4 = param_1;
      pbVar5 = (byte *)"$SYSROOT";
      do {
        if (lVar3 == 0) break;
        lVar3 = lVar3 + -1;
        bVar6 = *pbVar4 < *pbVar5;
        bVar7 = *pbVar4 == *pbVar5;
        pbVar4 = pbVar4 + 1;
        pbVar5 = pbVar5 + 1;
      } while (bVar7);
      lVar3 = 8;
      if ((!bVar6 && !bVar7) != bVar6) goto LAB_00115be3;
    }
    uVar2 = concat(DAT_00182e48,param_1 + lVar3,0);
    bVar1 = DAT_00182ce0 >> 3;
    DAT_00182ce0 = DAT_00182ce0 & 0xf7;
    FUN_001158b0(uVar2,param_2,param_3,1);
    DAT_00182ce0 = DAT_00182ce0 & 0xf7 | (byte)((bVar1 & 1) << 3);
    return;
  }
LAB_00115be3:
  FUN_001158b0(param_1,param_2,param_3,1);
  return;
}

