
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int writeargv(char **argv,FILE *f)

{
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 FUN_003a8720(undefined4 *param_1,FILE *param_2)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  byte *pbVar4;
  
  if (param_2 == (FILE *)0x0) {
LAB_003a87d0:
    uVar3 = 1;
  }
  else {
    pbVar4 = (byte *)*param_1;
    while (pbVar4 != (byte *)0x0) {
      while( true ) {
        bVar1 = *pbVar4;
        if (bVar1 == 0) break;
        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))
             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||
           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;
        pbVar4 = pbVar4 + 1;
      }
      iVar2 = fputc(10,param_2);
      if (iVar2 == -1) goto LAB_003a87d0;
      param_1 = param_1 + 1;
      pbVar4 = (byte *)*param_1;
    }
    uVar3 = 0;
  }
  return uVar3;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x2418d7
SUB ESP,0x1c
MOV EDI,dword ptr [ESP + 0x34]
TEST EDI,EDI
JZ 0x003a87d0
MOV EAX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [EAX]
LEA EAX,[EBX + 0xffeb80a0]
MOV dword ptr [ESP + 0xc],EAX
TEST ESI,ESI
JNZ 0x003a87a2
JMP 0x003a87cb
MOV ECX,dword ptr [ESP + 0xc]
MOVZX EDX,AL
MOVSX EBP,AL
TEST byte ptr [ECX + EDX*0x2],0x40
JNZ 0x003a877a
CMP AL,0x5c
SETZ CL
CMP AL,0x27
SETZ DL
OR CL,DL
JNZ 0x003a877a
CMP AL,0x22
JNZ 0x003a878d
SUB ESP,0x8
PUSH EDI
PUSH 0x5c
CALL 0x00039290
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x003a87d0
SUB ESP,0x8
PUSH EDI
PUSH EBP
CALL 0x00039290
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x003a87d0
ADD ESI,0x1
MOVZX EAX,byte ptr [ESI]
TEST AL,AL
JNZ 0x003a8758
SUB ESP,0x8
PUSH EDI
PUSH 0xa
CALL 0x00039290
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x003a87d0
ADD dword ptr [ESP + 0x30],0x4
MOV EAX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [EAX]
TEST ESI,ESI
JNZ 0x003a87a2
XOR EAX,EAX
JMP 0x003a87d5
MOV EAX,0x1
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_003a8720(undefined4 *param_1,FILE *param_2)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  \n  if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }\n  return uVar3;\n}\n\n" comment (function_definition "undefined4 FUN_003a8720(undefined4 *param_1,FILE *param_2)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  \n  if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_003a8720(undefined4 *param_1,FILE *param_2)" identifier (parameter_list "(undefined4 *param_1,FILE *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "FILE *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  \n  if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }\n  return uVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (if_statement "if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" if (parenthesized_expression "(param_2 == (FILE *)0x0)" ( (binary_expression "param_2 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_003a87d0:\n    uVar3 = 1;\n  }" { (labeled_statement "LAB_003a87d0:\n    uVar3 = 1;" statement_identifier : (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" else (compound_statement "{\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" { (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (while_statement "while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }" while (parenthesized_expression "(pbVar4 != (byte *)0x0)" ( (binary_expression "pbVar4 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }" { (while_statement "while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }" { (expression_statement "bVar1 = *pbVar4;" (assignment_expression "bVar1 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (if_statement "if (bVar1 == 0) break;" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;" if (parenthesized_expression "(((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1))" ( (binary_expression "((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)" (parenthesized_expression "((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1))" ( (binary_expression "(((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)" (parenthesized_expression "(((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22))" ( (binary_expression "((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)" (parenthesized_expression "((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))" ( (binary_expression "(((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27)" (parenthesized_expression "(((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0)" ( (binary_expression "((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40)" ( (binary_expression "(&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40" (subscript_expression "(&DAT_004a20a0)[(uint)bVar1 * 2]" (parenthesized_expression "(&DAT_004a20a0)" ( (pointer_expression "&DAT_004a20a0" & identifier) )) [ (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) != number_literal) )) || (parenthesized_expression "(bVar1 == 0x5c || bVar1 == 0x27)" ( (binary_expression "bVar1 == 0x5c || bVar1 == 0x27" (binary_expression "bVar1 == 0x5c" identifier == number_literal) || (binary_expression "bVar1 == 0x27" identifier == number_literal)) ))) )) || (parenthesized_expression "(bVar1 == 0x22)" ( (binary_expression "bVar1 == 0x22" identifier == number_literal) ))) )) && (parenthesized_expression "(iVar2 = fputc(0x5c,param_2), iVar2 == -1)" ( (comma_expression "iVar2 = fputc(0x5c,param_2), iVar2 == -1" (assignment_expression "iVar2 = fputc(0x5c,param_2)" identifier = (call_expression "fputc(0x5c,param_2)" identifier (argument_list "(0x5c,param_2)" ( number_literal , identifier )))) , (binary_expression "iVar2 == -1" identifier == number_literal)) ))) )) || (parenthesized_expression "(iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)" ( (comma_expression "iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1" (assignment_expression "iVar2 = fputc((int)(char)bVar1,param_2)" identifier = (call_expression "fputc((int)(char)bVar1,param_2)" identifier (argument_list "((int)(char)bVar1,param_2)" ( (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) , identifier )))) , (binary_expression "iVar2 == -1" identifier == number_literal)) ))) )) (goto_statement "goto LAB_003a87d0;" goto statement_identifier ;)) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar2 = fputc(10,param_2);" (assignment_expression "iVar2 = fputc(10,param_2)" identifier = (call_expression "fputc(10,param_2)" identifier (argument_list "(10,param_2)" ( number_literal , identifier )))) ;) (if_statement "if (iVar2 == -1) goto LAB_003a87d0;" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (goto_statement "goto LAB_003a87d0;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint writeargv(char **argv,FILE *f)\n\n{\n}\n\n" comment (function_definition "int writeargv(char **argv,FILE *f)\n\n{\n}" primitive_type (function_declarator "writeargv(char **argv,FILE *f)" identifier (parameter_list "(char **argv,FILE *f)" ( (parameter_declaration "char **argv" primitive_type (pointer_declarator "**argv" * (pointer_declarator "*argv" * identifier))) , (parameter_declaration "FILE *f" type_identifier (pointer_declarator "*f" * identifier)) ))) (compound_statement "{\n}" { })))
(translation_unit "undefined4 FUN_003a8720(undefined4 *param_1,FILE *param_2)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  \n  if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined4 FUN_003a8720(undefined4 *param_1,FILE *param_2)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  \n  if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_003a8720(undefined4 *param_1,FILE *param_2)" identifier (parameter_list "(undefined4 *param_1,FILE *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "FILE *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  \n  if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }\n  return uVar3;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (if_statement "if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" if (parenthesized_expression "(param_2 == (FILE *)0x0)" ( (binary_expression "param_2 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_003a87d0:\n    uVar3 = 1;\n  }" { (labeled_statement "LAB_003a87d0:\n    uVar3 = 1;" statement_identifier : (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" else (compound_statement "{\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" { (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (while_statement "while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }" while (parenthesized_expression "(pbVar4 != (byte *)0x0)" ( (binary_expression "pbVar4 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }" { (while_statement "while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }" { (expression_statement "bVar1 = *pbVar4;" (assignment_expression "bVar1 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (if_statement "if (bVar1 == 0) break;" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;" if (parenthesized_expression "(((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1))" ( (binary_expression "((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)" (parenthesized_expression "((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1))" ( (binary_expression "(((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)" (parenthesized_expression "(((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22))" ( (binary_expression "((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)" (parenthesized_expression "((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))" ( (binary_expression "(((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27)" (parenthesized_expression "(((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0)" ( (binary_expression "((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40)" ( (binary_expression "(&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40" (subscript_expression "(&DAT_004a20a0)[(uint)bVar1 * 2]" (parenthesized_expression "(&DAT_004a20a0)" ( (pointer_expression "&DAT_004a20a0" & identifier) )) [ (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ]) & number_literal) )) != number_literal) )) || (parenthesized_expression "(bVar1 == 0x5c || bVar1 == 0x27)" ( (binary_expression "bVar1 == 0x5c || bVar1 == 0x27" (binary_expression "bVar1 == 0x5c" identifier == number_literal) || (binary_expression "bVar1 == 0x27" identifier == number_literal)) ))) )) || (parenthesized_expression "(bVar1 == 0x22)" ( (binary_expression "bVar1 == 0x22" identifier == number_literal) ))) )) && (parenthesized_expression "(iVar2 = fputc(0x5c,param_2), iVar2 == -1)" ( (comma_expression "iVar2 = fputc(0x5c,param_2), iVar2 == -1" (assignment_expression "iVar2 = fputc(0x5c,param_2)" identifier = (call_expression "fputc(0x5c,param_2)" identifier (argument_list "(0x5c,param_2)" ( number_literal , identifier )))) , (binary_expression "iVar2 == -1" identifier == number_literal)) ))) )) || (parenthesized_expression "(iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)" ( (comma_expression "iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1" (assignment_expression "iVar2 = fputc((int)(char)bVar1,param_2)" identifier = (call_expression "fputc((int)(char)bVar1,param_2)" identifier (argument_list "((int)(char)bVar1,param_2)" ( (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) , identifier )))) , (binary_expression "iVar2 == -1" identifier == number_literal)) ))) )) (goto_statement "goto LAB_003a87d0;" goto statement_identifier ;)) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar2 = fputc(10,param_2);" (assignment_expression "iVar2 = fputc(10,param_2)" identifier = (call_expression "fputc(10,param_2)" identifier (argument_list "(10,param_2)" ( number_literal , identifier )))) ;) (if_statement "if (iVar2 == -1) goto LAB_003a87d0;" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (goto_statement "goto LAB_003a87d0;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) (return_statement "return uVar3;" 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ]) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT)) ))) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_003a8720(undefined4 *param_1,FILE *param_2)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  \n  if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }\n  return uVar3;\n}" (type_identifier "undefined4") (function_declarator "FUN_003a8720(undefined4 *param_1,FILE *param_2)" (identifier "FUN_003a8720") (parameter_list "(undefined4 *param_1,FILE *param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "FILE *param_2" (type_identifier "FILE") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  \n  if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }\n  return uVar3;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (if_statement "if (param_2 == (FILE *)0x0) {\nLAB_003a87d0:\n    uVar3 = 1;\n  }\n  else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" (if "if") (parenthesized_expression "(param_2 == (FILE *)0x0)" (( "(") (binary_expression "param_2 == (FILE *)0x0" (identifier "param_2") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_003a87d0:\n    uVar3 = 1;\n  }" ({ "{") (labeled_statement "LAB_003a87d0:\n    uVar3 = 1;" (statement_identifier "LAB_003a87d0") (: ":") (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" (else "else") (compound_statement "{\n    pbVar4 = (byte *)*param_1;\n    while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }\n    uVar3 = 0;\n  }" ({ "{") (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" (identifier "pbVar4") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (while_statement "while (pbVar4 != (byte *)0x0) {\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }" (while "while") (parenthesized_expression "(pbVar4 != (byte *)0x0)" (( "(") (binary_expression "pbVar4 != (byte *)0x0" (identifier "pbVar4") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }\n      iVar2 = fputc(10,param_2);\n      if (iVar2 == -1) goto LAB_003a87d0;\n      param_1 = param_1 + 1;\n      pbVar4 = (byte *)*param_1;\n    }" ({ "{") (while_statement "while( true ) {\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        bVar1 = *pbVar4;\n        if (bVar1 == 0) break;\n        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;\n        pbVar4 = pbVar4 + 1;\n      }" ({ "{") (expression_statement "bVar1 = *pbVar4;" (assignment_expression "bVar1 = *pbVar4" (identifier "bVar1") (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (if_statement "if (bVar1 == 0) break;" (if "if") (parenthesized_expression "(bVar1 == 0)" (( "(") (binary_expression "bVar1 == 0" (identifier "bVar1") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;" (if "if") (parenthesized_expression "(((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1))" (( "(") (binary_expression "((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||\n           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)" (parenthesized_expression "((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1))" (( "(") (binary_expression "(((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)" (parenthesized_expression "(((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22))" (( "(") (binary_expression "((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))\n             || (bVar1 == 0x22)" (parenthesized_expression "((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))" (( "(") (binary_expression "(((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27)" (parenthesized_expression "(((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0)" (( "(") (binary_expression "((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0" (parenthesized_expression "((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40)" (( "(") (binary_expression "(&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40" (subscript_expression "(&DAT_004a20a0)[(uint)bVar1 * 2]" (parenthesized_expression "(&DAT_004a20a0)" (( "(") (pointer_expression "&DAT_004a20a0" (& "&") (identifier "DAT_004a20a0")) () ")")) ([ "[") (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar1 == 0x5c || bVar1 == 0x27)" (( "(") (binary_expression "bVar1 == 0x5c || bVar1 == 0x27" (binary_expression "bVar1 == 0x5c" (identifier "bVar1") (== "==") (number_literal "0x5c")) (|| "||") (binary_expression "bVar1 == 0x27" (identifier "bVar1") (== "==") (number_literal "0x27"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(bVar1 == 0x22)" (( "(") (binary_expression "bVar1 == 0x22" (identifier "bVar1") (== "==") (number_literal "0x22")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = fputc(0x5c,param_2), iVar2 == -1)" (( "(") (comma_expression "iVar2 = fputc(0x5c,param_2), iVar2 == -1" (assignment_expression "iVar2 = fputc(0x5c,param_2)" (identifier "iVar2") (= "=") (call_expression "fputc(0x5c,param_2)" (identifier "fputc") (argument_list "(0x5c,param_2)" (( "(") (number_literal "0x5c") (, ",") (identifier "param_2") () ")")))) (, ",") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)" (( "(") (comma_expression "iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1" (assignment_expression "iVar2 = fputc((int)(char)bVar1,param_2)" (identifier "iVar2") (= "=") (call_expression "fputc((int)(char)bVar1,param_2)" (identifier "fputc") (argument_list "((int)(char)bVar1,param_2)" (( "(") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) (, ",") (identifier "param_2") () ")")))) (, ",") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1"))) () ")"))) () ")")) (goto_statement "goto LAB_003a87d0;" (goto "goto") (statement_identifier "LAB_003a87d0") (; ";"))) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar2 = fputc(10,param_2);" (assignment_expression "iVar2 = fputc(10,param_2)" (identifier "iVar2") (= "=") (call_expression "fputc(10,param_2)" (identifier "fputc") (argument_list "(10,param_2)" (( "(") (number_literal "10") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar2 == -1) goto LAB_003a87d0;" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_003a87d0;" (goto "goto") (statement_identifier "LAB_003a87d0") (; ";"))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar4 = (byte *)*param_1;" (assignment_expression "pbVar4 = (byte *)*param_1" (identifier "pbVar4") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}"))) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int function_1(char **argv,type_1 *f)

{
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 MASKED(undefined4 *param_1,FILE *param_2)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  byte *pbVar4;
  
  if (param_2 == (FILE *)0x0) {
LAB_003a87d0:
    uVar3 = 1;
  }
  else {
    pbVar4 = (byte *)*param_1;
    while (pbVar4 != (byte *)0x0) {
      while( true ) {
        bVar1 = *pbVar4;
        if (bVar1 == 0) break;
        if (((((((&DAT_004a20a0)[(uint)bVar1 * 2] & 0x40) != 0) || (bVar1 == 0x5c || bVar1 == 0x27))
             || (bVar1 == 0x22)) && (iVar2 = fputc(0x5c,param_2), iVar2 == -1)) ||
           (iVar2 = fputc((int)(char)bVar1,param_2), iVar2 == -1)) goto LAB_003a87d0;
        pbVar4 = pbVar4 + 1;
      }
      iVar2 = fputc(10,param_2);
      if (iVar2 == -1) goto LAB_003a87d0;
      param_1 = param_1 + 1;
      pbVar4 = (byte *)*param_1;
    }
    uVar3 = 0;
  }
  return uVar3;
}

