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

long __regparm3 vax_operandlength(uchar *modep)

{
  operandenum oVar1;
  int iVar2;
  
  iVar2 = 0;
  do {
    oVar1 = vax_operandmode((uchar *)(uint)modep[iVar2]);
    switch(oVar1) {
    case literal:
    case reg:
    case regdef:
    case autodec:
    case autoinc:
    case autoincdef:
      return iVar2 + 1;
    case indexed:
      iVar2 = iVar2 + 1;
      break;
    case bytedisp:
    case bytedispdef:
    case byterel:
    case bytereldef:
      return iVar2 + 2;
    case worddisp:
    case worddispdef:
    case wordrel:
    case wordreldef:
      return iVar2 + 3;
    case longdisp:
    case longdispdef:
    case immediate:
    case absolute:
    case longrel:
    case longreldef:
      return iVar2 + 5;
    default:
                    /* WARNING: Subroutine does not return */
      abort();
    }
  } while( true );
}



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

int FUN_0001eac0(void)

{
  undefined4 uVar1;
  int iVar2;
  
  iVar2 = 0;
  do {
    uVar1 = FUN_0001e9c0();
    switch(uVar1) {
    case 0:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      return iVar2 + 1;
    case 1:
      iVar2 = iVar2 + 1;
      break;
    case 7:
    case 8:
    case 0xf:
    case 0x10:
      return iVar2 + 2;
    case 9:
    case 10:
    case 0x11:
    case 0x12:
      return iVar2 + 3;
    case 0xb:
    case 0xc:
    case 0xd:
    case 0xe:
    case 0x13:
    case 0x14:
      return iVar2 + 5;
    default:
                    /* WARNING: Subroutine does not return */
      abort();
    }
  } while( true );
}


PUSH EDI
MOV EDI,EAX
PUSH ESI
XOR ESI,ESI
PUSH EBX
CALL 0x00013030
ADD EBX,0xe534
MOVZX EAX,byte ptr [EDI + ESI*0x1]
CALL 0x0001e9c0
CMP EAX,0x14
JA 0x000124c5
MOV EDX,dword ptr [EBX + EAX*0x4 + 0xffff74e4]
ADD EDX,EBX
JMP EDX
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_0001eac0(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  } while( true );\n}\n\n" comment (function_definition "int FUN_0001eac0(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_0001eac0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  } while( true );\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  } while( true );" do (compound_statement "{\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" { (expression_statement "uVar1 = FUN_0001e9c0();" (assignment_expression "uVar1 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (switch_statement "switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" switch (parenthesized_expression "(uVar1)" ( identifier )) (compound_statement "{\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" { (case_statement "case 0:" case number_literal :) (case_statement "case 2:" case number_literal :) (case_statement "case 3:" case number_literal :) (case_statement "case 4:" case number_literal :) (case_statement "case 5:" case number_literal :) (case_statement "case 6:\n      return iVar2 + 1;" case number_literal : (return_statement "return iVar2 + 1;" return (binary_expression "iVar2 + 1" identifier + number_literal) ;)) (case_statement "case 1:\n      iVar2 = iVar2 + 1;\n      break;" case number_literal : (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 0xf:" case number_literal :) (case_statement "case 0x10:\n      return iVar2 + 2;" case number_literal : (return_statement "return iVar2 + 2;" return (binary_expression "iVar2 + 2" identifier + number_literal) ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 10:" case number_literal :) (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x12:\n      return iVar2 + 3;" case number_literal : (return_statement "return iVar2 + 3;" return (binary_expression "iVar2 + 3" identifier + number_literal) ;)) (case_statement "case 0xb:" case number_literal :) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0xd:" case number_literal :) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x14:\n      return iVar2 + 5;" case number_literal : (return_statement "return iVar2 + 5;" return (binary_expression "iVar2 + 5" identifier + number_literal) ;)) (case_statement "default:\n                    /* WARNING: Subroutine does not return */\n      abort();" default : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nlong __regparm3 vax_operandlength(uchar *modep)\n\n{\n  operandenum oVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    oVar1 = vax_operandmode((uchar *)(uint)modep[iVar2]);\n    switch(oVar1) {\n    case literal:\n    case reg:\n    case regdef:\n    case autodec:\n    case autoinc:\n    case autoincdef:\n      return iVar2 + 1;\n    case indexed:\n      iVar2 = iVar2 + 1;\n      break;\n    case bytedisp:\n    case bytedispdef:\n    case byterel:\n    case bytereldef:\n      return iVar2 + 2;\n    case worddisp:\n    case worddispdef:\n    case wordrel:\n    case wordreldef:\n      return iVar2 + 3;\n    case longdisp:\n    case longdispdef:\n    case immediate:\n    case absolute:\n    case longrel:\n    case longreldef:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  } while( true );\n}\n\n" comment (function_definition "long __regparm3 vax_operandlength(uchar *modep)\n\n{\n  operandenum oVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    oVar1 = vax_operandmode((uchar *)(uint)modep[iVar2]);\n    switch(oVar1) {\n    case literal:\n    case reg:\n    case regdef:\n    case autodec:\n    case autoinc:\n    case autoincdef:\n      return iVar2 + 1;\n    case indexed:\n      iVar2 = iVar2 + 1;\n      break;\n    case bytedisp:\n    case bytedispdef:\n    case byterel:\n    case bytereldef:\n      return iVar2 + 2;\n    case worddisp:\n    case worddispdef:\n    case wordrel:\n    case wordreldef:\n      return iVar2 + 3;\n    case longdisp:\n    case longdispdef:\n    case immediate:\n    case absolute:\n    case longrel:\n    case longreldef:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  } while( true );\n}" (sized_type_specifier "long __regparm3" long type_identifier) (function_declarator "vax_operandlength(uchar *modep)" identifier (parameter_list "(uchar *modep)" ( (parameter_declaration "uchar *modep" type_identifier (pointer_declarator "*modep" * identifier)) ))) (compound_statement "{\n  operandenum oVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    oVar1 = vax_operandmode((uchar *)(uint)modep[iVar2]);\n    switch(oVar1) {\n    case literal:\n    case reg:\n    case regdef:\n    case autodec:\n    case autoinc:\n    case autoincdef:\n      return iVar2 + 1;\n    case indexed:\n      iVar2 = iVar2 + 1;\n      break;\n    case bytedisp:\n    case bytedispdef:\n    case byterel:\n    case bytereldef:\n      return iVar2 + 2;\n    case worddisp:\n    case worddispdef:\n    case wordrel:\n    case wordreldef:\n      return iVar2 + 3;\n    case longdisp:\n    case longdispdef:\n    case immediate:\n    case absolute:\n    case longrel:\n    case longreldef:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  } while( true );\n}" { (declaration "operandenum oVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n    oVar1 = vax_operandmode((uchar *)(uint)modep[iVar2]);\n    switch(oVar1) {\n    case literal:\n    case reg:\n    case regdef:\n    case autodec:\n    case autoinc:\n    case autoincdef:\n      return iVar2 + 1;\n    case indexed:\n      iVar2 = iVar2 + 1;\n      break;\n    case bytedisp:\n    case bytedispdef:\n    case byterel:\n    case bytereldef:\n      return iVar2 + 2;\n    case worddisp:\n    case worddispdef:\n    case wordrel:\n    case wordreldef:\n      return iVar2 + 3;\n    case longdisp:\n    case longdispdef:\n    case immediate:\n    case absolute:\n    case longrel:\n    case longreldef:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  } while( true );" do (compound_statement "{\n    oVar1 = vax_operandmode((uchar *)(uint)modep[iVar2]);\n    switch(oVar1) {\n    case literal:\n    case reg:\n    case regdef:\n    case autodec:\n    case autoinc:\n    case autoincdef:\n      return iVar2 + 1;\n    case indexed:\n      iVar2 = iVar2 + 1;\n      break;\n    case bytedisp:\n    case bytedispdef:\n    case byterel:\n    case bytereldef:\n      return iVar2 + 2;\n    case worddisp:\n    case worddispdef:\n    case wordrel:\n    case wordreldef:\n      return iVar2 + 3;\n    case longdisp:\n    case longdispdef:\n    case immediate:\n    case absolute:\n    case longrel:\n    case longreldef:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" { (expression_statement "oVar1 = vax_operandmode((uchar *)(uint)modep[iVar2]);" (assignment_expression "oVar1 = vax_operandmode((uchar *)(uint)modep[iVar2])" identifier = (call_expression "vax_operandmode((uchar *)(uint)modep[iVar2])" identifier (argument_list "((uchar *)(uint)modep[iVar2])" ( (cast_expression "(uchar *)(uint)modep[iVar2]" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)modep[iVar2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "modep[iVar2]" identifier [ identifier ]))) )))) ;) (switch_statement "switch(oVar1) {\n    case literal:\n    case reg:\n    case regdef:\n    case autodec:\n    case autoinc:\n    case autoincdef:\n      return iVar2 + 1;\n    case indexed:\n      iVar2 = iVar2 + 1;\n      break;\n    case bytedisp:\n    case bytedispdef:\n    case byterel:\n    case bytereldef:\n      return iVar2 + 2;\n    case worddisp:\n    case worddispdef:\n    case wordrel:\n    case wordreldef:\n      return iVar2 + 3;\n    case longdisp:\n    case longdispdef:\n    case immediate:\n    case absolute:\n    case longrel:\n    case longreldef:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" switch (parenthesized_expression "(oVar1)" ( identifier )) (compound_statement "{\n    case literal:\n    case reg:\n    case regdef:\n    case autodec:\n    case autoinc:\n    case autoincdef:\n      return iVar2 + 1;\n    case indexed:\n      iVar2 = iVar2 + 1;\n      break;\n    case bytedisp:\n    case bytedispdef:\n    case byterel:\n    case bytereldef:\n      return iVar2 + 2;\n    case worddisp:\n    case worddispdef:\n    case wordrel:\n    case wordreldef:\n      return iVar2 + 3;\n    case longdisp:\n    case longdispdef:\n    case immediate:\n    case absolute:\n    case longrel:\n    case longreldef:\n      return iVar2 + 5;\n    default:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" { (case_statement "case literal:" case identifier :) (case_statement "case reg:" case identifier :) (case_statement "case regdef:" case identifier :) (case_statement "case autodec:" case identifier :) (case_statement "case autoinc:" case identifier :) (case_statement "case autoincdef:\n      return iVar2 + 1;" case identifier : (return_statement "return iVar2 + 1;" return (binary_expression "iVar2 + 1" identifier + number_literal) ;)) (case_statement "case indexed:\n      iVar2 = iVar2 + 1;\n      break;" case identifier : (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case bytedisp:" case identifier :) (case_statement "case bytedispdef:" case identifier :) (case_statement "case byterel:" case identifier :) (case_statement "case bytereldef:\n      return iVar2 + 2;" case identifier : (return_statement "return iVar2 + 2;" return (binary_expression "iVar2 + 2" identifier + number_literal) ;)) (case_statement "case worddisp:" case identifier :) (case_statement "case worddispdef:" case identifier :) (case_statement "case wordrel:" case identifier :) (case_statement "case wordreldef:\n      return iVar2 + 3;" case identifier : (return_statement "return iVar2 + 3;" return (binary_expression "iVar2 + 3" identifier + number_literal) ;)) (case_statement "case longdisp:" case identifier :) (case_statement "case longdispdef:" case identifier :) (case_statement "case immediate:" case identifier :) (case_statement "case absolute:" case identifier :) (case_statement "case longrel:" case identifier :) (case_statement "case longreldef:\n      return iVar2 + 5;" case identifier : (return_statement "return iVar2 + 5;" return (binary_expression "iVar2 + 5" identifier + number_literal) ;)) (case_statement "default:\n                    /* WARNING: Subroutine does not return */\n      abort();" default : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int FUN_0001eac0(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_0001eac0(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_0001eac0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  } while( true );\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  } while( true );" do (compound_statement "{\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  }" { (expression_statement "uVar1 = FUN_0001e9c0();" (assignment_expression "uVar1 = FUN_0001e9c0()" identifier = (call_expression "FUN_0001e9c0()" identifier (argument_list "()" ( )))) ;) (switch_statement "switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }" switch (parenthesized_expression "(uVar1)" ( identifier )) (compound_statement "{\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }" { (case_statement "case 0:" case number_literal :) (case_statement "case 2:" case number_literal :) (case_statement "case 3:" case number_literal :) (case_statement "case 4:" case number_literal :) (case_statement "case 5:" case number_literal :) (case_statement "case 6:\n      return iVar2 + 1;" case number_literal : (return_statement "return iVar2 + 1;" return (binary_expression "iVar2 + 1" identifier + number_literal) ;)) (case_statement "case 1:\n      iVar2 = iVar2 + 1;\n      break;" case number_literal : (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 0xf:" case number_literal :) (case_statement "case 0x10:\n      return iVar2 + 2;" case number_literal : (return_statement "return iVar2 + 2;" return (binary_expression "iVar2 + 2" identifier + number_literal) ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 10:" case number_literal :) (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x12:\n      return iVar2 + 3;" case number_literal : (return_statement "return iVar2 + 3;" return (binary_expression "iVar2 + 3" identifier + number_literal) ;)) (case_statement "case 0xb:" case number_literal :) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0xd:" case number_literal :) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x14:\n      return iVar2 + 5;" case number_literal : (return_statement "return iVar2 + 5;" return (binary_expression "iVar2 + 5" identifier + number_literal) ;)) (case_statement "default:\n                    \n      abort();" default : (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (return_statement return (binary_expression IDENT + LIT) ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (return_statement return (binary_expression IDENT + LIT) ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (return_statement return (binary_expression IDENT + LIT) ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (return_statement return (binary_expression IDENT + LIT) ;)) (case_statement default : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int FUN_0001eac0(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_0001eac0(void)" (identifier "FUN_0001eac0") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  \n  iVar2 = 0;\n  do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  } while( true );\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  } while( true );" (do "do") (compound_statement "{\n    uVar1 = FUN_0001e9c0();\n    switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }\n  }" ({ "{") (expression_statement "uVar1 = FUN_0001e9c0();" (assignment_expression "uVar1 = FUN_0001e9c0()" (identifier "uVar1") (= "=") (call_expression "FUN_0001e9c0()" (identifier "FUN_0001e9c0") (argument_list "()" (( "(") () ")")))) (; ";")) (switch_statement "switch(uVar1) {\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }" (switch "switch") (parenthesized_expression "(uVar1)" (( "(") (identifier "uVar1") () ")")) (compound_statement "{\n    case 0:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n    case 6:\n      return iVar2 + 1;\n    case 1:\n      iVar2 = iVar2 + 1;\n      break;\n    case 7:\n    case 8:\n    case 0xf:\n    case 0x10:\n      return iVar2 + 2;\n    case 9:\n    case 10:\n    case 0x11:\n    case 0x12:\n      return iVar2 + 3;\n    case 0xb:\n    case 0xc:\n    case 0xd:\n    case 0xe:\n    case 0x13:\n    case 0x14:\n      return iVar2 + 5;\n    default:\n                    \n      abort();\n    }" ({ "{") (case_statement "case 0:" (case "case") (number_literal "0") (: ":")) (case_statement "case 2:" (case "case") (number_literal "2") (: ":")) (case_statement "case 3:" (case "case") (number_literal "3") (: ":")) (case_statement "case 4:" (case "case") (number_literal "4") (: ":")) (case_statement "case 5:" (case "case") (number_literal "5") (: ":")) (case_statement "case 6:\n      return iVar2 + 1;" (case "case") (number_literal "6") (: ":") (return_statement "return iVar2 + 1;" (return "return") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) (; ";"))) (case_statement "case 1:\n      iVar2 = iVar2 + 1;\n      break;" (case "case") (number_literal "1") (: ":") (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 7:" (case "case") (number_literal "7") (: ":")) (case_statement "case 8:" (case "case") (number_literal "8") (: ":")) (case_statement "case 0xf:" (case "case") (number_literal "0xf") (: ":")) (case_statement "case 0x10:\n      return iVar2 + 2;" (case "case") (number_literal "0x10") (: ":") (return_statement "return iVar2 + 2;" (return "return") (binary_expression "iVar2 + 2" (identifier "iVar2") (+ "+") (number_literal "2")) (; ";"))) (case_statement "case 9:" (case "case") (number_literal "9") (: ":")) (case_statement "case 10:" (case "case") (number_literal "10") (: ":")) (case_statement "case 0x11:" (case "case") (number_literal "0x11") (: ":")) (case_statement "case 0x12:\n      return iVar2 + 3;" (case "case") (number_literal "0x12") (: ":") (return_statement "return iVar2 + 3;" (return "return") (binary_expression "iVar2 + 3" (identifier "iVar2") (+ "+") (number_literal "3")) (; ";"))) (case_statement "case 0xb:" (case "case") (number_literal "0xb") (: ":")) (case_statement "case 0xc:" (case "case") (number_literal "0xc") (: ":")) (case_statement "case 0xd:" (case "case") (number_literal "0xd") (: ":")) (case_statement "case 0xe:" (case "case") (number_literal "0xe") (: ":")) (case_statement "case 0x13:" (case "case") (number_literal "0x13") (: ":")) (case_statement "case 0x14:\n      return iVar2 + 5;" (case "case") (number_literal "0x14") (: ":") (return_statement "return iVar2 + 5;" (return "return") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) (; ";"))) (case_statement "default:\n                    \n      abort();" (default "default") (: ":") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

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

long type_1 function_1(type_2 *modep)

{
  type_3 oVar1;
  int var_2;
  
  var_2 = 0;
  do {
    oVar1 = var_1((type_2 *)(type_4)modep[var_2]);
    switch(oVar1) {
    case literal:
    case reg:
    case regdef:
    case autodec:
    case autoinc:
    case autoincdef:
      return var_2 + 1;
    case indexed:
      var_2 = var_2 + 1;
      break;
    case bytedisp:
    case bytedispdef:
    case byterel:
    case bytereldef:
      return var_2 + 2;
    case worddisp:
    case worddispdef:
    case wordrel:
    case wordreldef:
      return var_2 + 3;
    case longdisp:
    case longdispdef:
    case immediate:
    case absolute:
    case longrel:
    case longreldef:
      return var_2 + 5;
    default:
                    /* WARNING: Subroutine does not return */
      var_3();
    }
  } while( true );
}


(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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (switch_statement condition: (parenthesized_expression (identifier)) body: (compound_statement (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (return_statement (binary_expression left: (identifier) right: (number_literal)))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (break_statement)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (return_statement (binary_expression left: (identifier) right: (number_literal)))) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (return_statement (binary_expression left: (identifier) right: (number_literal)))) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (return_statement (binary_expression left: (identifier) right: (number_literal)))) (case_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))) condition: (parenthesized_expression (true))))))

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

int MASKED(void)

{
  undefined4 uVar1;
  int iVar2;
  
  iVar2 = 0;
  do {
    uVar1 = FUN_0001e9c0();
    switch(uVar1) {
    case 0:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      return iVar2 + 1;
    case 1:
      iVar2 = iVar2 + 1;
      break;
    case 7:
    case 8:
    case 0xf:
    case 0x10:
      return iVar2 + 2;
    case 9:
    case 10:
    case 0x11:
    case 0x12:
      return iVar2 + 3;
    case 0xb:
    case 0xc:
    case 0xd:
    case 0xe:
    case 0x13:
    case 0x14:
      return iVar2 + 5;
    default:
                    /* WARNING: Subroutine does not return */
      abort();
    }
  } while( true );
}

