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

void s_mri_endw(int ignore)

{
  char cVar1;
  char *pcVar2;
  size_t sVar3;
  
  if ((mri_control_stack != (mri_control_info *)0x0) && (mri_control_stack->type == mri_while)) {
    sVar3 = strlen(mri_control_stack->next);
    pcVar2 = (char *)xmalloc(sVar3 + 0x14);
    sprintf(pcVar2,"bra %s",mri_control_stack->next);
    mri_assemble(pcVar2);
    free(pcVar2);
    colon(mri_control_stack->bottom);
    pop_mri_control();
    if (flag_mri != 0) {
      cVar1 = is_end_of_line[(byte)*input_line_pointer];
      while (cVar1 == '\0') {
        input_line_pointer = (char *)((byte *)input_line_pointer + 1);
        cVar1 = is_end_of_line[(byte)*input_line_pointer];
      }
    }
    demand_empty_rest_of_line();
    return;
  }
  pcVar2 = (char *)dcgettext(0,"endw without while",5);
  as_bad(pcVar2);
  ignore_rest_of_line();
  return;
}



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

void FUN_00047e10(void)

{
  char cVar1;
  undefined4 uVar2;
  size_t sVar3;
  char *__s;
  
  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {
    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));
    __s = (char *)xmalloc(sVar3 + 0x14);
    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));
    FUN_00047dd0();
    free(__s);
    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));
    FUN_00041570();
    if (DAT_000816f4 != 0) {
      cVar1 = (&DAT_000782c0)[*DAT_000817b4];
      while (cVar1 == '\0') {
        DAT_000817b4 = DAT_000817b4 + 1;
        cVar1 = (&DAT_000782c0)[*DAT_000817b4];
      }
    }
    FUN_0002e3b0();
    return;
  }
  uVar2 = dcgettext(0,"endw without while",5);
  FUN_0002c070(uVar2);
  FUN_0002e1d0();
  return;
}


PUSH ESI
PUSH EBX
CALL 0x00017010
ADD EBX,0x301e9
SUB ESP,0x4
MOV EAX,dword ptr [EBX + 0x8f08]
TEST EAX,EAX
JZ 0x00047e30
CMP dword ptr [EAX + 0x4],0x3
JZ 0x00047e60
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe3e56]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000151a0
MOV dword ptr [ESP],EAX
CALL 0x0002c070
CALL 0x0002e1d0
ADD ESP,0x10
ADD ESP,0x4
POP EBX
POP ESI
RET
SUB ESP,0xc
PUSH dword ptr [EAX + 0x14]
CALL 0x00015420
ADD EAX,0x14
MOV dword ptr [ESP],EAX
CALL 0x00015770
ADD ESP,0xc
MOV ESI,EAX
MOV EAX,dword ptr [EBX + 0x8f08]
PUSH dword ptr [EAX + 0x14]
LEA EAX,[EBX + 0xfffe3e69]
PUSH EAX
PUSH ESI
CALL 0x00015640
MOV EAX,ESI
CALL 0x00047dd0
MOV dword ptr [ESP],ESI
CALL 0x00015760
POP EAX
MOV EAX,dword ptr [EBX + 0x8f08]
PUSH dword ptr [EAX + 0x18]
CALL 0x0003a710
CALL 0x00041570
LEA EAX,[EBX + 0x96f4]
ADD ESP,0x10
MOV EDX,dword ptr [EAX]
TEST EDX,EDX
JZ 0x00047ef0
LEA ESI,[EBX + 0x97b4]
LEA ECX,[EBX + 0x2c0]
MOV EAX,dword ptr [ESI]
MOVZX EDX,byte ptr [EAX]
CMP byte ptr [ECX + EDX*0x1],0x0
JNZ 0x00047ef0
ADD EAX,0x1
LEA ESI,[ESI]
MOV EDX,EAX
MOV dword ptr [ESI],EAX
ADD EAX,0x1
MOVZX EDX,byte ptr [EDX]
CMP byte ptr [ECX + EDX*0x1],0x0
JZ 0x00047ee0
CALL 0x0002e3b0
ADD ESP,0x4
POP EBX
POP ESI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00047e10(void)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  \n  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }\n  uVar2 = dcgettext(0,"endw without while",5);\n  FUN_0002c070(uVar2);\n  FUN_0002e1d0();\n  return;\n}\n\n" comment (function_definition "void FUN_00047e10(void)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  \n  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }\n  uVar2 = dcgettext(0,"endw without while",5);\n  FUN_0002c070(uVar2);\n  FUN_0002e1d0();\n  return;\n}" primitive_type (function_declarator "FUN_00047e10(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  \n  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }\n  uVar2 = dcgettext(0,"endw without while",5);\n  FUN_0002c070(uVar2);\n  FUN_0002e1d0();\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (if_statement "if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }" if (parenthesized_expression "((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3))" ( (binary_expression "(DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)" (parenthesized_expression "(DAT_00080f08 != 0)" ( (binary_expression "DAT_00080f08 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(DAT_00080f08 + 4) == 3)" ( (binary_expression "*(int *)(DAT_00080f08 + 4) == 3" (pointer_expression "*(int *)(DAT_00080f08 + 4)" * (cast_expression "(int *)(DAT_00080f08 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00080f08 + 4)" ( (binary_expression "DAT_00080f08 + 4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }" { (expression_statement "sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));" (assignment_expression "sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14))" identifier = (call_expression "strlen(*(char **)(DAT_00080f08 + 0x14))" identifier (argument_list "(*(char **)(DAT_00080f08 + 0x14))" ( (pointer_expression "*(char **)(DAT_00080f08 + 0x14)" * (cast_expression "(char **)(DAT_00080f08 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_00080f08 + 0x14)" ( (binary_expression "DAT_00080f08 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "__s = (char *)xmalloc(sVar3 + 0x14);" (assignment_expression "__s = (char *)xmalloc(sVar3 + 0x14)" identifier = (cast_expression "(char *)xmalloc(sVar3 + 0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar3 + 0x14)" identifier (argument_list "(sVar3 + 0x14)" ( (binary_expression "sVar3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));" (call_expression "sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14))" identifier (argument_list "(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14))" ( identifier , (string_literal ""bra %s"" " string_content ") , (pointer_expression "*(undefined4 *)(DAT_00080f08 + 0x14)" * (cast_expression "(undefined4 *)(DAT_00080f08 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00080f08 + 0x14)" ( (binary_expression "DAT_00080f08 + 0x14" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00047dd0();" (call_expression "FUN_00047dd0()" identifier (argument_list "()" ( ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));" (call_expression "FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18))" identifier (argument_list "(*(undefined4 *)(DAT_00080f08 + 0x18))" ( (pointer_expression "*(undefined4 *)(DAT_00080f08 + 0x18)" * (cast_expression "(undefined4 *)(DAT_00080f08 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00080f08 + 0x18)" ( (binary_expression "DAT_00080f08 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00041570();" (call_expression "FUN_00041570()" identifier (argument_list "()" ( ))) ;) (if_statement "if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }" if (parenthesized_expression "(DAT_000816f4 != 0)" ( (binary_expression "DAT_000816f4 != 0" identifier != number_literal) )) (compound_statement "{\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }" { (expression_statement "cVar1 = (&DAT_000782c0)[*DAT_000817b4];" (assignment_expression "cVar1 = (&DAT_000782c0)[*DAT_000817b4]" identifier = (subscript_expression "(&DAT_000782c0)[*DAT_000817b4]" (parenthesized_expression "(&DAT_000782c0)" ( (pointer_expression "&DAT_000782c0" & identifier) )) [ (pointer_expression "*DAT_000817b4" * identifier) ])) ;) (while_statement "while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }" { (expression_statement "DAT_000817b4 = DAT_000817b4 + 1;" (assignment_expression "DAT_000817b4 = DAT_000817b4 + 1" identifier = (binary_expression "DAT_000817b4 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = (&DAT_000782c0)[*DAT_000817b4];" (assignment_expression "cVar1 = (&DAT_000782c0)[*DAT_000817b4]" identifier = (subscript_expression "(&DAT_000782c0)[*DAT_000817b4]" (parenthesized_expression "(&DAT_000782c0)" ( (pointer_expression "&DAT_000782c0" & identifier) )) [ (pointer_expression "*DAT_000817b4" * identifier) ])) ;) })) })) (expression_statement "FUN_0002e3b0();" (call_expression "FUN_0002e3b0()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar2 = dcgettext(0,"endw without while",5);" (assignment_expression "uVar2 = dcgettext(0,"endw without while",5)" identifier = (call_expression "dcgettext(0,"endw without while",5)" identifier (argument_list "(0,"endw without while",5)" ( number_literal , (string_literal ""endw without while"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0002c070(uVar2);" (call_expression "FUN_0002c070(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "FUN_0002e1d0();" (call_expression "FUN_0002e1d0()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nvoid s_mri_endw(int ignore)\n\n{\n  char cVar1;\n  char *pcVar2;\n  size_t sVar3;\n  \n  if ((mri_control_stack != (mri_control_info *)0x0) && (mri_control_stack->type == mri_while)) {\n    sVar3 = strlen(mri_control_stack->next);\n    pcVar2 = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(pcVar2,"bra %s",mri_control_stack->next);\n    mri_assemble(pcVar2);\n    free(pcVar2);\n    colon(mri_control_stack->bottom);\n    pop_mri_control();\n    if (flag_mri != 0) {\n      cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      while (cVar1 == '\0') {\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }\n    }\n    demand_empty_rest_of_line();\n    return;\n  }\n  pcVar2 = (char *)dcgettext(0,"endw without while",5);\n  as_bad(pcVar2);\n  ignore_rest_of_line();\n  return;\n}\n\n" comment comment (function_definition "void s_mri_endw(int ignore)\n\n{\n  char cVar1;\n  char *pcVar2;\n  size_t sVar3;\n  \n  if ((mri_control_stack != (mri_control_info *)0x0) && (mri_control_stack->type == mri_while)) {\n    sVar3 = strlen(mri_control_stack->next);\n    pcVar2 = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(pcVar2,"bra %s",mri_control_stack->next);\n    mri_assemble(pcVar2);\n    free(pcVar2);\n    colon(mri_control_stack->bottom);\n    pop_mri_control();\n    if (flag_mri != 0) {\n      cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      while (cVar1 == '\0') {\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }\n    }\n    demand_empty_rest_of_line();\n    return;\n  }\n  pcVar2 = (char *)dcgettext(0,"endw without while",5);\n  as_bad(pcVar2);\n  ignore_rest_of_line();\n  return;\n}" primitive_type (function_declarator "s_mri_endw(int ignore)" identifier (parameter_list "(int ignore)" ( (parameter_declaration "int ignore" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  size_t sVar3;\n  \n  if ((mri_control_stack != (mri_control_info *)0x0) && (mri_control_stack->type == mri_while)) {\n    sVar3 = strlen(mri_control_stack->next);\n    pcVar2 = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(pcVar2,"bra %s",mri_control_stack->next);\n    mri_assemble(pcVar2);\n    free(pcVar2);\n    colon(mri_control_stack->bottom);\n    pop_mri_control();\n    if (flag_mri != 0) {\n      cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      while (cVar1 == '\0') {\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }\n    }\n    demand_empty_rest_of_line();\n    return;\n  }\n  pcVar2 = (char *)dcgettext(0,"endw without while",5);\n  as_bad(pcVar2);\n  ignore_rest_of_line();\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (if_statement "if ((mri_control_stack != (mri_control_info *)0x0) && (mri_control_stack->type == mri_while)) {\n    sVar3 = strlen(mri_control_stack->next);\n    pcVar2 = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(pcVar2,"bra %s",mri_control_stack->next);\n    mri_assemble(pcVar2);\n    free(pcVar2);\n    colon(mri_control_stack->bottom);\n    pop_mri_control();\n    if (flag_mri != 0) {\n      cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      while (cVar1 == '\0') {\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }\n    }\n    demand_empty_rest_of_line();\n    return;\n  }" if (parenthesized_expression "((mri_control_stack != (mri_control_info *)0x0) && (mri_control_stack->type == mri_while))" ( (binary_expression "(mri_control_stack != (mri_control_info *)0x0) && (mri_control_stack->type == mri_while)" (parenthesized_expression "(mri_control_stack != (mri_control_info *)0x0)" ( (binary_expression "mri_control_stack != (mri_control_info *)0x0" identifier != (cast_expression "(mri_control_info *)0x0" ( (type_descriptor "mri_control_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(mri_control_stack->type == mri_while)" ( (binary_expression "mri_control_stack->type == mri_while" (field_expression "mri_control_stack->type" identifier -> field_identifier) == identifier) ))) )) (compound_statement "{\n    sVar3 = strlen(mri_control_stack->next);\n    pcVar2 = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(pcVar2,"bra %s",mri_control_stack->next);\n    mri_assemble(pcVar2);\n    free(pcVar2);\n    colon(mri_control_stack->bottom);\n    pop_mri_control();\n    if (flag_mri != 0) {\n      cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      while (cVar1 == '\0') {\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }\n    }\n    demand_empty_rest_of_line();\n    return;\n  }" { (expression_statement "sVar3 = strlen(mri_control_stack->next);" (assignment_expression "sVar3 = strlen(mri_control_stack->next)" identifier = (call_expression "strlen(mri_control_stack->next)" identifier (argument_list "(mri_control_stack->next)" ( (field_expression "mri_control_stack->next" identifier -> field_identifier) )))) ;) (expression_statement "pcVar2 = (char *)xmalloc(sVar3 + 0x14);" (assignment_expression "pcVar2 = (char *)xmalloc(sVar3 + 0x14)" identifier = (cast_expression "(char *)xmalloc(sVar3 + 0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar3 + 0x14)" identifier (argument_list "(sVar3 + 0x14)" ( (binary_expression "sVar3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "sprintf(pcVar2,"bra %s",mri_control_stack->next);" (call_expression "sprintf(pcVar2,"bra %s",mri_control_stack->next)" identifier (argument_list "(pcVar2,"bra %s",mri_control_stack->next)" ( identifier , (string_literal ""bra %s"" " string_content ") , (field_expression "mri_control_stack->next" identifier -> field_identifier) ))) ;) (expression_statement "mri_assemble(pcVar2);" (call_expression "mri_assemble(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (expression_statement "colon(mri_control_stack->bottom);" (call_expression "colon(mri_control_stack->bottom)" identifier (argument_list "(mri_control_stack->bottom)" ( (field_expression "mri_control_stack->bottom" identifier -> field_identifier) ))) ;) (expression_statement "pop_mri_control();" (call_expression "pop_mri_control()" identifier (argument_list "()" ( ))) ;) (if_statement "if (flag_mri != 0) {\n      cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      while (cVar1 == '\0') {\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }\n    }" if (parenthesized_expression "(flag_mri != 0)" ( (binary_expression "flag_mri != 0" identifier != number_literal) )) (compound_statement "{\n      cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      while (cVar1 == '\0') {\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }\n    }" { (expression_statement "cVar1 = is_end_of_line[(byte)*input_line_pointer];" (assignment_expression "cVar1 = is_end_of_line[(byte)*input_line_pointer]" identifier = (subscript_expression "is_end_of_line[(byte)*input_line_pointer]" identifier [ (binary_expression "(byte)*input_line_pointer" (parenthesized_expression "(byte)" ( identifier )) * identifier) ])) ;) (while_statement "while (cVar1 == '\0') {\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        input_line_pointer = (char *)((byte *)input_line_pointer + 1);\n        cVar1 = is_end_of_line[(byte)*input_line_pointer];\n      }" { (expression_statement "input_line_pointer = (char *)((byte *)input_line_pointer + 1);" (assignment_expression "input_line_pointer = (char *)((byte *)input_line_pointer + 1)" identifier = (cast_expression "(char *)((byte *)input_line_pointer + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input_line_pointer + 1)" ( (binary_expression "(byte *)input_line_pointer + 1" (cast_expression "(byte *)input_line_pointer" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "cVar1 = is_end_of_line[(byte)*input_line_pointer];" (assignment_expression "cVar1 = is_end_of_line[(byte)*input_line_pointer]" identifier = (subscript_expression "is_end_of_line[(byte)*input_line_pointer]" identifier [ (binary_expression "(byte)*input_line_pointer" (parenthesized_expression "(byte)" ( identifier )) * identifier) ])) ;) })) })) (expression_statement "demand_empty_rest_of_line();" (call_expression "demand_empty_rest_of_line()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar2 = (char *)dcgettext(0,"endw without while",5);" (assignment_expression "pcVar2 = (char *)dcgettext(0,"endw without while",5)" identifier = (cast_expression "(char *)dcgettext(0,"endw without while",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"endw without while",5)" identifier (argument_list "(0,"endw without while",5)" ( number_literal , (string_literal ""endw without while"" " string_content ") , number_literal ))))) ;) (expression_statement "as_bad(pcVar2);" (call_expression "as_bad(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (expression_statement "ignore_rest_of_line();" (call_expression "ignore_rest_of_line()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00047e10(void)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  \n  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }\n  uVar2 = dcgettext(0,"endw without while",5);\n  FUN_0002c070(uVar2);\n  FUN_0002e1d0();\n  return;\n}\n\n" (function_definition "void FUN_00047e10(void)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  \n  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }\n  uVar2 = dcgettext(0,"endw without while",5);\n  FUN_0002c070(uVar2);\n  FUN_0002e1d0();\n  return;\n}" primitive_type (function_declarator "FUN_00047e10(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  \n  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }\n  uVar2 = dcgettext(0,"endw without while",5);\n  FUN_0002c070(uVar2);\n  FUN_0002e1d0();\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (if_statement "if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }" if (parenthesized_expression "((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3))" ( (binary_expression "(DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)" (parenthesized_expression "(DAT_00080f08 != 0)" ( (binary_expression "DAT_00080f08 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(DAT_00080f08 + 4) == 3)" ( (binary_expression "*(int *)(DAT_00080f08 + 4) == 3" (pointer_expression "*(int *)(DAT_00080f08 + 4)" * (cast_expression "(int *)(DAT_00080f08 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00080f08 + 4)" ( (binary_expression "DAT_00080f08 + 4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }" { (expression_statement "sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));" (assignment_expression "sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14))" identifier = (call_expression "strlen(*(char **)(DAT_00080f08 + 0x14))" identifier (argument_list "(*(char **)(DAT_00080f08 + 0x14))" ( (pointer_expression "*(char **)(DAT_00080f08 + 0x14)" * (cast_expression "(char **)(DAT_00080f08 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_00080f08 + 0x14)" ( (binary_expression "DAT_00080f08 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "__s = (char *)xmalloc(sVar3 + 0x14);" (assignment_expression "__s = (char *)xmalloc(sVar3 + 0x14)" identifier = (cast_expression "(char *)xmalloc(sVar3 + 0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar3 + 0x14)" identifier (argument_list "(sVar3 + 0x14)" ( (binary_expression "sVar3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));" (call_expression "sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14))" identifier (argument_list "(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14))" ( identifier , (string_literal ""bra %s"" " string_content ") , (pointer_expression "*(undefined4 *)(DAT_00080f08 + 0x14)" * (cast_expression "(undefined4 *)(DAT_00080f08 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00080f08 + 0x14)" ( (binary_expression "DAT_00080f08 + 0x14" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00047dd0();" (call_expression "FUN_00047dd0()" identifier (argument_list "()" ( ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));" (call_expression "FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18))" identifier (argument_list "(*(undefined4 *)(DAT_00080f08 + 0x18))" ( (pointer_expression "*(undefined4 *)(DAT_00080f08 + 0x18)" * (cast_expression "(undefined4 *)(DAT_00080f08 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00080f08 + 0x18)" ( (binary_expression "DAT_00080f08 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00041570();" (call_expression "FUN_00041570()" identifier (argument_list "()" ( ))) ;) (if_statement "if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }" if (parenthesized_expression "(DAT_000816f4 != 0)" ( (binary_expression "DAT_000816f4 != 0" identifier != number_literal) )) (compound_statement "{\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }" { (expression_statement "cVar1 = (&DAT_000782c0)[*DAT_000817b4];" (assignment_expression "cVar1 = (&DAT_000782c0)[*DAT_000817b4]" identifier = (subscript_expression "(&DAT_000782c0)[*DAT_000817b4]" (parenthesized_expression "(&DAT_000782c0)" ( (pointer_expression "&DAT_000782c0" & identifier) )) [ (pointer_expression "*DAT_000817b4" * identifier) ])) ;) (while_statement "while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }" { (expression_statement "DAT_000817b4 = DAT_000817b4 + 1;" (assignment_expression "DAT_000817b4 = DAT_000817b4 + 1" identifier = (binary_expression "DAT_000817b4 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = (&DAT_000782c0)[*DAT_000817b4];" (assignment_expression "cVar1 = (&DAT_000782c0)[*DAT_000817b4]" identifier = (subscript_expression "(&DAT_000782c0)[*DAT_000817b4]" (parenthesized_expression "(&DAT_000782c0)" ( (pointer_expression "&DAT_000782c0" & identifier) )) [ (pointer_expression "*DAT_000817b4" * identifier) ])) ;) })) })) (expression_statement "FUN_0002e3b0();" (call_expression "FUN_0002e3b0()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar2 = dcgettext(0,"endw without while",5);" (assignment_expression "uVar2 = dcgettext(0,"endw without while",5)" identifier = (call_expression "dcgettext(0,"endw without while",5)" identifier (argument_list "(0,"endw without while",5)" ( number_literal , (string_literal ""endw without while"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0002c070(uVar2);" (call_expression "FUN_0002c070(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "FUN_0002e1d0();" (call_expression "FUN_0002e1d0()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ])) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ])) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00047e10(void)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  \n  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }\n  uVar2 = dcgettext(0,"endw without while",5);\n  FUN_0002c070(uVar2);\n  FUN_0002e1d0();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00047e10(void)" (identifier "FUN_00047e10") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  size_t sVar3;\n  char *__s;\n  \n  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }\n  uVar2 = dcgettext(0,"endw without while",5);\n  FUN_0002c070(uVar2);\n  FUN_0002e1d0();\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (if_statement "if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }" (if "if") (parenthesized_expression "((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3))" (( "(") (binary_expression "(DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)" (parenthesized_expression "(DAT_00080f08 != 0)" (( "(") (binary_expression "DAT_00080f08 != 0" (identifier "DAT_00080f08") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(DAT_00080f08 + 4) == 3)" (( "(") (binary_expression "*(int *)(DAT_00080f08 + 4) == 3" (pointer_expression "*(int *)(DAT_00080f08 + 4)" (* "*") (cast_expression "(int *)(DAT_00080f08 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00080f08 + 4)" (( "(") (binary_expression "DAT_00080f08 + 4" (identifier "DAT_00080f08") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "3")) () ")"))) () ")")) (compound_statement "{\n    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));\n    __s = (char *)xmalloc(sVar3 + 0x14);\n    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));\n    FUN_00047dd0();\n    free(__s);\n    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));\n    FUN_00041570();\n    if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }\n    FUN_0002e3b0();\n    return;\n  }" ({ "{") (expression_statement "sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));" (assignment_expression "sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14))" (identifier "sVar3") (= "=") (call_expression "strlen(*(char **)(DAT_00080f08 + 0x14))" (identifier "strlen") (argument_list "(*(char **)(DAT_00080f08 + 0x14))" (( "(") (pointer_expression "*(char **)(DAT_00080f08 + 0x14)" (* "*") (cast_expression "(char **)(DAT_00080f08 + 0x14)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_00080f08 + 0x14)" (( "(") (binary_expression "DAT_00080f08 + 0x14" (identifier "DAT_00080f08") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "__s = (char *)xmalloc(sVar3 + 0x14);" (assignment_expression "__s = (char *)xmalloc(sVar3 + 0x14)" (identifier "__s") (= "=") (cast_expression "(char *)xmalloc(sVar3 + 0x14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar3 + 0x14)" (identifier "xmalloc") (argument_list "(sVar3 + 0x14)" (( "(") (binary_expression "sVar3 + 0x14" (identifier "sVar3") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));" (call_expression "sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14))" (identifier "sprintf") (argument_list "(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14))" (( "(") (identifier "__s") (, ",") (string_literal ""bra %s"" (" """) (string_content "bra %s") (" """)) (, ",") (pointer_expression "*(undefined4 *)(DAT_00080f08 + 0x14)" (* "*") (cast_expression "(undefined4 *)(DAT_00080f08 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00080f08 + 0x14)" (( "(") (binary_expression "DAT_00080f08 + 0x14" (identifier "DAT_00080f08") (+ "+") (number_literal "0x14")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00047dd0();" (call_expression "FUN_00047dd0()" (identifier "FUN_00047dd0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "free(__s);" (call_expression "free(__s)" (identifier "free") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (expression_statement "FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));" (call_expression "FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18))" (identifier "FUN_0003a710") (argument_list "(*(undefined4 *)(DAT_00080f08 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(DAT_00080f08 + 0x18)" (* "*") (cast_expression "(undefined4 *)(DAT_00080f08 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00080f08 + 0x18)" (( "(") (binary_expression "DAT_00080f08 + 0x18" (identifier "DAT_00080f08") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00041570();" (call_expression "FUN_00041570()" (identifier "FUN_00041570") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (DAT_000816f4 != 0) {\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }" (if "if") (parenthesized_expression "(DAT_000816f4 != 0)" (( "(") (binary_expression "DAT_000816f4 != 0" (identifier "DAT_000816f4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }\n    }" ({ "{") (expression_statement "cVar1 = (&DAT_000782c0)[*DAT_000817b4];" (assignment_expression "cVar1 = (&DAT_000782c0)[*DAT_000817b4]" (identifier "cVar1") (= "=") (subscript_expression "(&DAT_000782c0)[*DAT_000817b4]" (parenthesized_expression "(&DAT_000782c0)" (( "(") (pointer_expression "&DAT_000782c0" (& "&") (identifier "DAT_000782c0")) () ")")) ([ "[") (pointer_expression "*DAT_000817b4" (* "*") (identifier "DAT_000817b4")) (] "]"))) (; ";")) (while_statement "while (cVar1 == '\0') {\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }" (while "while") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        DAT_000817b4 = DAT_000817b4 + 1;\n        cVar1 = (&DAT_000782c0)[*DAT_000817b4];\n      }" ({ "{") (expression_statement "DAT_000817b4 = DAT_000817b4 + 1;" (assignment_expression "DAT_000817b4 = DAT_000817b4 + 1" (identifier "DAT_000817b4") (= "=") (binary_expression "DAT_000817b4 + 1" (identifier "DAT_000817b4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = (&DAT_000782c0)[*DAT_000817b4];" (assignment_expression "cVar1 = (&DAT_000782c0)[*DAT_000817b4]" (identifier "cVar1") (= "=") (subscript_expression "(&DAT_000782c0)[*DAT_000817b4]" (parenthesized_expression "(&DAT_000782c0)" (( "(") (pointer_expression "&DAT_000782c0" (& "&") (identifier "DAT_000782c0")) () ")")) ([ "[") (pointer_expression "*DAT_000817b4" (* "*") (identifier "DAT_000817b4")) (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0002e3b0();" (call_expression "FUN_0002e3b0()" (identifier "FUN_0002e3b0") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar2 = dcgettext(0,"endw without while",5);" (assignment_expression "uVar2 = dcgettext(0,"endw without while",5)" (identifier "uVar2") (= "=") (call_expression "dcgettext(0,"endw without while",5)" (identifier "dcgettext") (argument_list "(0,"endw without while",5)" (( "(") (number_literal "0") (, ",") (string_literal ""endw without while"" (" """) (string_content "endw without while") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002c070(uVar2);" (call_expression "FUN_0002c070(uVar2)" (identifier "FUN_0002c070") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "FUN_0002e1d0();" (call_expression "FUN_0002e1d0()" (identifier "FUN_0002e1d0") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(int ignore)

{
  char var_13;
  char *pcVar2;
  size_t var_5;
  
  if ((var_1 != (type_1 *)0x0) && (var_1->type == var_2)) {
    var_5 = var_3(var_1->next);
    pcVar2 = (char *)var_4(var_5 + 0x14);
    var_6(pcVar2,"bra %s",var_1->next);
    var_7(pcVar2);
    var_8(pcVar2);
    var_9(var_1->bottom);
    var_10();
    if (var_11 != 0) {
      var_13 = is_end_of_line[(type_2)*var_12];
      while (var_13 == '\0') {
        var_12 = (char *)((type_2 *)var_12 + 1);
        var_13 = is_end_of_line[(type_2)*var_12];
      }
    }
    var_14();
    return;
  }
  pcVar2 = (char *)var_15(0,"endw without while",5);
  var_16(pcVar2);
  var_17();
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))))

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

void MASKED(void)

{
  char cVar1;
  undefined4 uVar2;
  size_t sVar3;
  char *__s;
  
  if ((DAT_00080f08 != 0) && (*(int *)(DAT_00080f08 + 4) == 3)) {
    sVar3 = strlen(*(char **)(DAT_00080f08 + 0x14));
    __s = (char *)xmalloc(sVar3 + 0x14);
    sprintf(__s,"bra %s",*(undefined4 *)(DAT_00080f08 + 0x14));
    FUN_00047dd0();
    free(__s);
    FUN_0003a710(*(undefined4 *)(DAT_00080f08 + 0x18));
    FUN_00041570();
    if (DAT_000816f4 != 0) {
      cVar1 = (&DAT_000782c0)[*DAT_000817b4];
      while (cVar1 == '\0') {
        DAT_000817b4 = DAT_000817b4 + 1;
        cVar1 = (&DAT_000782c0)[*DAT_000817b4];
      }
    }
    FUN_0002e3b0();
    return;
  }
  uVar2 = dcgettext(0,"endw without while",5);
  FUN_0002c070(uVar2);
  FUN_0002e1d0();
  return;
}

