
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void
   do_supported_emulations(Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>
   * this, vector<char_const*,_std::allocator<char_const*>_> * emulations) */

void __thiscall
gold::
Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>
::do_supported_emulations
          (Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>
           *this,vector<char_const*,_std::allocator<char_const*>_> *emulations)

{
  char *pcVar1;
  char **ppcVar2;
  iterator __position;
  iterator __position_00;
  
  if (this->emulation_ == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/nacl.h",0x90,"do_supported_emulations");
  }
  pcVar1 = (this->super_Target_selector_i386).super_Target_selector_freebsd.super_Target_selector.
           emulation_;
  if (pcVar1 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/target-select.h",200,"do_supported_emulations");
  }
  ppcVar2 = (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.
            _M_finish;
  __position._M_current =
       (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.
       _M_end_of_storage;
  if (ppcVar2 == __position._M_current) {
    std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>
              (emulations,__position,
               &(this->super_Target_selector_i386).super_Target_selector_freebsd.
                super_Target_selector.emulation_);
    __position_00._M_current =
         (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.
         _M_finish;
    if (__position_00._M_current ==
        (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.
        _M_end_of_storage) goto LAB_000509cb;
  }
  else {
    *ppcVar2 = pcVar1;
    __position_00._M_current = ppcVar2 + 1;
    (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =
         __position_00._M_current;
    if (__position_00._M_current == __position._M_current) {
LAB_000509cb:
      std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>
                (emulations,__position_00,&this->emulation_);
      return;
    }
  }
  *__position_00._M_current = this->emulation_;
  (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =
       __position_00._M_current + 1;
  return;
}



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

void __regparm2 FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  
  if (*(int *)(param_3 + 0x5c) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);
  }
  if (*(int *)(param_3 + 0x14) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);
  }
  piVar2 = *(int **)(param_4 + 4);
  piVar1 = *(int **)(param_4 + 8);
  if (piVar2 == piVar1) {
    FUN_00056900(param_4,piVar1,param_3 + 0x14);
    piVar2 = *(int **)(param_4 + 4);
    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;
  }
  else {
    *piVar2 = *(int *)(param_3 + 0x14);
    piVar2 = piVar2 + 1;
    *(int **)(param_4 + 4) = piVar2;
    if (piVar2 == piVar1) {
LAB_000509cb:
      FUN_00056900(param_4,piVar2,param_3 + 0x5c);
      return;
    }
  }
  *piVar2 = *(int *)(param_3 + 0x5c);
  *(int **)(param_4 + 4) = piVar2 + 1;
  return;
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV EDI,dword ptr [ESP + 0x10]
CALL 0x00035680
ADD EBX,0x2ee694
MOV ESI,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [EDI + 0x5c]
TEST ECX,ECX
JZ 0x000509e0
MOV ECX,dword ptr [EDI + 0x14]
TEST ECX,ECX
JZ 0x000509f9
MOV EAX,dword ptr [ESI + 0x4]
MOV EDX,dword ptr [ESI + 0x8]
CMP EAX,EDX
JZ 0x000509b0
MOV dword ptr [EAX],ECX
ADD EAX,0x4
MOV dword ptr [ESI + 0x4],EAX
CMP EAX,EDX
JZ 0x000509cb
MOV EDX,dword ptr [EDI + 0x5c]
ADD EAX,0x4
MOV dword ptr [EAX + -0x4],EDX
MOV dword ptr [ESI + 0x4],EAX
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0x4
LEA EAX,[EDI + 0x14]
PUSH EAX
PUSH EDX
PUSH ESI
CALL 0x00056900
MOV EAX,dword ptr [ESI + 0x4]
MOV EDX,dword ptr [ESI + 0x8]
ADD ESP,0x10
CMP EAX,EDX
JNZ 0x0005099a
SUB ESP,0x4
ADD EDI,0x5c
PUSH EDI
PUSH EAX
PUSH ESI
CALL 0x00056900
ADD ESP,0x10
POP EBX
POP ESI
POP EDI
RET
PUSH EDX
LEA EDX,[EBX + 0xfff0e034]
PUSH EDX
LEA EDX,[EBX + 0xfff0c3f4]
PUSH 0x90
PUSH EDX
CALL 0x0008b620
LEA EDX,[EBX + 0xfff0e860]
PUSH EAX
PUSH EDX
LEA EDX,[EBX + 0xfff0ee12]
PUSH 0xc8
PUSH EDX
CALL 0x0008b620
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm2 FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  if (*(int *)(param_3 + 0x5c) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }\n  if (*(int *)(param_3 + 0x14) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }\n  piVar2 = *(int **)(param_4 + 4);\n  piVar1 = *(int **)(param_4 + 8);\n  if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }\n  *piVar2 = *(int *)(param_3 + 0x5c);\n  *(int **)(param_4 + 4) = piVar2 + 1;\n  return;\n}\n\n" comment (function_definition "void __regparm2 FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  if (*(int *)(param_3 + 0x5c) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }\n  if (*(int *)(param_3 + 0x14) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }\n  piVar2 = *(int **)(param_4 + 4);\n  piVar1 = *(int **)(param_4 + 8);\n  if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }\n  *piVar2 = *(int *)(param_3 + 0x5c);\n  *(int **)(param_4 + 4) = piVar2 + 1;\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  \n  if (*(int *)(param_3 + 0x5c) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }\n  if (*(int *)(param_3 + 0x14) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }\n  piVar2 = *(int **)(param_4 + 4);\n  piVar1 = *(int **)(param_4 + 8);\n  if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }\n  *piVar2 = *(int *)(param_3 + 0x5c);\n  *(int **)(param_4 + 4) = piVar2 + 1;\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (if_statement "if (*(int *)(param_3 + 0x5c) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x5c) == 0)" ( (binary_expression "*(int *)(param_3 + 0x5c) == 0" (pointer_expression "*(int *)(param_3 + 0x5c)" * (cast_expression "(int *)(param_3 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x5c)" ( (binary_expression "param_3 + 0x5c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }" { comment (expression_statement "FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);" (call_expression "FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2)" identifier (argument_list "("../../gold/nacl.h",0x90,"do_supported_emulations",param_2)" ( (string_literal ""../../gold/nacl.h"" " string_content ") , number_literal , (string_literal ""do_supported_emulations"" " string_content ") , identifier ))) ;) })) (if_statement "if (*(int *)(param_3 + 0x14) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x14) == 0)" ( (binary_expression "*(int *)(param_3 + 0x14) == 0" (pointer_expression "*(int *)(param_3 + 0x14)" * (cast_expression "(int *)(param_3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }" { comment (expression_statement "FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);" (call_expression "FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1)" identifier (argument_list "("../../gold/target-select.h",200,"do_supported_emulations",param_1)" ( (string_literal ""../../gold/target-select.h"" " string_content ") , number_literal , (string_literal ""do_supported_emulations"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar2 = *(int **)(param_4 + 4);" (assignment_expression "piVar2 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = *(int **)(param_4 + 8);" (assignment_expression "piVar1 = *(int **)(param_4 + 8)" identifier = (pointer_expression "*(int **)(param_4 + 8)" * (cast_expression "(int **)(param_4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" if (parenthesized_expression "(piVar2 == piVar1)" ( (binary_expression "piVar2 == piVar1" identifier == identifier) )) (compound_statement "{\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }" { (expression_statement "FUN_00056900(param_4,piVar1,param_3 + 0x14);" (call_expression "FUN_00056900(param_4,piVar1,param_3 + 0x14)" identifier (argument_list "(param_4,piVar1,param_3 + 0x14)" ( identifier , identifier , (binary_expression "param_3 + 0x14" identifier + number_literal) ))) ;) (expression_statement "piVar2 = *(int **)(param_4 + 4);" (assignment_expression "piVar2 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;" if (parenthesized_expression "(piVar2 == *(int **)(param_4 + 8))" ( (binary_expression "piVar2 == *(int **)(param_4 + 8)" identifier == (pointer_expression "*(int **)(param_4 + 8)" * (cast_expression "(int **)(param_4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) ))))) )) (goto_statement "goto LAB_000509cb;" goto statement_identifier ;)) }) (else_clause "else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" else (compound_statement "{\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" { (expression_statement "*piVar2 = *(int *)(param_3 + 0x14);" (assignment_expression "*piVar2 = *(int *)(param_3 + 0x14)" (pointer_expression "*piVar2" * identifier) = (pointer_expression "*(int *)(param_3 + 0x14)" * (cast_expression "(int *)(param_3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) (expression_statement "*(int **)(param_4 + 4) = piVar2;" (assignment_expression "*(int **)(param_4 + 4) = piVar2" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }" if (parenthesized_expression "(piVar2 == piVar1)" ( (binary_expression "piVar2 == piVar1" identifier == identifier) )) (compound_statement "{\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }" { (labeled_statement "LAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);" statement_identifier : (expression_statement "FUN_00056900(param_4,piVar2,param_3 + 0x5c);" (call_expression "FUN_00056900(param_4,piVar2,param_3 + 0x5c)" identifier (argument_list "(param_4,piVar2,param_3 + 0x5c)" ( identifier , identifier , (binary_expression "param_3 + 0x5c" identifier + number_literal) ))) ;)) (return_statement "return;" return ;) })) }))) (expression_statement "*piVar2 = *(int *)(param_3 + 0x5c);" (assignment_expression "*piVar2 = *(int *)(param_3 + 0x5c)" (pointer_expression "*piVar2" * identifier) = (pointer_expression "*(int *)(param_3 + 0x5c)" * (cast_expression "(int *)(param_3 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x5c)" ( (binary_expression "param_3 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_4 + 4) = piVar2 + 1;" (assignment_expression "*(int **)(param_4 + 4) = piVar2 + 1" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: void\n   do_supported_emulations(Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n   * this, vector<char_const*,_std::allocator<char_const*>_> * emulations) */\n\nvoid __thiscall\ngold::\nTarget_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n::do_supported_emulations\n          (Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n           *this,vector<char_const*,_std::allocator<char_const*>_> *emulations)\n\n{\n  char *pcVar1;\n  char **ppcVar2;\n  iterator __position;\n  iterator __position_00;\n  \n  if (this->emulation_ == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/nacl.h",0x90,"do_supported_emulations");\n  }\n  pcVar1 = (this->super_Target_selector_i386).super_Target_selector_freebsd.super_Target_selector.\n           emulation_;\n  if (pcVar1 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/target-select.h",200,"do_supported_emulations");\n  }\n  ppcVar2 = (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n            _M_finish;\n  __position._M_current =\n       (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n       _M_end_of_storage;\n  if (ppcVar2 == __position._M_current) {\n    std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n              (emulations,__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_);\n    __position_00._M_current =\n         (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n         _M_finish;\n    if (__position_00._M_current ==\n        (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n        _M_end_of_storage) goto LAB_000509cb;\n  }\n  else {\n    *ppcVar2 = pcVar1;\n    __position_00._M_current = ppcVar2 + 1;\n    (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position_00._M_current;\n    if (__position_00._M_current == __position._M_current) {\nLAB_000509cb:\n      std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);\n      return;\n    }\n  }\n  *__position_00._M_current = this->emulation_;\n  (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n       __position_00._M_current + 1;\n  return;\n}\n\n" comment comment comment (declaration "void __thiscall\ngold::\nTarget_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n::do_supported_emulations\n          (Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n           *this,vector<char_const*,_std::allocator<char_const*>_> *emulations)\n\n{\n  char *pcVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::\nTarget_selector_nacl<(anonymous_namespace)::" identifier : : identifier < ( identifier ) : :) identifier , (ERROR "_(anonymous_namespace)::Target_i386_nacl>\n::do_supported_emulations\n          (Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n           *this,vector<char_const*,_std::allocator<char_const*>_> *emulations)\n\n{\n  char" (function_declarator "_(anonymous_namespace)::Target_i386_nacl>\n::do_supported_emulations\n          (Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n           *this,vector<char_const*,_std::allocator<char_const*>_> *emulations)" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR ">\n::" > : :) (call_expression "do_supported_emulations\n          (Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n           *this,vector<char_const*,_std::allocator<char_const*>_> *emulations)" identifier (argument_list "(Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>\n           *this,vector<char_const*,_std::allocator<char_const*>_> *emulations)" ( (binary_expression "Target_selector_nacl<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_selector_i386" : : identifier) , (binary_expression "_(anonymous_namespace)::Target_i386_nacl>\n           *this" (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_i386_nacl>" : : identifier >) * identifier) , (binary_expression "vector<char_const" identifier < identifier) (ERROR "*" *) , (ERROR "_std::" identifier : :) (binary_expression "allocator<char_const*>_> *emulations" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) (ERROR ">" >) * identifier) )))) { primitive_type) (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char **ppcVar2;" primitive_type (pointer_declarator "**ppcVar2" * (pointer_declarator "*ppcVar2" * identifier)) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "iterator __position_00;" type_identifier identifier ;) (if_statement "if (this->emulation_ == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/nacl.h",0x90,"do_supported_emulations");\n  }" if (parenthesized_expression "(this->emulation_ == (char *)0x0)" ( (binary_expression "this->emulation_ == (char *)0x0" (field_expression "this->emulation_" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/nacl.h",0x90,"do_supported_emulations");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/nacl.h",0x90,"do_supported_emulations");" (call_expression "do_gold_unreachable("../../gold/nacl.h",0x90,"do_supported_emulations")" identifier (argument_list "("../../gold/nacl.h",0x90,"do_supported_emulations")" ( (string_literal ""../../gold/nacl.h"" " string_content ") , number_literal , (string_literal ""do_supported_emulations"" " string_content ") ))) ;) })) (expression_statement "pcVar1 = (this->super_Target_selector_i386).super_Target_selector_freebsd.super_Target_selector.\n           emulation_;" (assignment_expression "pcVar1 = (this->super_Target_selector_i386).super_Target_selector_freebsd.super_Target_selector.\n           emulation_" identifier = (field_expression "(this->super_Target_selector_i386).super_Target_selector_freebsd.super_Target_selector.\n           emulation_" (field_expression "(this->super_Target_selector_i386).super_Target_selector_freebsd.super_Target_selector" (field_expression "(this->super_Target_selector_i386).super_Target_selector_freebsd" (parenthesized_expression "(this->super_Target_selector_i386)" ( (field_expression "this->super_Target_selector_i386" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (pcVar1 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/target-select.h",200,"do_supported_emulations");\n  }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/target-select.h",200,"do_supported_emulations");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/target-select.h",200,"do_supported_emulations");" (call_expression "do_gold_unreachable("../../gold/target-select.h",200,"do_supported_emulations")" identifier (argument_list "("../../gold/target-select.h",200,"do_supported_emulations")" ( (string_literal ""../../gold/target-select.h"" " string_content ") , number_literal , (string_literal ""do_supported_emulations"" " string_content ") ))) ;) })) (expression_statement "ppcVar2 = (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n            _M_finish;" (assignment_expression "ppcVar2 = (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n            _M_finish" identifier = (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n            _M_finish" (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "emulations->super__Vector_base<char_const*,_std::" (comma_expression "emulations->super__Vector_base<char_const*,_std" (binary_expression "emulations->super__Vector_base<char_const" (field_expression "emulations->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "__position._M_current =\n       (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n       _M_end_of_storage;" (assignment_expression "__position._M_current =\n       (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n       _M_end_of_storage" (field_expression "__position._M_current" identifier . field_identifier) = (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n       _M_end_of_storage" (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "emulations->super__Vector_base<char_const*,_std::" (comma_expression "emulations->super__Vector_base<char_const*,_std" (binary_expression "emulations->super__Vector_base<char_const" (field_expression "emulations->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (ppcVar2 == __position._M_current) {\n    std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n              (emulations,__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_);\n    __position_00._M_current =\n         (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n         _M_finish;\n    if (__position_00._M_current ==\n        (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n        _M_end_of_storage) goto LAB_000509cb;\n  }\n  else {\n    *ppcVar2 = pcVar1;\n    __position_00._M_current = ppcVar2 + 1;\n    (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position_00._M_current;\n    if (__position_00._M_current == __position._M_current) {\nLAB_000509cb:\n      std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);\n      return;\n    }\n  }" if (parenthesized_expression "(ppcVar2 == __position._M_current)" ( (binary_expression "ppcVar2 == __position._M_current" identifier == (field_expression "__position._M_current" identifier . field_identifier)) )) (compound_statement "{\n    std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n              (emulations,__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_);\n    __position_00._M_current =\n         (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n         _M_finish;\n    if (__position_00._M_current ==\n        (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n        _M_end_of_storage) goto LAB_000509cb;\n  }" { (labeled_statement "std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n              (emulations,__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_);" statement_identifier (ERROR "::vector<char_const*,_std::allocator<char_const*>_>:" : : (comma_expression "vector<char_const*,_std" (binary_expression "vector<char_const" identifier < identifier) (ERROR "*" *) , identifier) : : (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > :) : (expression_statement "_M_realloc_insert<char_const*_const&>\n              (emulations,__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_);" (binary_expression "_M_realloc_insert<char_const*_const&>\n              (emulations,__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_)" (binary_expression "_M_realloc_insert<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) (ERROR "&" &) > (parenthesized_expression "(emulations,__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_)" ( (comma_expression "emulations,__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_" identifier , (comma_expression "__position,\n               &(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_" identifier , (pointer_expression "&(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_" & (field_expression "(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector.emulation_" (field_expression "(this->super_Target_selector_i386).super_Target_selector_freebsd.\n                super_Target_selector" (field_expression "(this->super_Target_selector_i386).super_Target_selector_freebsd" (parenthesized_expression "(this->super_Target_selector_i386)" ( (field_expression "this->super_Target_selector_i386" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)))) ))) ;)) (expression_statement "__position_00._M_current =\n         (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n         _M_finish;" (assignment_expression "__position_00._M_current =\n         (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n         _M_finish" (field_expression "__position_00._M_current" identifier . field_identifier) = (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n         _M_finish" (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "emulations->super__Vector_base<char_const*,_std::" (comma_expression "emulations->super__Vector_base<char_const*,_std" (binary_expression "emulations->super__Vector_base<char_const" (field_expression "emulations->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (__position_00._M_current ==\n        (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n        _M_end_of_storage) goto LAB_000509cb;" if (parenthesized_expression "(__position_00._M_current ==\n        (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n        _M_end_of_storage)" ( (binary_expression "__position_00._M_current ==\n        (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n        _M_end_of_storage" (field_expression "__position_00._M_current" identifier . field_identifier) == (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n        _M_end_of_storage" (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "emulations->super__Vector_base<char_const*,_std::" (comma_expression "emulations->super__Vector_base<char_const*,_std" (binary_expression "emulations->super__Vector_base<char_const" (field_expression "emulations->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier)) )) (goto_statement "goto LAB_000509cb;" goto statement_identifier ;)) }) (else_clause "else {\n    *ppcVar2 = pcVar1;\n    __position_00._M_current = ppcVar2 + 1;\n    (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position_00._M_current;\n    if (__position_00._M_current == __position._M_current) {\nLAB_000509cb:\n      std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);\n      return;\n    }\n  }" else (compound_statement "{\n    *ppcVar2 = pcVar1;\n    __position_00._M_current = ppcVar2 + 1;\n    (emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position_00._M_current;\n    if (__position_00._M_current == __position._M_current) {\nLAB_000509cb:\n      std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);\n      return;\n    }\n  }" { (expression_statement "*ppcVar2 = pcVar1;" (assignment_expression "*ppcVar2 = pcVar1" (pointer_expression "*ppcVar2" * identifier) = identifier) ;) (expression_statement "__position_00._M_current = ppcVar2 + 1;" (assignment_expression "__position_00._M_current = ppcVar2 + 1" (field_expression "__position_00._M_current" identifier . field_identifier) = (binary_expression "ppcVar2 + 1" identifier + number_literal)) ;) (expression_statement "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position_00._M_current;" (assignment_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position_00._M_current" (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish" (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "emulations->super__Vector_base<char_const*,_std::" (comma_expression "emulations->super__Vector_base<char_const*,_std" (binary_expression "emulations->super__Vector_base<char_const" (field_expression "emulations->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier) = (field_expression "__position_00._M_current" identifier . field_identifier)) ;) (if_statement "if (__position_00._M_current == __position._M_current) {\nLAB_000509cb:\n      std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);\n      return;\n    }" if (parenthesized_expression "(__position_00._M_current == __position._M_current)" ( (binary_expression "__position_00._M_current == __position._M_current" (field_expression "__position_00._M_current" identifier . field_identifier) == (field_expression "__position._M_current" identifier . field_identifier)) )) (compound_statement "{\nLAB_000509cb:\n      std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);\n      return;\n    }" { (labeled_statement "LAB_000509cb:\n      std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);" statement_identifier : (labeled_statement "std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);" statement_identifier (ERROR "::vector<char_const*,_std::allocator<char_const*>_>:" : : (comma_expression "vector<char_const*,_std" (binary_expression "vector<char_const" identifier < identifier) (ERROR "*" *) , identifier) : : (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > :) : (expression_statement "_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_);" (binary_expression "_M_realloc_insert<char_const*_const&>\n                (emulations,__position_00,&this->emulation_)" (binary_expression "_M_realloc_insert<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) (ERROR "&" &) > (parenthesized_expression "(emulations,__position_00,&this->emulation_)" ( (comma_expression "emulations,__position_00,&this->emulation_" identifier , (comma_expression "__position_00,&this->emulation_" identifier , (pointer_expression "&this->emulation_" & (field_expression "this->emulation_" identifier -> field_identifier)))) ))) ;))) (return_statement "return;" return ;) })) }))) (expression_statement "*__position_00._M_current = this->emulation_;" (assignment_expression "*__position_00._M_current = this->emulation_" (pointer_expression "*__position_00._M_current" * (field_expression "__position_00._M_current" identifier . field_identifier)) = (field_expression "this->emulation_" identifier -> field_identifier)) ;) (expression_statement "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n       __position_00._M_current + 1;" (assignment_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n       __position_00._M_current + 1" (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish" (field_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(emulations->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "emulations->super__Vector_base<char_const*,_std::" (comma_expression "emulations->super__Vector_base<char_const*,_std" (binary_expression "emulations->super__Vector_base<char_const" (field_expression "emulations->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "__position_00._M_current + 1" (field_expression "__position_00._M_current" identifier . field_identifier) + number_literal)) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void __regparm2 FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  if (*(int *)(param_3 + 0x5c) == 0) {\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }\n  if (*(int *)(param_3 + 0x14) == 0) {\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }\n  piVar2 = *(int **)(param_4 + 4);\n  piVar1 = *(int **)(param_4 + 8);\n  if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }\n  *piVar2 = *(int *)(param_3 + 0x5c);\n  *(int **)(param_4 + 4) = piVar2 + 1;\n  return;\n}\n\n" (function_definition "void __regparm2 FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  if (*(int *)(param_3 + 0x5c) == 0) {\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }\n  if (*(int *)(param_3 + 0x14) == 0) {\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }\n  piVar2 = *(int **)(param_4 + 4);\n  piVar1 = *(int **)(param_4 + 8);\n  if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }\n  *piVar2 = *(int *)(param_3 + 0x5c);\n  *(int **)(param_4 + 4) = piVar2 + 1;\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  \n  if (*(int *)(param_3 + 0x5c) == 0) {\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }\n  if (*(int *)(param_3 + 0x14) == 0) {\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }\n  piVar2 = *(int **)(param_4 + 4);\n  piVar1 = *(int **)(param_4 + 8);\n  if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }\n  *piVar2 = *(int *)(param_3 + 0x5c);\n  *(int **)(param_4 + 4) = piVar2 + 1;\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (if_statement "if (*(int *)(param_3 + 0x5c) == 0) {\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x5c) == 0)" ( (binary_expression "*(int *)(param_3 + 0x5c) == 0" (pointer_expression "*(int *)(param_3 + 0x5c)" * (cast_expression "(int *)(param_3 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x5c)" ( (binary_expression "param_3 + 0x5c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }" { (expression_statement "FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);" (call_expression "FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2)" identifier (argument_list "("../../gold/nacl.h",0x90,"do_supported_emulations",param_2)" ( (string_literal ""../../gold/nacl.h"" " string_content ") , number_literal , (string_literal ""do_supported_emulations"" " string_content ") , identifier ))) ;) })) (if_statement "if (*(int *)(param_3 + 0x14) == 0) {\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x14) == 0)" ( (binary_expression "*(int *)(param_3 + 0x14) == 0" (pointer_expression "*(int *)(param_3 + 0x14)" * (cast_expression "(int *)(param_3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }" { (expression_statement "FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);" (call_expression "FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1)" identifier (argument_list "("../../gold/target-select.h",200,"do_supported_emulations",param_1)" ( (string_literal ""../../gold/target-select.h"" " string_content ") , number_literal , (string_literal ""do_supported_emulations"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar2 = *(int **)(param_4 + 4);" (assignment_expression "piVar2 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = *(int **)(param_4 + 8);" (assignment_expression "piVar1 = *(int **)(param_4 + 8)" identifier = (pointer_expression "*(int **)(param_4 + 8)" * (cast_expression "(int **)(param_4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" if (parenthesized_expression "(piVar2 == piVar1)" ( (binary_expression "piVar2 == piVar1" identifier == identifier) )) (compound_statement "{\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }" { (expression_statement "FUN_00056900(param_4,piVar1,param_3 + 0x14);" (call_expression "FUN_00056900(param_4,piVar1,param_3 + 0x14)" identifier (argument_list "(param_4,piVar1,param_3 + 0x14)" ( identifier , identifier , (binary_expression "param_3 + 0x14" identifier + number_literal) ))) ;) (expression_statement "piVar2 = *(int **)(param_4 + 4);" (assignment_expression "piVar2 = *(int **)(param_4 + 4)" identifier = (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;" if (parenthesized_expression "(piVar2 == *(int **)(param_4 + 8))" ( (binary_expression "piVar2 == *(int **)(param_4 + 8)" identifier == (pointer_expression "*(int **)(param_4 + 8)" * (cast_expression "(int **)(param_4 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) ))))) )) (goto_statement "goto LAB_000509cb;" goto statement_identifier ;)) }) (else_clause "else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" else (compound_statement "{\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" { (expression_statement "*piVar2 = *(int *)(param_3 + 0x14);" (assignment_expression "*piVar2 = *(int *)(param_3 + 0x14)" (pointer_expression "*piVar2" * identifier) = (pointer_expression "*(int *)(param_3 + 0x14)" * (cast_expression "(int *)(param_3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) (expression_statement "*(int **)(param_4 + 4) = piVar2;" (assignment_expression "*(int **)(param_4 + 4) = piVar2" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }" if (parenthesized_expression "(piVar2 == piVar1)" ( (binary_expression "piVar2 == piVar1" identifier == identifier) )) (compound_statement "{\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }" { (labeled_statement "LAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);" statement_identifier : (expression_statement "FUN_00056900(param_4,piVar2,param_3 + 0x5c);" (call_expression "FUN_00056900(param_4,piVar2,param_3 + 0x5c)" identifier (argument_list "(param_4,piVar2,param_3 + 0x5c)" ( identifier , identifier , (binary_expression "param_3 + 0x5c" identifier + number_literal) ))) ;)) (return_statement "return;" return ;) })) }))) (expression_statement "*piVar2 = *(int *)(param_3 + 0x5c);" (assignment_expression "*piVar2 = *(int *)(param_3 + 0x5c)" (pointer_expression "*piVar2" * identifier) = (pointer_expression "*(int *)(param_3 + 0x5c)" * (cast_expression "(int *)(param_3 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x5c)" ( (binary_expression "param_3 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_4 + 4) = piVar2 + 1;" (assignment_expression "*(int **)(param_4 + 4) = piVar2 + 1" (pointer_expression "*(int **)(param_4 + 4)" * (cast_expression "(int **)(param_4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )))) = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (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 (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (if_statement if (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 (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;)) (return_statement return ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })))
(function_definition "void __regparm2 FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  if (*(int *)(param_3 + 0x5c) == 0) {\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }\n  if (*(int *)(param_3 + 0x14) == 0) {\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }\n  piVar2 = *(int **)(param_4 + 4);\n  piVar1 = *(int **)(param_4 + 8);\n  if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }\n  *piVar2 = *(int *)(param_3 + 0x5c);\n  *(int **)(param_4 + 4) = piVar2 + 1;\n  return;\n}" (primitive_type "void") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "FUN_00050960(undefined4 param_1,undefined4 param_2,int param_3,int param_4)" (identifier "FUN_00050960") (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  \n  if (*(int *)(param_3 + 0x5c) == 0) {\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }\n  if (*(int *)(param_3 + 0x14) == 0) {\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }\n  piVar2 = *(int **)(param_4 + 4);\n  piVar1 = *(int **)(param_4 + 8);\n  if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }\n  *piVar2 = *(int *)(param_3 + 0x5c);\n  *(int **)(param_4 + 4) = piVar2 + 1;\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (if_statement "if (*(int *)(param_3 + 0x5c) == 0) {\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x5c) == 0)" (( "(") (binary_expression "*(int *)(param_3 + 0x5c) == 0" (pointer_expression "*(int *)(param_3 + 0x5c)" (* "*") (cast_expression "(int *)(param_3 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x5c)" (( "(") (binary_expression "param_3 + 0x5c" (identifier "param_3") (+ "+") (number_literal "0x5c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);\n  }" ({ "{") (expression_statement "FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);" (call_expression "FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2)" (identifier "FUN_0008b620") (argument_list "("../../gold/nacl.h",0x90,"do_supported_emulations",param_2)" (( "(") (string_literal ""../../gold/nacl.h"" (" """) (string_content "../../gold/nacl.h") (" """)) (, ",") (number_literal "0x90") (, ",") (string_literal ""do_supported_emulations"" (" """) (string_content "do_supported_emulations") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_3 + 0x14) == 0) {\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x14) == 0)" (( "(") (binary_expression "*(int *)(param_3 + 0x14) == 0" (pointer_expression "*(int *)(param_3 + 0x14)" (* "*") (cast_expression "(int *)(param_3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x14)" (( "(") (binary_expression "param_3 + 0x14" (identifier "param_3") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);\n  }" ({ "{") (expression_statement "FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);" (call_expression "FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1)" (identifier "FUN_0008b620") (argument_list "("../../gold/target-select.h",200,"do_supported_emulations",param_1)" (( "(") (string_literal ""../../gold/target-select.h"" (" """) (string_content "../../gold/target-select.h") (" """)) (, ",") (number_literal "200") (, ",") (string_literal ""do_supported_emulations"" (" """) (string_content "do_supported_emulations") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar2 = *(int **)(param_4 + 4);" (assignment_expression "piVar2 = *(int **)(param_4 + 4)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar1 = *(int **)(param_4 + 8);" (assignment_expression "piVar1 = *(int **)(param_4 + 8)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_4 + 8)" (* "*") (cast_expression "(int **)(param_4 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 8)" (( "(") (binary_expression "param_4 + 8" (identifier "param_4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (piVar2 == piVar1) {\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }\n  else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(piVar2 == piVar1)" (( "(") (binary_expression "piVar2 == piVar1" (identifier "piVar2") (== "==") (identifier "piVar1")) () ")")) (compound_statement "{\n    FUN_00056900(param_4,piVar1,param_3 + 0x14);\n    piVar2 = *(int **)(param_4 + 4);\n    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;\n  }" ({ "{") (expression_statement "FUN_00056900(param_4,piVar1,param_3 + 0x14);" (call_expression "FUN_00056900(param_4,piVar1,param_3 + 0x14)" (identifier "FUN_00056900") (argument_list "(param_4,piVar1,param_3 + 0x14)" (( "(") (identifier "param_4") (, ",") (identifier "piVar1") (, ",") (binary_expression "param_3 + 0x14" (identifier "param_3") (+ "+") (number_literal "0x14")) () ")"))) (; ";")) (expression_statement "piVar2 = *(int **)(param_4 + 4);" (assignment_expression "piVar2 = *(int **)(param_4 + 4)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;" (if "if") (parenthesized_expression "(piVar2 == *(int **)(param_4 + 8))" (( "(") (binary_expression "piVar2 == *(int **)(param_4 + 8)" (identifier "piVar2") (== "==") (pointer_expression "*(int **)(param_4 + 8)" (* "*") (cast_expression "(int **)(param_4 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 8)" (( "(") (binary_expression "param_4 + 8" (identifier "param_4") (+ "+") (number_literal "8")) () ")"))))) () ")")) (goto_statement "goto LAB_000509cb;" (goto "goto") (statement_identifier "LAB_000509cb") (; ";"))) (} "}")) (else_clause "else {\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" (else "else") (compound_statement "{\n    *piVar2 = *(int *)(param_3 + 0x14);\n    piVar2 = piVar2 + 1;\n    *(int **)(param_4 + 4) = piVar2;\n    if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }\n  }" ({ "{") (expression_statement "*piVar2 = *(int *)(param_3 + 0x14);" (assignment_expression "*piVar2 = *(int *)(param_3 + 0x14)" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (pointer_expression "*(int *)(param_3 + 0x14)" (* "*") (cast_expression "(int *)(param_3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x14)" (( "(") (binary_expression "param_3 + 0x14" (identifier "param_3") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" (identifier "piVar2") (= "=") (binary_expression "piVar2 + 1" (identifier "piVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int **)(param_4 + 4) = piVar2;" (assignment_expression "*(int **)(param_4 + 4) = piVar2" (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar2")) (; ";")) (if_statement "if (piVar2 == piVar1) {\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }" (if "if") (parenthesized_expression "(piVar2 == piVar1)" (( "(") (binary_expression "piVar2 == piVar1" (identifier "piVar2") (== "==") (identifier "piVar1")) () ")")) (compound_statement "{\nLAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);\n      return;\n    }" ({ "{") (labeled_statement "LAB_000509cb:\n      FUN_00056900(param_4,piVar2,param_3 + 0x5c);" (statement_identifier "LAB_000509cb") (: ":") (expression_statement "FUN_00056900(param_4,piVar2,param_3 + 0x5c);" (call_expression "FUN_00056900(param_4,piVar2,param_3 + 0x5c)" (identifier "FUN_00056900") (argument_list "(param_4,piVar2,param_3 + 0x5c)" (( "(") (identifier "param_4") (, ",") (identifier "piVar2") (, ",") (binary_expression "param_3 + 0x5c" (identifier "param_3") (+ "+") (number_literal "0x5c")) () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (expression_statement "*piVar2 = *(int *)(param_3 + 0x5c);" (assignment_expression "*piVar2 = *(int *)(param_3 + 0x5c)" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (pointer_expression "*(int *)(param_3 + 0x5c)" (* "*") (cast_expression "(int *)(param_3 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x5c)" (( "(") (binary_expression "param_3 + 0x5c" (identifier "param_3") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "*(int **)(param_4 + 4) = piVar2 + 1;" (assignment_expression "*(int **)(param_4 + 4) = piVar2 + 1" (pointer_expression "*(int **)(param_4 + 4)" (* "*") (cast_expression "(int **)(param_4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "piVar2 + 1" (identifier "piVar2") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void
   do_supported_emulations(Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,_(anonymous_namespace)::Target_i386_nacl>
   * this, vector<char_const*,_std::allocator<char_const*>_> * emulations) */

void __thiscall
gold::
Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,var_5(anonymous_namespace)::Target_i386_nacl>
::do_supported_emulations
          (Target_selector_nacl<(anonymous_namespace)::Target_selector_i386,var_5(anonymous_namespace)::Target_i386_nacl>
           *this,vector<var_4*,_std::var_3<var_4*>var_5> *emulations)

{
  char *var_2;
  char **var_7;
  type_1 __position;
  type_1 __position_00;
  
  if (this->emulation_ == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/nacl.h",0x90,"do_supported_emulations");
  }
  var_2 = (this->super_Target_selector_i386).super_Target_selector_freebsd.super_Target_selector.
           emulation_;
  if (var_2 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/target-select.h",200,"do_supported_emulations");
  }
  var_7 = (emulations->super__Vector_base<var_4*,_std::var_3<var_4*>var_5>var_6)._M_impl.
            _M_finish;
  __position._M_current =
       (emulations->super__Vector_base<var_4*,_std::var_3<var_4*>var_5>var_6)._M_impl.
       _M_end_of_storage;
  if (var_7 == __position._M_current) {
    std::vector<var_4*,_std::var_3<var_4*>var_5>::var_8<var_4*var_9&>
              (emulations,__position,
               &(this->super_Target_selector_i386).super_Target_selector_freebsd.
                super_Target_selector.emulation_);
    __position_00._M_current =
         (emulations->super__Vector_base<var_4*,_std::var_3<var_4*>var_5>var_6)._M_impl.
         _M_finish;
    if (__position_00._M_current ==
        (emulations->super__Vector_base<var_4*,_std::var_3<var_4*>var_5>var_6)._M_impl.
        _M_end_of_storage) goto LAB_000509cb;
  }
  else {
    *var_7 = var_2;
    __position_00._M_current = var_7 + 1;
    (emulations->super__Vector_base<var_4*,_std::var_3<var_4*>var_5>var_6)._M_impl._M_finish =
         __position_00._M_current;
    if (__position_00._M_current == __position._M_current) {
LAB_000509cb:
      std::vector<var_4*,_std::var_3<var_4*>var_5>::var_8<var_4*var_9&>
                (emulations,__position_00,&this->emulation_);
      return;
    }
  }
  *__position_00._M_current = this->emulation_;
  (emulations->super__Vector_base<var_4*,_std::var_3<var_4*>var_5>var_6)._M_impl._M_finish =
       __position_00._M_current + 1;
  return;
}


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

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

void __regparm2 MASKED(undefined4 param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  
  if (*(int *)(param_3 + 0x5c) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/nacl.h",0x90,"do_supported_emulations",param_2);
  }
  if (*(int *)(param_3 + 0x14) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/target-select.h",200,"do_supported_emulations",param_1);
  }
  piVar2 = *(int **)(param_4 + 4);
  piVar1 = *(int **)(param_4 + 8);
  if (piVar2 == piVar1) {
    FUN_00056900(param_4,piVar1,param_3 + 0x14);
    piVar2 = *(int **)(param_4 + 4);
    if (piVar2 == *(int **)(param_4 + 8)) goto LAB_000509cb;
  }
  else {
    *piVar2 = *(int *)(param_3 + 0x14);
    piVar2 = piVar2 + 1;
    *(int **)(param_4 + 4) = piVar2;
    if (piVar2 == piVar1) {
LAB_000509cb:
      FUN_00056900(param_4,piVar2,param_3 + 0x5c);
      return;
    }
  }
  *piVar2 = *(int *)(param_3 + 0x5c);
  *(int **)(param_4 + 4) = piVar2 + 1;
  return;
}

