
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* get_ttype_entry(lsda_header_info*, unsigned long) */

uint __regparm3 get_ttype_entry(lsda_header_info *param_1,ulong param_2)

{
  lsda_header_info lVar1;
  byte bVar2;
  int iVar3;
  uint local_10 [2];
  
  local_10[1] = 0x17f387;
  lVar1 = param_1[0x14];
  if (lVar1 == (lsda_header_info)0xff) {
    iVar3 = 0;
  }
  else {
    bVar2 = (byte)lVar1 & 7;
    if (bVar2 == 2) {
      iVar3 = param_2 * -2;
    }
    else {
      if (bVar2 < 3) {
        if (bVar2 != 0) {
LAB_0017f404:
                    /* WARNING: Subroutine does not return */
          abort();
        }
      }
      else if (bVar2 != 3) {
        if (bVar2 != 4) goto LAB_0017f404;
        iVar3 = param_2 * -8;
        goto LAB_0017f3b8;
      }
      iVar3 = param_2 * -4;
    }
  }
LAB_0017f3b8:
  read_encoded_value_with_base
            ((uchar)lVar1,*(uint *)(param_1 + 8),(uchar *)(iVar3 + *(int *)(param_1 + 0xc)),local_10
            );
  return local_10[0];
}



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

undefined4 __regparm3 FUN_0017f380(int param_1)

{
  byte bVar1;
  undefined4 local_10;
  undefined4 uStack_c;
  
  uStack_c = 0x17f387;
  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {
    if (bVar1 < 3) {
      if (bVar1 != 0) goto LAB_0017f404;
    }
    else if ((bVar1 != 3) && (bVar1 != 4)) {
LAB_0017f404:
                    /* WARNING: Subroutine does not return */
      abort();
    }
  }
  FUN_0017f230(&local_10);
  return local_10;
}


PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x182c79
SUB ESP,0x14
MOVZX ESI,byte ptr [EAX + 0x14]
MOV ECX,ESI
CMP CL,0xff
JZ 0x0017f400
AND ECX,0x7
CMP CL,0x2
JZ 0x0017f3f0
JBE 0x0017f3e0
CMP CL,0x3
JZ 0x0017f3e4
CMP CL,0x4
JNZ 0x0017f404
LEA ECX,[EDX*0x8 + 0x0]
NEG ECX
SUB ESP,0xc
ADD ECX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX + 0x8]
LEA EAX,[ESP + 0x18]
PUSH EAX
MOV EAX,ESI
CALL 0x0017f230
MOV EAX,dword ptr [ESP + 0x1c]
ADD ESP,0x24
POP EBX
POP ESI
RET
TEST CL,CL
JNZ 0x0017f404
LEA ECX,[EDX*0x4 + 0x0]
NEG ECX
JMP 0x0017f3b8
LEA ECX,[EDX + EDX*0x1]
NEG ECX
JMP 0x0017f3b8
XOR ECX,ECX
JMP 0x0017f3b8
CALL 0x00026080
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3 FUN_0017f380(int param_1)\n\n{\n  byte bVar1;\n  undefined4 local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x17f387;\n  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  FUN_0017f230(&local_10);\n  return local_10;\n}\n\n" comment (function_definition "undefined4 __regparm3 FUN_0017f380(int param_1)\n\n{\n  byte bVar1;\n  undefined4 local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x17f387;\n  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  FUN_0017f230(&local_10);\n  return local_10;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0017f380(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined4 local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x17f387;\n  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  FUN_0017f230(&local_10);\n  return local_10;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined4 local_10;" type_identifier identifier ;) (declaration "undefined4 uStack_c;" type_identifier identifier ;) (expression_statement "uStack_c = 0x17f387;" (assignment_expression "uStack_c = 0x17f387" identifier = number_literal) ;) (if_statement "if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2))" ( (binary_expression "(*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)" (parenthesized_expression "(*(byte *)(param_1 + 0x14) != 0xff)" ( (binary_expression "*(byte *)(param_1 + 0x14) != 0xff" (pointer_expression "*(byte *)(param_1 + 0x14)" * (cast_expression "(byte *)(param_1 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)" ( (comma_expression "bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x14) & 7" identifier = (binary_expression "*(byte *)(param_1 + 0x14) & 7" (pointer_expression "*(byte *)(param_1 + 0x14)" * (cast_expression "(byte *)(param_1 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal)) , (binary_expression "bVar1 != 2" identifier != number_literal)) ))) )) (compound_statement "{\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" { (if_statement "if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" if (parenthesized_expression "(bVar1 < 3)" ( (binary_expression "bVar1 < 3" identifier < number_literal) )) (compound_statement "{\n      if (bVar1 != 0) goto LAB_0017f404;\n    }" { (if_statement "if (bVar1 != 0) goto LAB_0017f404;" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017f404;" goto statement_identifier ;)) }) (else_clause "else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" else (if_statement "if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" if (parenthesized_expression "((bVar1 != 3) && (bVar1 != 4))" ( (binary_expression "(bVar1 != 3) && (bVar1 != 4)" (parenthesized_expression "(bVar1 != 3)" ( (binary_expression "bVar1 != 3" identifier != number_literal) )) && (parenthesized_expression "(bVar1 != 4)" ( (binary_expression "bVar1 != 4" identifier != number_literal) ))) )) (compound_statement "{\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" { (labeled_statement "LAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n      abort();" statement_identifier : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })))) })) (expression_statement "FUN_0017f230(&local_10);" (call_expression "FUN_0017f230(&local_10)" identifier (argument_list "(&local_10)" ( (pointer_expression "&local_10" & identifier) ))) ;) (return_statement "return local_10;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* get_ttype_entry(lsda_header_info*, unsigned long) */\n\nuint __regparm3 get_ttype_entry(lsda_header_info *param_1,ulong param_2)\n\n{\n  lsda_header_info lVar1;\n  byte bVar2;\n  int iVar3;\n  uint local_10 [2];\n  \n  local_10[1] = 0x17f387;\n  lVar1 = param_1[0x14];\n  if (lVar1 == (lsda_header_info)0xff) {\n    iVar3 = 0;\n  }\n  else {\n    bVar2 = (byte)lVar1 & 7;\n    if (bVar2 == 2) {\n      iVar3 = param_2 * -2;\n    }\n    else {\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }\n  }\nLAB_0017f3b8:\n  read_encoded_value_with_base\n            ((uchar)lVar1,*(uint *)(param_1 + 8),(uchar *)(iVar3 + *(int *)(param_1 + 0xc)),local_10\n            );\n  return local_10[0];\n}\n\n" comment comment (function_definition "uint __regparm3 get_ttype_entry(lsda_header_info *param_1,ulong param_2)\n\n{\n  lsda_header_info lVar1;\n  byte bVar2;\n  int iVar3;\n  uint local_10 [2];\n  \n  local_10[1] = 0x17f387;\n  lVar1 = param_1[0x14];\n  if (lVar1 == (lsda_header_info)0xff) {\n    iVar3 = 0;\n  }\n  else {\n    bVar2 = (byte)lVar1 & 7;\n    if (bVar2 == 2) {\n      iVar3 = param_2 * -2;\n    }\n    else {\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }\n  }\nLAB_0017f3b8:\n  read_encoded_value_with_base\n            ((uchar)lVar1,*(uint *)(param_1 + 8),(uchar *)(iVar3 + *(int *)(param_1 + 0xc)),local_10\n            );\n  return local_10[0];\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "get_ttype_entry(lsda_header_info *param_1,ulong param_2)" identifier (parameter_list "(lsda_header_info *param_1,ulong param_2)" ( (parameter_declaration "lsda_header_info *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) ))) (compound_statement "{\n  lsda_header_info lVar1;\n  byte bVar2;\n  int iVar3;\n  uint local_10 [2];\n  \n  local_10[1] = 0x17f387;\n  lVar1 = param_1[0x14];\n  if (lVar1 == (lsda_header_info)0xff) {\n    iVar3 = 0;\n  }\n  else {\n    bVar2 = (byte)lVar1 & 7;\n    if (bVar2 == 2) {\n      iVar3 = param_2 * -2;\n    }\n    else {\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }\n  }\nLAB_0017f3b8:\n  read_encoded_value_with_base\n            ((uchar)lVar1,*(uint *)(param_1 + 8),(uchar *)(iVar3 + *(int *)(param_1 + 0xc)),local_10\n            );\n  return local_10[0];\n}" { (declaration "lsda_header_info lVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint local_10 [2];" type_identifier (array_declarator "local_10 [2]" identifier [ number_literal ]) ;) (expression_statement "local_10[1] = 0x17f387;" (assignment_expression "local_10[1] = 0x17f387" (subscript_expression "local_10[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar1 = param_1[0x14];" (assignment_expression "lVar1 = param_1[0x14]" identifier = (subscript_expression "param_1[0x14]" identifier [ number_literal ])) ;) (if_statement "if (lVar1 == (lsda_header_info)0xff) {\n    iVar3 = 0;\n  }\n  else {\n    bVar2 = (byte)lVar1 & 7;\n    if (bVar2 == 2) {\n      iVar3 = param_2 * -2;\n    }\n    else {\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }\n  }" if (parenthesized_expression "(lVar1 == (lsda_header_info)0xff)" ( (binary_expression "lVar1 == (lsda_header_info)0xff" identifier == (cast_expression "(lsda_header_info)0xff" ( (type_descriptor "lsda_header_info" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar3 = 0;\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    bVar2 = (byte)lVar1 & 7;\n    if (bVar2 == 2) {\n      iVar3 = param_2 * -2;\n    }\n    else {\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }\n  }" else (compound_statement "{\n    bVar2 = (byte)lVar1 & 7;\n    if (bVar2 == 2) {\n      iVar3 = param_2 * -2;\n    }\n    else {\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }\n  }" { (expression_statement "bVar2 = (byte)lVar1 & 7;" (assignment_expression "bVar2 = (byte)lVar1 & 7" identifier = (binary_expression "(byte)lVar1 & 7" (cast_expression "(byte)lVar1" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if (bVar2 == 2) {\n      iVar3 = param_2 * -2;\n    }\n    else {\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }" if (parenthesized_expression "(bVar2 == 2)" ( (binary_expression "bVar2 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar3 = param_2 * -2;\n    }" { (expression_statement "iVar3 = param_2 * -2;" (assignment_expression "iVar3 = param_2 * -2" identifier = (binary_expression "param_2 * -2" identifier * number_literal)) ;) }) (else_clause "else {\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }" else (compound_statement "{\n      if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }\n      iVar3 = param_2 * -4;\n    }" { (if_statement "if (bVar2 < 3) {\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }" if (parenthesized_expression "(bVar2 < 3)" ( (binary_expression "bVar2 < 3" identifier < number_literal) )) (compound_statement "{\n        if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }" { (if_statement "if (bVar2 != 0) {\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" { (labeled_statement "LAB_0017f404:\n                    /* WARNING: Subroutine does not return */\n          abort();" statement_identifier : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }) (else_clause "else if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }" else (if_statement "if (bVar2 != 3) {\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }" if (parenthesized_expression "(bVar2 != 3)" ( (binary_expression "bVar2 != 3" identifier != number_literal) )) (compound_statement "{\n        if (bVar2 != 4) goto LAB_0017f404;\n        iVar3 = param_2 * -8;\n        goto LAB_0017f3b8;\n      }" { (if_statement "if (bVar2 != 4) goto LAB_0017f404;" if (parenthesized_expression "(bVar2 != 4)" ( (binary_expression "bVar2 != 4" identifier != number_literal) )) (goto_statement "goto LAB_0017f404;" goto statement_identifier ;)) (expression_statement "iVar3 = param_2 * -8;" (assignment_expression "iVar3 = param_2 * -8" identifier = (binary_expression "param_2 * -8" identifier * number_literal)) ;) (goto_statement "goto LAB_0017f3b8;" goto statement_identifier ;) })))) (expression_statement "iVar3 = param_2 * -4;" (assignment_expression "iVar3 = param_2 * -4" identifier = (binary_expression "param_2 * -4" identifier * number_literal)) ;) }))) }))) (labeled_statement "LAB_0017f3b8:\n  read_encoded_value_with_base\n            ((uchar)lVar1,*(uint *)(param_1 + 8),(uchar *)(iVar3 + *(int *)(param_1 + 0xc)),local_10\n            );" statement_identifier : (expression_statement "read_encoded_value_with_base\n            ((uchar)lVar1,*(uint *)(param_1 + 8),(uchar *)(iVar3 + *(int *)(param_1 + 0xc)),local_10\n            );" (call_expression "read_encoded_value_with_base\n            ((uchar)lVar1,*(uint *)(param_1 + 8),(uchar *)(iVar3 + *(int *)(param_1 + 0xc)),local_10\n            )" identifier (argument_list "((uchar)lVar1,*(uint *)(param_1 + 8),(uchar *)(iVar3 + *(int *)(param_1 + 0xc)),local_10\n            )" ( (cast_expression "(uchar)lVar1" ( (type_descriptor "uchar" type_identifier) ) identifier) , (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (cast_expression "(uchar *)(iVar3 + *(int *)(param_1 + 0xc))" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + *(int *)(param_1 + 0xc))" ( (binary_expression "iVar3 + *(int *)(param_1 + 0xc)" identifier + (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ))) , identifier ))) ;)) (return_statement "return local_10[0];" return (subscript_expression "local_10[0]" identifier [ number_literal ]) ;) })))
(translation_unit "undefined4 __regparm3 FUN_0017f380(int param_1)\n\n{\n  byte bVar1;\n  undefined4 local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x17f387;\n  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }\n  FUN_0017f230(&local_10);\n  return local_10;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_0017f380(int param_1)\n\n{\n  byte bVar1;\n  undefined4 local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x17f387;\n  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }\n  FUN_0017f230(&local_10);\n  return local_10;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0017f380(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined4 local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x17f387;\n  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }\n  FUN_0017f230(&local_10);\n  return local_10;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined4 local_10;" type_identifier identifier ;) (declaration "undefined4 uStack_c;" type_identifier identifier ;) (expression_statement "uStack_c = 0x17f387;" (assignment_expression "uStack_c = 0x17f387" identifier = number_literal) ;) (if_statement "if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2))" ( (binary_expression "(*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)" (parenthesized_expression "(*(byte *)(param_1 + 0x14) != 0xff)" ( (binary_expression "*(byte *)(param_1 + 0x14) != 0xff" (pointer_expression "*(byte *)(param_1 + 0x14)" * (cast_expression "(byte *)(param_1 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)" ( (comma_expression "bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x14) & 7" identifier = (binary_expression "*(byte *)(param_1 + 0x14) & 7" (pointer_expression "*(byte *)(param_1 + 0x14)" * (cast_expression "(byte *)(param_1 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal)) , (binary_expression "bVar1 != 2" identifier != number_literal)) ))) )) (compound_statement "{\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }" { (if_statement "if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }" if (parenthesized_expression "(bVar1 < 3)" ( (binary_expression "bVar1 < 3" identifier < number_literal) )) (compound_statement "{\n      if (bVar1 != 0) goto LAB_0017f404;\n    }" { (if_statement "if (bVar1 != 0) goto LAB_0017f404;" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0017f404;" goto statement_identifier ;)) }) (else_clause "else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }" else (if_statement "if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }" if (parenthesized_expression "((bVar1 != 3) && (bVar1 != 4))" ( (binary_expression "(bVar1 != 3) && (bVar1 != 4)" (parenthesized_expression "(bVar1 != 3)" ( (binary_expression "bVar1 != 3" identifier != number_literal) )) && (parenthesized_expression "(bVar1 != 4)" ( (binary_expression "bVar1 != 4" identifier != number_literal) ))) )) (compound_statement "{\nLAB_0017f404:\n                    \n      abort();\n    }" { (labeled_statement "LAB_0017f404:\n                    \n      abort();" statement_identifier : (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })))) })) (expression_statement "FUN_0017f230(&local_10);" (call_expression "FUN_0017f230(&local_10)" identifier (argument_list "(&local_10)" ( (pointer_expression "&local_10" & identifier) ))) ;) (return_statement "return local_10;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })))) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 __regparm3 FUN_0017f380(int param_1)\n\n{\n  byte bVar1;\n  undefined4 local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x17f387;\n  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }\n  FUN_0017f230(&local_10);\n  return local_10;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0017f380(int param_1)" (identifier "FUN_0017f380") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  byte bVar1;\n  undefined4 local_10;\n  undefined4 uStack_c;\n  \n  uStack_c = 0x17f387;\n  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }\n  FUN_0017f230(&local_10);\n  return local_10;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined4 local_10;" (type_identifier "undefined4") (identifier "local_10") (; ";")) (declaration "undefined4 uStack_c;" (type_identifier "undefined4") (identifier "uStack_c") (; ";")) (expression_statement "uStack_c = 0x17f387;" (assignment_expression "uStack_c = 0x17f387" (identifier "uStack_c") (= "=") (number_literal "0x17f387")) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2))" (( "(") (binary_expression "(*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)" (parenthesized_expression "(*(byte *)(param_1 + 0x14) != 0xff)" (( "(") (binary_expression "*(byte *)(param_1 + 0x14) != 0xff" (pointer_expression "*(byte *)(param_1 + 0x14)" (* "*") (cast_expression "(byte *)(param_1 + 0x14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "0xff")) () ")")) (&& "&&") (parenthesized_expression "(bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)" (( "(") (comma_expression "bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x14) & 7" (identifier "bVar1") (= "=") (binary_expression "*(byte *)(param_1 + 0x14) & 7" (pointer_expression "*(byte *)(param_1 + 0x14)" (* "*") (cast_expression "(byte *)(param_1 + 0x14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "7"))) (, ",") (binary_expression "bVar1 != 2" (identifier "bVar1") (!= "!=") (number_literal "2"))) () ")"))) () ")")) (compound_statement "{\n    if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }\n  }" ({ "{") (if_statement "if (bVar1 < 3) {\n      if (bVar1 != 0) goto LAB_0017f404;\n    }\n    else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }" (if "if") (parenthesized_expression "(bVar1 < 3)" (( "(") (binary_expression "bVar1 < 3" (identifier "bVar1") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n      if (bVar1 != 0) goto LAB_0017f404;\n    }" ({ "{") (if_statement "if (bVar1 != 0) goto LAB_0017f404;" (if "if") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0017f404;" (goto "goto") (statement_identifier "LAB_0017f404") (; ";"))) (} "}")) (else_clause "else if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }" (else "else") (if_statement "if ((bVar1 != 3) && (bVar1 != 4)) {\nLAB_0017f404:\n                    \n      abort();\n    }" (if "if") (parenthesized_expression "((bVar1 != 3) && (bVar1 != 4))" (( "(") (binary_expression "(bVar1 != 3) && (bVar1 != 4)" (parenthesized_expression "(bVar1 != 3)" (( "(") (binary_expression "bVar1 != 3" (identifier "bVar1") (!= "!=") (number_literal "3")) () ")")) (&& "&&") (parenthesized_expression "(bVar1 != 4)" (( "(") (binary_expression "bVar1 != 4" (identifier "bVar1") (!= "!=") (number_literal "4")) () ")"))) () ")")) (compound_statement "{\nLAB_0017f404:\n                    \n      abort();\n    }" ({ "{") (labeled_statement "LAB_0017f404:\n                    \n      abort();" (statement_identifier "LAB_0017f404") (: ":") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))))) (} "}"))) (expression_statement "FUN_0017f230(&local_10);" (call_expression "FUN_0017f230(&local_10)" (identifier "FUN_0017f230") (argument_list "(&local_10)" (( "(") (pointer_expression "&local_10" (& "&") (identifier "local_10")) () ")"))) (; ";")) (return_statement "return local_10;" (return "return") (identifier "local_10") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* get_ttype_entry(lsda_header_info*, unsigned long) */

type_1 __regparm3 function_1(type_2 *var_6,type_3 var_3)

{
  type_2 var_1;
  type_4 var_2;
  int var_7;
  type_1 local_10 [2];
  
  local_10[1] = 0x17f387;
  var_1 = var_6[0x14];
  if (var_1 == (type_2)0xff) {
    var_7 = 0;
  }
  else {
    var_2 = (type_4)var_1 & 7;
    if (var_2 == 2) {
      var_7 = var_3 * -2;
    }
    else {
      if (var_2 < 3) {
        if (var_2 != 0) {
LAB_0017f404:
                    /* WARNING: Subroutine does not return */
          var_4();
        }
      }
      else if (var_2 != 3) {
        if (var_2 != 4) goto LAB_0017f404;
        var_7 = var_3 * -8;
        goto LAB_0017f3b8;
      }
      var_7 = var_3 * -4;
    }
  }
LAB_0017f3b8:
  var_5
            ((type_5)var_1,*(type_1 *)(var_6 + 8),(type_5 *)(var_7 + *(int *)(var_6 + 0xc)),local_10
            );
  return local_10[0];
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (return_statement (identifier)))))

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

undefined4 __regparm3 MASKED(int param_1)

{
  byte bVar1;
  undefined4 local_10;
  undefined4 uStack_c;
  
  uStack_c = 0x17f387;
  if ((*(byte *)(param_1 + 0x14) != 0xff) && (bVar1 = *(byte *)(param_1 + 0x14) & 7, bVar1 != 2)) {
    if (bVar1 < 3) {
      if (bVar1 != 0) goto LAB_0017f404;
    }
    else if ((bVar1 != 3) && (bVar1 != 4)) {
LAB_0017f404:
                    /* WARNING: Subroutine does not return */
      abort();
    }
  }
  FUN_0017f230(&local_10);
  return local_10;
}

