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

demangle_component * __regparm3
d_make_comp(d_info *di,demangle_component_type type,demangle_component *left,
           demangle_component *right)

{
  int iVar1;
  demangle_component *pdVar2;
  
  switch(type) {
  default:
    goto _L12;
  case DEMANGLE_COMPONENT_QUAL_NAME:
  case DEMANGLE_COMPONENT_LOCAL_NAME:
  case DEMANGLE_COMPONENT_TYPED_NAME:
  case DEMANGLE_COMPONENT_TEMPLATE:
  case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:
  case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
  case DEMANGLE_COMPONENT_PTRMEM_TYPE:
  case DEMANGLE_COMPONENT_VECTOR_TYPE:
  case DEMANGLE_COMPONENT_UNARY:
  case DEMANGLE_COMPONENT_BINARY:
  case DEMANGLE_COMPONENT_BINARY_ARGS:
  case DEMANGLE_COMPONENT_TRINARY:
  case DEMANGLE_COMPONENT_TRINARY_ARG1:
  case DEMANGLE_COMPONENT_LITERAL:
  case DEMANGLE_COMPONENT_LITERAL_NEG:
  case DEMANGLE_COMPONENT_COMPOUND_NAME:
  case DEMANGLE_COMPONENT_TAGGED_NAME:
  case DEMANGLE_COMPONENT_CLONE:
    if (left == (demangle_component *)0x0) {
      return (demangle_component *)0x0;
    }
  case DEMANGLE_COMPONENT_ARRAY_TYPE:
  case DEMANGLE_COMPONENT_INITIALIZER_LIST:
    if (right == (demangle_component *)0x0) {
      return (demangle_component *)0x0;
    }
    break;
  case DEMANGLE_COMPONENT_VTABLE:
  case DEMANGLE_COMPONENT_VTT:
  case DEMANGLE_COMPONENT_TYPEINFO:
  case DEMANGLE_COMPONENT_TYPEINFO_NAME:
  case DEMANGLE_COMPONENT_TYPEINFO_FN:
  case DEMANGLE_COMPONENT_THUNK:
  case DEMANGLE_COMPONENT_VIRTUAL_THUNK:
  case DEMANGLE_COMPONENT_COVARIANT_THUNK:
  case DEMANGLE_COMPONENT_JAVA_CLASS:
  case DEMANGLE_COMPONENT_GUARD:
  case DEMANGLE_COMPONENT_TLS_INIT:
  case DEMANGLE_COMPONENT_TLS_WRAPPER:
  case DEMANGLE_COMPONENT_REFTEMP:
  case DEMANGLE_COMPONENT_HIDDEN_ALIAS:
  case DEMANGLE_COMPONENT_POINTER:
  case DEMANGLE_COMPONENT_REFERENCE:
  case DEMANGLE_COMPONENT_RVALUE_REFERENCE:
  case DEMANGLE_COMPONENT_COMPLEX:
  case DEMANGLE_COMPONENT_IMAGINARY:
  case DEMANGLE_COMPONENT_VENDOR_TYPE:
  case DEMANGLE_COMPONENT_CAST:
  case DEMANGLE_COMPONENT_CONVERSION:
  case DEMANGLE_COMPONENT_NULLARY:
  case DEMANGLE_COMPONENT_TRINARY_ARG2:
  case DEMANGLE_COMPONENT_JAVA_RESOURCE:
  case DEMANGLE_COMPONENT_DECLTYPE:
  case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:
  case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:
  case DEMANGLE_COMPONENT_TRANSACTION_CLONE:
  case DEMANGLE_COMPONENT_NONTRANSACTION_CLONE:
  case DEMANGLE_COMPONENT_PACK_EXPANSION:
    if (left == (demangle_component *)0x0) {
      return (demangle_component *)0x0;
    }
    break;
  case DEMANGLE_COMPONENT_RESTRICT:
  case DEMANGLE_COMPONENT_VOLATILE:
  case DEMANGLE_COMPONENT_CONST:
  case DEMANGLE_COMPONENT_RESTRICT_THIS:
  case DEMANGLE_COMPONENT_VOLATILE_THIS:
  case DEMANGLE_COMPONENT_CONST_THIS:
  case DEMANGLE_COMPONENT_REFERENCE_THIS:
  case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS:
  case DEMANGLE_COMPONENT_FUNCTION_TYPE:
  case DEMANGLE_COMPONENT_ARGLIST:
  case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
  case DEMANGLE_COMPONENT_TRANSACTION_SAFE:
  case DEMANGLE_COMPONENT_NOEXCEPT:
  case DEMANGLE_COMPONENT_THROW_SPEC:
    break;
  }
  iVar1 = di->next_comp;
  if (iVar1 < di->num_comps) {
    pdVar2 = di->comps + iVar1;
    pdVar2->d_printing = 0;
    di->next_comp = iVar1 + 1;
    pdVar2->type = type;
    (pdVar2->u).s_extended_operator.name = right;
    (pdVar2->u).s_fixed.length = left;
    return pdVar2;
  }
_L12:
  return (demangle_component *)0x0;
}



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

undefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)

{
  int iVar1;
  undefined4 *puVar2;
  
  switch(param_2) {
  default:
    goto LAB_00199c14;
  case 1:
  case 2:
  case 3:
  case 4:
  case 0xb:
  case 0x21:
  case 0x2b:
  case 0x2d:
  case 0x36:
  case 0x37:
  case 0x38:
  case 0x39:
  case 0x3a:
  case 0x3c:
  case 0x3d:
  case 0x3f:
  case 0x4b:
  case 0x4d:
    if (param_3 == 0) {
      return (undefined4 *)0x0;
    }
  case 0x2a:
  case 0x30:
    if (param_4 == 0) {
      return (undefined4 *)0x0;
    }
    break;
  case 9:
  case 10:
  case 0xc:
  case 0xd:
  case 0xe:
  case 0xf:
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
  case 0x14:
  case 0x15:
  case 0x16:
  case 0x17:
  case 0x22:
  case 0x23:
  case 0x24:
  case 0x25:
  case 0x26:
  case 0x28:
  case 0x33:
  case 0x34:
  case 0x35:
  case 0x3b:
  case 0x3e:
  case 0x42:
  case 0x43:
  case 0x44:
  case 0x48:
  case 0x49:
  case 0x4a:
    if (param_3 == 0) {
      return (undefined4 *)0x0;
    }
    break;
  case 0x19:
  case 0x1a:
  case 0x1b:
  case 0x1c:
  case 0x1d:
  case 0x1e:
  case 0x1f:
  case 0x20:
  case 0x29:
  case 0x2e:
  case 0x2f:
  case 0x4c:
  case 0x4e:
  case 0x4f:
    break;
  }
  iVar1 = *(int *)(param_1 + 0x14);
  if (iVar1 < *(int *)(param_1 + 0x18)) {
    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));
    puVar2[1] = 0;
    *(int *)(param_1 + 0x14) = iVar1 + 1;
    *puVar2 = param_2;
    puVar2[3] = param_4;
    puVar2[2] = param_3;
    return puVar2;
  }
LAB_00199c14:
  return (undefined4 *)0x0;
}


PUSH ESI
PUSH EBX
CALL 0x00035680
ADD EBX,0x1a5449
CMP EDX,0x4f
JA 0x00199c14
ADD EBX,dword ptr [EBX + EDX*0x4 + 0xfff2aebc]
JMP EBX
XOR EBX,EBX
MOV EAX,EBX
POP EBX
POP ESI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  \n  switch(param_2) {\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }\n  iVar1 = *(int *)(param_1 + 0x14);\n  if (iVar1 < *(int *)(param_1 + 0x18)) {\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }\nLAB_00199c14:\n  return (undefined4 *)0x0;\n}\n\n" comment (ERROR "undefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" (binary_expression "undefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" identifier (argument_list "(int param_1,undefined4 param_2,int param_3,int param_4)" ( (ERROR "int" identifier) identifier , identifier (ERROR "param_2" identifier) , (ERROR "int" identifier) identifier , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  \n  switch(param_2) {\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }\n  iVar1 = *(int *)(param_1 + 0x14);\n  if (iVar1 < *(int *)(param_1 + 0x18)) {\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }\nLAB_00199c14:\n  return (undefined4 *)0x0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (switch_statement "switch(param_2) {\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }" switch (parenthesized_expression "(param_2)" ( identifier )) (compound_statement "{\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }" { (case_statement "default:\n    goto LAB_00199c14;" default : (goto_statement "goto LAB_00199c14;" goto statement_identifier ;)) (case_statement "case 1:" 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 0xb:" case number_literal :) (case_statement "case 0x21:" case number_literal :) (case_statement "case 0x2b:" case number_literal :) (case_statement "case 0x2d:" case number_literal :) (case_statement "case 0x36:" case number_literal :) (case_statement "case 0x37:" case number_literal :) (case_statement "case 0x38:" case number_literal :) (case_statement "case 0x39:" case number_literal :) (case_statement "case 0x3a:" case number_literal :) (case_statement "case 0x3c:" case number_literal :) (case_statement "case 0x3d:" case number_literal :) (case_statement "case 0x3f:" case number_literal :) (case_statement "case 0x4b:" case number_literal :) (case_statement "case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" case number_literal : (if_statement "if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (case_statement "case 0x2a:" case number_literal :) (case_statement "case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;" case number_literal : (if_statement "if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 10:" 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 0xf:" case number_literal :) (case_statement "case 0x10:" case number_literal :) (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x12:" case number_literal :) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:" case number_literal :) (case_statement "case 0x16:" case number_literal :) (case_statement "case 0x17:" case number_literal :) (case_statement "case 0x22:" case number_literal :) (case_statement "case 0x23:" case number_literal :) (case_statement "case 0x24:" case number_literal :) (case_statement "case 0x25:" case number_literal :) (case_statement "case 0x26:" case number_literal :) (case_statement "case 0x28:" case number_literal :) (case_statement "case 0x33:" case number_literal :) (case_statement "case 0x34:" case number_literal :) (case_statement "case 0x35:" case number_literal :) (case_statement "case 0x3b:" case number_literal :) (case_statement "case 0x3e:" case number_literal :) (case_statement "case 0x42:" case number_literal :) (case_statement "case 0x43:" case number_literal :) (case_statement "case 0x44:" case number_literal :) (case_statement "case 0x48:" case number_literal :) (case_statement "case 0x49:" case number_literal :) (case_statement "case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;" case number_literal : (if_statement "if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case 0x19:" case number_literal :) (case_statement "case 0x1a:" case number_literal :) (case_statement "case 0x1b:" case number_literal :) (case_statement "case 0x1c:" case number_literal :) (case_statement "case 0x1d:" case number_literal :) (case_statement "case 0x1e:" case number_literal :) (case_statement "case 0x1f:" case number_literal :) (case_statement "case 0x20:" case number_literal :) (case_statement "case 0x29:" case number_literal :) (case_statement "case 0x2e:" case number_literal :) (case_statement "case 0x2f:" case number_literal :) (case_statement "case 0x4c:" case number_literal :) (case_statement "case 0x4e:" case number_literal :) (case_statement "case 0x4f:\n    break;" case number_literal : (break_statement "break;" break ;)) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 < *(int *)(param_1 + 0x18)) {\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }" if (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x18))" ( (binary_expression "iVar1 < *(int *)(param_1 + 0x18)" identifier < (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }" { (expression_statement "puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar1 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar1 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2[3] = param_4;" (assignment_expression "puVar2[3] = param_4" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[2] = param_3;" (assignment_expression "puVar2[2] = param_3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar2;" return identifier ;) })) (labeled_statement "LAB_00199c14:\n  return (undefined4 *)0x0;" statement_identifier : (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\ndemangle_component * __regparm3\nd_make_comp(d_info *di,demangle_component_type type,demangle_component *left,\n           demangle_component *right)\n\n{\n  int iVar1;\n  demangle_component *pdVar2;\n  \n  switch(type) {\n  default:\n    goto _L12;\n  case DEMANGLE_COMPONENT_QUAL_NAME:\n  case DEMANGLE_COMPONENT_LOCAL_NAME:\n  case DEMANGLE_COMPONENT_TYPED_NAME:\n  case DEMANGLE_COMPONENT_TEMPLATE:\n  case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:\n  case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:\n  case DEMANGLE_COMPONENT_PTRMEM_TYPE:\n  case DEMANGLE_COMPONENT_VECTOR_TYPE:\n  case DEMANGLE_COMPONENT_UNARY:\n  case DEMANGLE_COMPONENT_BINARY:\n  case DEMANGLE_COMPONENT_BINARY_ARGS:\n  case DEMANGLE_COMPONENT_TRINARY:\n  case DEMANGLE_COMPONENT_TRINARY_ARG1:\n  case DEMANGLE_COMPONENT_LITERAL:\n  case DEMANGLE_COMPONENT_LITERAL_NEG:\n  case DEMANGLE_COMPONENT_COMPOUND_NAME:\n  case DEMANGLE_COMPONENT_TAGGED_NAME:\n  case DEMANGLE_COMPONENT_CLONE:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n  case DEMANGLE_COMPONENT_ARRAY_TYPE:\n  case DEMANGLE_COMPONENT_INITIALIZER_LIST:\n    if (right == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;\n  case DEMANGLE_COMPONENT_VTABLE:\n  case DEMANGLE_COMPONENT_VTT:\n  case DEMANGLE_COMPONENT_TYPEINFO:\n  case DEMANGLE_COMPONENT_TYPEINFO_NAME:\n  case DEMANGLE_COMPONENT_TYPEINFO_FN:\n  case DEMANGLE_COMPONENT_THUNK:\n  case DEMANGLE_COMPONENT_VIRTUAL_THUNK:\n  case DEMANGLE_COMPONENT_COVARIANT_THUNK:\n  case DEMANGLE_COMPONENT_JAVA_CLASS:\n  case DEMANGLE_COMPONENT_GUARD:\n  case DEMANGLE_COMPONENT_TLS_INIT:\n  case DEMANGLE_COMPONENT_TLS_WRAPPER:\n  case DEMANGLE_COMPONENT_REFTEMP:\n  case DEMANGLE_COMPONENT_HIDDEN_ALIAS:\n  case DEMANGLE_COMPONENT_POINTER:\n  case DEMANGLE_COMPONENT_REFERENCE:\n  case DEMANGLE_COMPONENT_RVALUE_REFERENCE:\n  case DEMANGLE_COMPONENT_COMPLEX:\n  case DEMANGLE_COMPONENT_IMAGINARY:\n  case DEMANGLE_COMPONENT_VENDOR_TYPE:\n  case DEMANGLE_COMPONENT_CAST:\n  case DEMANGLE_COMPONENT_CONVERSION:\n  case DEMANGLE_COMPONENT_NULLARY:\n  case DEMANGLE_COMPONENT_TRINARY_ARG2:\n  case DEMANGLE_COMPONENT_JAVA_RESOURCE:\n  case DEMANGLE_COMPONENT_DECLTYPE:\n  case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:\n  case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:\n  case DEMANGLE_COMPONENT_TRANSACTION_CLONE:\n  case DEMANGLE_COMPONENT_NONTRANSACTION_CLONE:\n  case DEMANGLE_COMPONENT_PACK_EXPANSION:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;\n  case DEMANGLE_COMPONENT_RESTRICT:\n  case DEMANGLE_COMPONENT_VOLATILE:\n  case DEMANGLE_COMPONENT_CONST:\n  case DEMANGLE_COMPONENT_RESTRICT_THIS:\n  case DEMANGLE_COMPONENT_VOLATILE_THIS:\n  case DEMANGLE_COMPONENT_CONST_THIS:\n  case DEMANGLE_COMPONENT_REFERENCE_THIS:\n  case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS:\n  case DEMANGLE_COMPONENT_FUNCTION_TYPE:\n  case DEMANGLE_COMPONENT_ARGLIST:\n  case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:\n  case DEMANGLE_COMPONENT_TRANSACTION_SAFE:\n  case DEMANGLE_COMPONENT_NOEXCEPT:\n  case DEMANGLE_COMPONENT_THROW_SPEC:\n    break;\n  }\n  iVar1 = di->next_comp;\n  if (iVar1 < di->num_comps) {\n    pdVar2 = di->comps + iVar1;\n    pdVar2->d_printing = 0;\n    di->next_comp = iVar1 + 1;\n    pdVar2->type = type;\n    (pdVar2->u).s_extended_operator.name = right;\n    (pdVar2->u).s_fixed.length = left;\n    return pdVar2;\n  }\n_L12:\n  return (demangle_component *)0x0;\n}\n\n" comment (ERROR "demangle_component * __regparm3\nd_make_comp(d_info *di,demangle_component_type type,demangle_component *left,\n           demangle_component *right)" (binary_expression "demangle_component * __regparm3\nd_make_comp(d_info *di,demangle_component_type type,demangle_component *left,\n           demangle_component *right)" identifier * (ERROR "__regparm3" identifier) (call_expression "d_make_comp(d_info *di,demangle_component_type type,demangle_component *left,\n           demangle_component *right)" identifier (argument_list "(d_info *di,demangle_component_type type,demangle_component *left,\n           demangle_component *right)" ( (binary_expression "d_info *di" identifier * identifier) , identifier (ERROR "type" identifier) , (binary_expression "demangle_component *left" identifier * identifier) , (binary_expression "demangle_component *right" identifier * identifier) ))))) (compound_statement "{\n  int iVar1;\n  demangle_component *pdVar2;\n  \n  switch(type) {\n  default:\n    goto _L12;\n  case DEMANGLE_COMPONENT_QUAL_NAME:\n  case DEMANGLE_COMPONENT_LOCAL_NAME:\n  case DEMANGLE_COMPONENT_TYPED_NAME:\n  case DEMANGLE_COMPONENT_TEMPLATE:\n  case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:\n  case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:\n  case DEMANGLE_COMPONENT_PTRMEM_TYPE:\n  case DEMANGLE_COMPONENT_VECTOR_TYPE:\n  case DEMANGLE_COMPONENT_UNARY:\n  case DEMANGLE_COMPONENT_BINARY:\n  case DEMANGLE_COMPONENT_BINARY_ARGS:\n  case DEMANGLE_COMPONENT_TRINARY:\n  case DEMANGLE_COMPONENT_TRINARY_ARG1:\n  case DEMANGLE_COMPONENT_LITERAL:\n  case DEMANGLE_COMPONENT_LITERAL_NEG:\n  case DEMANGLE_COMPONENT_COMPOUND_NAME:\n  case DEMANGLE_COMPONENT_TAGGED_NAME:\n  case DEMANGLE_COMPONENT_CLONE:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n  case DEMANGLE_COMPONENT_ARRAY_TYPE:\n  case DEMANGLE_COMPONENT_INITIALIZER_LIST:\n    if (right == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;\n  case DEMANGLE_COMPONENT_VTABLE:\n  case DEMANGLE_COMPONENT_VTT:\n  case DEMANGLE_COMPONENT_TYPEINFO:\n  case DEMANGLE_COMPONENT_TYPEINFO_NAME:\n  case DEMANGLE_COMPONENT_TYPEINFO_FN:\n  case DEMANGLE_COMPONENT_THUNK:\n  case DEMANGLE_COMPONENT_VIRTUAL_THUNK:\n  case DEMANGLE_COMPONENT_COVARIANT_THUNK:\n  case DEMANGLE_COMPONENT_JAVA_CLASS:\n  case DEMANGLE_COMPONENT_GUARD:\n  case DEMANGLE_COMPONENT_TLS_INIT:\n  case DEMANGLE_COMPONENT_TLS_WRAPPER:\n  case DEMANGLE_COMPONENT_REFTEMP:\n  case DEMANGLE_COMPONENT_HIDDEN_ALIAS:\n  case DEMANGLE_COMPONENT_POINTER:\n  case DEMANGLE_COMPONENT_REFERENCE:\n  case DEMANGLE_COMPONENT_RVALUE_REFERENCE:\n  case DEMANGLE_COMPONENT_COMPLEX:\n  case DEMANGLE_COMPONENT_IMAGINARY:\n  case DEMANGLE_COMPONENT_VENDOR_TYPE:\n  case DEMANGLE_COMPONENT_CAST:\n  case DEMANGLE_COMPONENT_CONVERSION:\n  case DEMANGLE_COMPONENT_NULLARY:\n  case DEMANGLE_COMPONENT_TRINARY_ARG2:\n  case DEMANGLE_COMPONENT_JAVA_RESOURCE:\n  case DEMANGLE_COMPONENT_DECLTYPE:\n  case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:\n  case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:\n  case DEMANGLE_COMPONENT_TRANSACTION_CLONE:\n  case DEMANGLE_COMPONENT_NONTRANSACTION_CLONE:\n  case DEMANGLE_COMPONENT_PACK_EXPANSION:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;\n  case DEMANGLE_COMPONENT_RESTRICT:\n  case DEMANGLE_COMPONENT_VOLATILE:\n  case DEMANGLE_COMPONENT_CONST:\n  case DEMANGLE_COMPONENT_RESTRICT_THIS:\n  case DEMANGLE_COMPONENT_VOLATILE_THIS:\n  case DEMANGLE_COMPONENT_CONST_THIS:\n  case DEMANGLE_COMPONENT_REFERENCE_THIS:\n  case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS:\n  case DEMANGLE_COMPONENT_FUNCTION_TYPE:\n  case DEMANGLE_COMPONENT_ARGLIST:\n  case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:\n  case DEMANGLE_COMPONENT_TRANSACTION_SAFE:\n  case DEMANGLE_COMPONENT_NOEXCEPT:\n  case DEMANGLE_COMPONENT_THROW_SPEC:\n    break;\n  }\n  iVar1 = di->next_comp;\n  if (iVar1 < di->num_comps) {\n    pdVar2 = di->comps + iVar1;\n    pdVar2->d_printing = 0;\n    di->next_comp = iVar1 + 1;\n    pdVar2->type = type;\n    (pdVar2->u).s_extended_operator.name = right;\n    (pdVar2->u).s_fixed.length = left;\n    return pdVar2;\n  }\n_L12:\n  return (demangle_component *)0x0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "demangle_component *pdVar2;" type_identifier (pointer_declarator "*pdVar2" * identifier) ;) (switch_statement "switch(type) {\n  default:\n    goto _L12;\n  case DEMANGLE_COMPONENT_QUAL_NAME:\n  case DEMANGLE_COMPONENT_LOCAL_NAME:\n  case DEMANGLE_COMPONENT_TYPED_NAME:\n  case DEMANGLE_COMPONENT_TEMPLATE:\n  case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:\n  case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:\n  case DEMANGLE_COMPONENT_PTRMEM_TYPE:\n  case DEMANGLE_COMPONENT_VECTOR_TYPE:\n  case DEMANGLE_COMPONENT_UNARY:\n  case DEMANGLE_COMPONENT_BINARY:\n  case DEMANGLE_COMPONENT_BINARY_ARGS:\n  case DEMANGLE_COMPONENT_TRINARY:\n  case DEMANGLE_COMPONENT_TRINARY_ARG1:\n  case DEMANGLE_COMPONENT_LITERAL:\n  case DEMANGLE_COMPONENT_LITERAL_NEG:\n  case DEMANGLE_COMPONENT_COMPOUND_NAME:\n  case DEMANGLE_COMPONENT_TAGGED_NAME:\n  case DEMANGLE_COMPONENT_CLONE:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n  case DEMANGLE_COMPONENT_ARRAY_TYPE:\n  case DEMANGLE_COMPONENT_INITIALIZER_LIST:\n    if (right == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;\n  case DEMANGLE_COMPONENT_VTABLE:\n  case DEMANGLE_COMPONENT_VTT:\n  case DEMANGLE_COMPONENT_TYPEINFO:\n  case DEMANGLE_COMPONENT_TYPEINFO_NAME:\n  case DEMANGLE_COMPONENT_TYPEINFO_FN:\n  case DEMANGLE_COMPONENT_THUNK:\n  case DEMANGLE_COMPONENT_VIRTUAL_THUNK:\n  case DEMANGLE_COMPONENT_COVARIANT_THUNK:\n  case DEMANGLE_COMPONENT_JAVA_CLASS:\n  case DEMANGLE_COMPONENT_GUARD:\n  case DEMANGLE_COMPONENT_TLS_INIT:\n  case DEMANGLE_COMPONENT_TLS_WRAPPER:\n  case DEMANGLE_COMPONENT_REFTEMP:\n  case DEMANGLE_COMPONENT_HIDDEN_ALIAS:\n  case DEMANGLE_COMPONENT_POINTER:\n  case DEMANGLE_COMPONENT_REFERENCE:\n  case DEMANGLE_COMPONENT_RVALUE_REFERENCE:\n  case DEMANGLE_COMPONENT_COMPLEX:\n  case DEMANGLE_COMPONENT_IMAGINARY:\n  case DEMANGLE_COMPONENT_VENDOR_TYPE:\n  case DEMANGLE_COMPONENT_CAST:\n  case DEMANGLE_COMPONENT_CONVERSION:\n  case DEMANGLE_COMPONENT_NULLARY:\n  case DEMANGLE_COMPONENT_TRINARY_ARG2:\n  case DEMANGLE_COMPONENT_JAVA_RESOURCE:\n  case DEMANGLE_COMPONENT_DECLTYPE:\n  case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:\n  case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:\n  case DEMANGLE_COMPONENT_TRANSACTION_CLONE:\n  case DEMANGLE_COMPONENT_NONTRANSACTION_CLONE:\n  case DEMANGLE_COMPONENT_PACK_EXPANSION:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;\n  case DEMANGLE_COMPONENT_RESTRICT:\n  case DEMANGLE_COMPONENT_VOLATILE:\n  case DEMANGLE_COMPONENT_CONST:\n  case DEMANGLE_COMPONENT_RESTRICT_THIS:\n  case DEMANGLE_COMPONENT_VOLATILE_THIS:\n  case DEMANGLE_COMPONENT_CONST_THIS:\n  case DEMANGLE_COMPONENT_REFERENCE_THIS:\n  case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS:\n  case DEMANGLE_COMPONENT_FUNCTION_TYPE:\n  case DEMANGLE_COMPONENT_ARGLIST:\n  case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:\n  case DEMANGLE_COMPONENT_TRANSACTION_SAFE:\n  case DEMANGLE_COMPONENT_NOEXCEPT:\n  case DEMANGLE_COMPONENT_THROW_SPEC:\n    break;\n  }" switch (parenthesized_expression "(type)" ( identifier )) (compound_statement "{\n  default:\n    goto _L12;\n  case DEMANGLE_COMPONENT_QUAL_NAME:\n  case DEMANGLE_COMPONENT_LOCAL_NAME:\n  case DEMANGLE_COMPONENT_TYPED_NAME:\n  case DEMANGLE_COMPONENT_TEMPLATE:\n  case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:\n  case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:\n  case DEMANGLE_COMPONENT_PTRMEM_TYPE:\n  case DEMANGLE_COMPONENT_VECTOR_TYPE:\n  case DEMANGLE_COMPONENT_UNARY:\n  case DEMANGLE_COMPONENT_BINARY:\n  case DEMANGLE_COMPONENT_BINARY_ARGS:\n  case DEMANGLE_COMPONENT_TRINARY:\n  case DEMANGLE_COMPONENT_TRINARY_ARG1:\n  case DEMANGLE_COMPONENT_LITERAL:\n  case DEMANGLE_COMPONENT_LITERAL_NEG:\n  case DEMANGLE_COMPONENT_COMPOUND_NAME:\n  case DEMANGLE_COMPONENT_TAGGED_NAME:\n  case DEMANGLE_COMPONENT_CLONE:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n  case DEMANGLE_COMPONENT_ARRAY_TYPE:\n  case DEMANGLE_COMPONENT_INITIALIZER_LIST:\n    if (right == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;\n  case DEMANGLE_COMPONENT_VTABLE:\n  case DEMANGLE_COMPONENT_VTT:\n  case DEMANGLE_COMPONENT_TYPEINFO:\n  case DEMANGLE_COMPONENT_TYPEINFO_NAME:\n  case DEMANGLE_COMPONENT_TYPEINFO_FN:\n  case DEMANGLE_COMPONENT_THUNK:\n  case DEMANGLE_COMPONENT_VIRTUAL_THUNK:\n  case DEMANGLE_COMPONENT_COVARIANT_THUNK:\n  case DEMANGLE_COMPONENT_JAVA_CLASS:\n  case DEMANGLE_COMPONENT_GUARD:\n  case DEMANGLE_COMPONENT_TLS_INIT:\n  case DEMANGLE_COMPONENT_TLS_WRAPPER:\n  case DEMANGLE_COMPONENT_REFTEMP:\n  case DEMANGLE_COMPONENT_HIDDEN_ALIAS:\n  case DEMANGLE_COMPONENT_POINTER:\n  case DEMANGLE_COMPONENT_REFERENCE:\n  case DEMANGLE_COMPONENT_RVALUE_REFERENCE:\n  case DEMANGLE_COMPONENT_COMPLEX:\n  case DEMANGLE_COMPONENT_IMAGINARY:\n  case DEMANGLE_COMPONENT_VENDOR_TYPE:\n  case DEMANGLE_COMPONENT_CAST:\n  case DEMANGLE_COMPONENT_CONVERSION:\n  case DEMANGLE_COMPONENT_NULLARY:\n  case DEMANGLE_COMPONENT_TRINARY_ARG2:\n  case DEMANGLE_COMPONENT_JAVA_RESOURCE:\n  case DEMANGLE_COMPONENT_DECLTYPE:\n  case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:\n  case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:\n  case DEMANGLE_COMPONENT_TRANSACTION_CLONE:\n  case DEMANGLE_COMPONENT_NONTRANSACTION_CLONE:\n  case DEMANGLE_COMPONENT_PACK_EXPANSION:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;\n  case DEMANGLE_COMPONENT_RESTRICT:\n  case DEMANGLE_COMPONENT_VOLATILE:\n  case DEMANGLE_COMPONENT_CONST:\n  case DEMANGLE_COMPONENT_RESTRICT_THIS:\n  case DEMANGLE_COMPONENT_VOLATILE_THIS:\n  case DEMANGLE_COMPONENT_CONST_THIS:\n  case DEMANGLE_COMPONENT_REFERENCE_THIS:\n  case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS:\n  case DEMANGLE_COMPONENT_FUNCTION_TYPE:\n  case DEMANGLE_COMPONENT_ARGLIST:\n  case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:\n  case DEMANGLE_COMPONENT_TRANSACTION_SAFE:\n  case DEMANGLE_COMPONENT_NOEXCEPT:\n  case DEMANGLE_COMPONENT_THROW_SPEC:\n    break;\n  }" { (case_statement "default:\n    goto _L12;" default : (goto_statement "goto _L12;" goto statement_identifier ;)) (case_statement "case DEMANGLE_COMPONENT_QUAL_NAME:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_LOCAL_NAME:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TYPED_NAME:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TEMPLATE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_PTRMEM_TYPE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_VECTOR_TYPE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_UNARY:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_BINARY:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_BINARY_ARGS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TRINARY:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TRINARY_ARG1:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_LITERAL:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_LITERAL_NEG:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_COMPOUND_NAME:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TAGGED_NAME:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_CLONE:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }" case identifier : (if_statement "if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }" if (parenthesized_expression "(left == (demangle_component *)0x0)" ( (binary_expression "left == (demangle_component *)0x0" identifier == (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (demangle_component *)0x0;\n    }" { (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (case_statement "case DEMANGLE_COMPONENT_ARRAY_TYPE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_INITIALIZER_LIST:\n    if (right == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;" case identifier : (if_statement "if (right == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }" if (parenthesized_expression "(right == (demangle_component *)0x0)" ( (binary_expression "right == (demangle_component *)0x0" identifier == (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (demangle_component *)0x0;\n    }" { (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case DEMANGLE_COMPONENT_VTABLE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_VTT:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TYPEINFO:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TYPEINFO_NAME:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TYPEINFO_FN:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_THUNK:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_VIRTUAL_THUNK:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_COVARIANT_THUNK:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_JAVA_CLASS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_GUARD:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TLS_INIT:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TLS_WRAPPER:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_REFTEMP:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_HIDDEN_ALIAS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_POINTER:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_REFERENCE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_RVALUE_REFERENCE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_COMPLEX:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_IMAGINARY:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_VENDOR_TYPE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_CAST:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_CONVERSION:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_NULLARY:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TRINARY_ARG2:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_JAVA_RESOURCE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_DECLTYPE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TRANSACTION_CLONE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_NONTRANSACTION_CLONE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_PACK_EXPANSION:\n    if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }\n    break;" case identifier : (if_statement "if (left == (demangle_component *)0x0) {\n      return (demangle_component *)0x0;\n    }" if (parenthesized_expression "(left == (demangle_component *)0x0)" ( (binary_expression "left == (demangle_component *)0x0" identifier == (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (demangle_component *)0x0;\n    }" { (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case DEMANGLE_COMPONENT_RESTRICT:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_VOLATILE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_CONST:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_RESTRICT_THIS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_VOLATILE_THIS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_CONST_THIS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_REFERENCE_THIS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_FUNCTION_TYPE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_ARGLIST:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_TRANSACTION_SAFE:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_NOEXCEPT:" case identifier :) (case_statement "case DEMANGLE_COMPONENT_THROW_SPEC:\n    break;" case identifier : (break_statement "break;" break ;)) })) (expression_statement "iVar1 = di->next_comp;" (assignment_expression "iVar1 = di->next_comp" identifier = (field_expression "di->next_comp" identifier -> field_identifier)) ;) (if_statement "if (iVar1 < di->num_comps) {\n    pdVar2 = di->comps + iVar1;\n    pdVar2->d_printing = 0;\n    di->next_comp = iVar1 + 1;\n    pdVar2->type = type;\n    (pdVar2->u).s_extended_operator.name = right;\n    (pdVar2->u).s_fixed.length = left;\n    return pdVar2;\n  }" if (parenthesized_expression "(iVar1 < di->num_comps)" ( (binary_expression "iVar1 < di->num_comps" identifier < (field_expression "di->num_comps" identifier -> field_identifier)) )) (compound_statement "{\n    pdVar2 = di->comps + iVar1;\n    pdVar2->d_printing = 0;\n    di->next_comp = iVar1 + 1;\n    pdVar2->type = type;\n    (pdVar2->u).s_extended_operator.name = right;\n    (pdVar2->u).s_fixed.length = left;\n    return pdVar2;\n  }" { (expression_statement "pdVar2 = di->comps + iVar1;" (assignment_expression "pdVar2 = di->comps + iVar1" identifier = (binary_expression "di->comps + iVar1" (field_expression "di->comps" identifier -> field_identifier) + identifier)) ;) (expression_statement "pdVar2->d_printing = 0;" (assignment_expression "pdVar2->d_printing = 0" (field_expression "pdVar2->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "di->next_comp = iVar1 + 1;" (assignment_expression "di->next_comp = iVar1 + 1" (field_expression "di->next_comp" identifier -> field_identifier) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "pdVar2->type = type;" (assignment_expression "pdVar2->type = type" (field_expression "pdVar2->type" identifier -> field_identifier) = identifier) ;) (expression_statement "(pdVar2->u).s_extended_operator.name = right;" (assignment_expression "(pdVar2->u).s_extended_operator.name = right" (field_expression "(pdVar2->u).s_extended_operator.name" (field_expression "(pdVar2->u).s_extended_operator" (parenthesized_expression "(pdVar2->u)" ( (field_expression "pdVar2->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pdVar2->u).s_fixed.length = left;" (assignment_expression "(pdVar2->u).s_fixed.length = left" (field_expression "(pdVar2->u).s_fixed.length" (field_expression "(pdVar2->u).s_fixed" (parenthesized_expression "(pdVar2->u)" ( (field_expression "pdVar2->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (return_statement "return pdVar2;" return identifier ;) })) (labeled_statement "_L12:\n  return (demangle_component *)0x0;" statement_identifier : (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) }))
(translation_unit "undefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  \n  switch(param_2) {\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }\n  iVar1 = *(int *)(param_1 + 0x14);\n  if (iVar1 < *(int *)(param_1 + 0x18)) {\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }\nLAB_00199c14:\n  return (undefined4 *)0x0;\n}\n\n" (ERROR "undefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" (binary_expression "undefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" identifier (argument_list "(int param_1,undefined4 param_2,int param_3,int param_4)" ( (ERROR "int" identifier) identifier , identifier (ERROR "param_2" identifier) , (ERROR "int" identifier) identifier , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  \n  switch(param_2) {\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }\n  iVar1 = *(int *)(param_1 + 0x14);\n  if (iVar1 < *(int *)(param_1 + 0x18)) {\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }\nLAB_00199c14:\n  return (undefined4 *)0x0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (switch_statement "switch(param_2) {\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }" switch (parenthesized_expression "(param_2)" ( identifier )) (compound_statement "{\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }" { (case_statement "default:\n    goto LAB_00199c14;" default : (goto_statement "goto LAB_00199c14;" goto statement_identifier ;)) (case_statement "case 1:" 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 0xb:" case number_literal :) (case_statement "case 0x21:" case number_literal :) (case_statement "case 0x2b:" case number_literal :) (case_statement "case 0x2d:" case number_literal :) (case_statement "case 0x36:" case number_literal :) (case_statement "case 0x37:" case number_literal :) (case_statement "case 0x38:" case number_literal :) (case_statement "case 0x39:" case number_literal :) (case_statement "case 0x3a:" case number_literal :) (case_statement "case 0x3c:" case number_literal :) (case_statement "case 0x3d:" case number_literal :) (case_statement "case 0x3f:" case number_literal :) (case_statement "case 0x4b:" case number_literal :) (case_statement "case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" case number_literal : (if_statement "if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (case_statement "case 0x2a:" case number_literal :) (case_statement "case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;" case number_literal : (if_statement "if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case 9:" case number_literal :) (case_statement "case 10:" 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 0xf:" case number_literal :) (case_statement "case 0x10:" case number_literal :) (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x12:" case number_literal :) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:" case number_literal :) (case_statement "case 0x16:" case number_literal :) (case_statement "case 0x17:" case number_literal :) (case_statement "case 0x22:" case number_literal :) (case_statement "case 0x23:" case number_literal :) (case_statement "case 0x24:" case number_literal :) (case_statement "case 0x25:" case number_literal :) (case_statement "case 0x26:" case number_literal :) (case_statement "case 0x28:" case number_literal :) (case_statement "case 0x33:" case number_literal :) (case_statement "case 0x34:" case number_literal :) (case_statement "case 0x35:" case number_literal :) (case_statement "case 0x3b:" case number_literal :) (case_statement "case 0x3e:" case number_literal :) (case_statement "case 0x42:" case number_literal :) (case_statement "case 0x43:" case number_literal :) (case_statement "case 0x44:" case number_literal :) (case_statement "case 0x48:" case number_literal :) (case_statement "case 0x49:" case number_literal :) (case_statement "case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;" case number_literal : (if_statement "if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case 0x19:" case number_literal :) (case_statement "case 0x1a:" case number_literal :) (case_statement "case 0x1b:" case number_literal :) (case_statement "case 0x1c:" case number_literal :) (case_statement "case 0x1d:" case number_literal :) (case_statement "case 0x1e:" case number_literal :) (case_statement "case 0x1f:" case number_literal :) (case_statement "case 0x20:" case number_literal :) (case_statement "case 0x29:" case number_literal :) (case_statement "case 0x2e:" case number_literal :) (case_statement "case 0x2f:" case number_literal :) (case_statement "case 0x4c:" case number_literal :) (case_statement "case 0x4e:" case number_literal :) (case_statement "case 0x4f:\n    break;" case number_literal : (break_statement "break;" break ;)) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 < *(int *)(param_1 + 0x18)) {\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }" if (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x18))" ( (binary_expression "iVar1 < *(int *)(param_1 + 0x18)" identifier < (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }" { (expression_statement "puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar1 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar1 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2[3] = param_4;" (assignment_expression "puVar2[3] = param_4" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[2] = param_3;" (assignment_expression "puVar2[2] = param_3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar2;" return identifier ;) })) (labeled_statement "LAB_00199c14:\n  return (undefined4 *)0x0;" statement_identifier : (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (ERROR IDENT) IDENT , IDENT (ERROR IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT ))))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement default : (goto_statement goto statement_identifier ;)) (case_statement case 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 :) (case_statement case 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 :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) }))) (case_statement case LIT :) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (break_statement break ;)) (case_statement case 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 :) (case_statement case 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 :) (case_statement case 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 :) (case_statement case 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 :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (break_statement break ;)) (case_statement case 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 :) (case_statement case 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 : (break_statement break ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) }))
(ERROR "undefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" (binary_expression "undefined4 * __regparm3 FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" (identifier "undefined4") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_00199bb0(int param_1,undefined4 param_2,int param_3,int param_4)" (identifier "FUN_00199bb0") (argument_list "(int param_1,undefined4 param_2,int param_3,int param_4)" (( "(") (ERROR "int" (identifier "int")) (identifier "param_1") (, ",") (identifier "undefined4") (ERROR "param_2" (identifier "param_2")) (, ",") (ERROR "int" (identifier "int")) (identifier "param_3") (, ",") (ERROR "int" (identifier "int")) (identifier "param_4") () ")"))))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  \n  switch(param_2) {\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }\n  iVar1 = *(int *)(param_1 + 0x14);\n  if (iVar1 < *(int *)(param_1 + 0x18)) {\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }\nLAB_00199c14:\n  return (undefined4 *)0x0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (switch_statement "switch(param_2) {\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }" (switch "switch") (parenthesized_expression "(param_2)" (( "(") (identifier "param_2") () ")")) (compound_statement "{\n  default:\n    goto LAB_00199c14;\n  case 1:\n  case 2:\n  case 3:\n  case 4:\n  case 0xb:\n  case 0x21:\n  case 0x2b:\n  case 0x2d:\n  case 0x36:\n  case 0x37:\n  case 0x38:\n  case 0x39:\n  case 0x3a:\n  case 0x3c:\n  case 0x3d:\n  case 0x3f:\n  case 0x4b:\n  case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n  case 0x2a:\n  case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 9:\n  case 10:\n  case 0xc:\n  case 0xd:\n  case 0xe:\n  case 0xf:\n  case 0x10:\n  case 0x11:\n  case 0x12:\n  case 0x13:\n  case 0x14:\n  case 0x15:\n  case 0x16:\n  case 0x17:\n  case 0x22:\n  case 0x23:\n  case 0x24:\n  case 0x25:\n  case 0x26:\n  case 0x28:\n  case 0x33:\n  case 0x34:\n  case 0x35:\n  case 0x3b:\n  case 0x3e:\n  case 0x42:\n  case 0x43:\n  case 0x44:\n  case 0x48:\n  case 0x49:\n  case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;\n  case 0x19:\n  case 0x1a:\n  case 0x1b:\n  case 0x1c:\n  case 0x1d:\n  case 0x1e:\n  case 0x1f:\n  case 0x20:\n  case 0x29:\n  case 0x2e:\n  case 0x2f:\n  case 0x4c:\n  case 0x4e:\n  case 0x4f:\n    break;\n  }" ({ "{") (case_statement "default:\n    goto LAB_00199c14;" (default "default") (: ":") (goto_statement "goto LAB_00199c14;" (goto "goto") (statement_identifier "LAB_00199c14") (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (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 0xb:" (case "case") (number_literal "0xb") (: ":")) (case_statement "case 0x21:" (case "case") (number_literal "0x21") (: ":")) (case_statement "case 0x2b:" (case "case") (number_literal "0x2b") (: ":")) (case_statement "case 0x2d:" (case "case") (number_literal "0x2d") (: ":")) (case_statement "case 0x36:" (case "case") (number_literal "0x36") (: ":")) (case_statement "case 0x37:" (case "case") (number_literal "0x37") (: ":")) (case_statement "case 0x38:" (case "case") (number_literal "0x38") (: ":")) (case_statement "case 0x39:" (case "case") (number_literal "0x39") (: ":")) (case_statement "case 0x3a:" (case "case") (number_literal "0x3a") (: ":")) (case_statement "case 0x3c:" (case "case") (number_literal "0x3c") (: ":")) (case_statement "case 0x3d:" (case "case") (number_literal "0x3d") (: ":")) (case_statement "case 0x3f:" (case "case") (number_literal "0x3f") (: ":")) (case_statement "case 0x4b:" (case "case") (number_literal "0x4b") (: ":")) (case_statement "case 0x4d:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" (case "case") (number_literal "0x4d") (: ":") (if_statement "if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))) (case_statement "case 0x2a:" (case "case") (number_literal "0x2a") (: ":")) (case_statement "case 0x30:\n    if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;" (case "case") (number_literal "0x30") (: ":") (if_statement "if (param_4 == 0) {\n      return (undefined4 *)0x0;\n    }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 9:" (case "case") (number_literal "9") (: ":")) (case_statement "case 10:" (case "case") (number_literal "10") (: ":")) (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 0xf:" (case "case") (number_literal "0xf") (: ":")) (case_statement "case 0x10:" (case "case") (number_literal "0x10") (: ":")) (case_statement "case 0x11:" (case "case") (number_literal "0x11") (: ":")) (case_statement "case 0x12:" (case "case") (number_literal "0x12") (: ":")) (case_statement "case 0x13:" (case "case") (number_literal "0x13") (: ":")) (case_statement "case 0x14:" (case "case") (number_literal "0x14") (: ":")) (case_statement "case 0x15:" (case "case") (number_literal "0x15") (: ":")) (case_statement "case 0x16:" (case "case") (number_literal "0x16") (: ":")) (case_statement "case 0x17:" (case "case") (number_literal "0x17") (: ":")) (case_statement "case 0x22:" (case "case") (number_literal "0x22") (: ":")) (case_statement "case 0x23:" (case "case") (number_literal "0x23") (: ":")) (case_statement "case 0x24:" (case "case") (number_literal "0x24") (: ":")) (case_statement "case 0x25:" (case "case") (number_literal "0x25") (: ":")) (case_statement "case 0x26:" (case "case") (number_literal "0x26") (: ":")) (case_statement "case 0x28:" (case "case") (number_literal "0x28") (: ":")) (case_statement "case 0x33:" (case "case") (number_literal "0x33") (: ":")) (case_statement "case 0x34:" (case "case") (number_literal "0x34") (: ":")) (case_statement "case 0x35:" (case "case") (number_literal "0x35") (: ":")) (case_statement "case 0x3b:" (case "case") (number_literal "0x3b") (: ":")) (case_statement "case 0x3e:" (case "case") (number_literal "0x3e") (: ":")) (case_statement "case 0x42:" (case "case") (number_literal "0x42") (: ":")) (case_statement "case 0x43:" (case "case") (number_literal "0x43") (: ":")) (case_statement "case 0x44:" (case "case") (number_literal "0x44") (: ":")) (case_statement "case 0x48:" (case "case") (number_literal "0x48") (: ":")) (case_statement "case 0x49:" (case "case") (number_literal "0x49") (: ":")) (case_statement "case 0x4a:\n    if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }\n    break;" (case "case") (number_literal "0x4a") (: ":") (if_statement "if (param_3 == 0) {\n      return (undefined4 *)0x0;\n    }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return (undefined4 *)0x0;\n    }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x19:" (case "case") (number_literal "0x19") (: ":")) (case_statement "case 0x1a:" (case "case") (number_literal "0x1a") (: ":")) (case_statement "case 0x1b:" (case "case") (number_literal "0x1b") (: ":")) (case_statement "case 0x1c:" (case "case") (number_literal "0x1c") (: ":")) (case_statement "case 0x1d:" (case "case") (number_literal "0x1d") (: ":")) (case_statement "case 0x1e:" (case "case") (number_literal "0x1e") (: ":")) (case_statement "case 0x1f:" (case "case") (number_literal "0x1f") (: ":")) (case_statement "case 0x20:" (case "case") (number_literal "0x20") (: ":")) (case_statement "case 0x29:" (case "case") (number_literal "0x29") (: ":")) (case_statement "case 0x2e:" (case "case") (number_literal "0x2e") (: ":")) (case_statement "case 0x2f:" (case "case") (number_literal "0x2f") (: ":")) (case_statement "case 0x4c:" (case "case") (number_literal "0x4c") (: ":")) (case_statement "case 0x4e:" (case "case") (number_literal "0x4e") (: ":")) (case_statement "case 0x4f:\n    break;" (case "case") (number_literal "0x4f") (: ":") (break_statement "break;" (break "break") (; ";"))) (} "}"))) (expression_statement "iVar1 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x14)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar1 < *(int *)(param_1 + 0x18)) {\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }" (if "if") (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x18))" (( "(") (binary_expression "iVar1 < *(int *)(param_1 + 0x18)" (identifier "iVar1") (< "<") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));\n    puVar2[1] = 0;\n    *(int *)(param_1 + 0x14) = iVar1 + 1;\n    *puVar2 = param_2;\n    puVar2[3] = param_4;\n    puVar2[2] = param_3;\n    return puVar2;\n  }" ({ "{") (expression_statement "puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 * 0x10 + *(int *)(param_1 + 0x10))" (( "(") (binary_expression "iVar1 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar1 * 0x10" (identifier "iVar1") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x14) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar2[3] = param_4;" (assignment_expression "puVar2[3] = param_4" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar2[2] = param_3;" (assignment_expression "puVar2[2] = param_3" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_3")) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (labeled_statement "LAB_00199c14:\n  return (undefined4 *)0x0;" (statement_identifier "LAB_00199c14") (: ":") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (} "}"))

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

type_1 * __regparm3
d_make_comp(d_info *di,demangle_component_type type,type_1 *var_1,
           type_1 *var_2)

{
  int var_3;
  type_1 *pdVar2;
  
  switch(type) {
  default:
    goto _L12;
  case DEMANGLE_COMPONENT_QUAL_NAME:
  case DEMANGLE_COMPONENT_LOCAL_NAME:
  case DEMANGLE_COMPONENT_TYPED_NAME:
  case DEMANGLE_COMPONENT_TEMPLATE:
  case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:
  case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
  case DEMANGLE_COMPONENT_PTRMEM_TYPE:
  case DEMANGLE_COMPONENT_VECTOR_TYPE:
  case DEMANGLE_COMPONENT_UNARY:
  case DEMANGLE_COMPONENT_BINARY:
  case DEMANGLE_COMPONENT_BINARY_ARGS:
  case DEMANGLE_COMPONENT_TRINARY:
  case DEMANGLE_COMPONENT_TRINARY_ARG1:
  case DEMANGLE_COMPONENT_LITERAL:
  case DEMANGLE_COMPONENT_LITERAL_NEG:
  case DEMANGLE_COMPONENT_COMPOUND_NAME:
  case DEMANGLE_COMPONENT_TAGGED_NAME:
  case DEMANGLE_COMPONENT_CLONE:
    if (var_1 == (type_1 *)0x0) {
      return (type_1 *)0x0;
    }
  case DEMANGLE_COMPONENT_ARRAY_TYPE:
  case DEMANGLE_COMPONENT_INITIALIZER_LIST:
    if (var_2 == (type_1 *)0x0) {
      return (type_1 *)0x0;
    }
    break;
  case DEMANGLE_COMPONENT_VTABLE:
  case DEMANGLE_COMPONENT_VTT:
  case DEMANGLE_COMPONENT_TYPEINFO:
  case DEMANGLE_COMPONENT_TYPEINFO_NAME:
  case DEMANGLE_COMPONENT_TYPEINFO_FN:
  case DEMANGLE_COMPONENT_THUNK:
  case DEMANGLE_COMPONENT_VIRTUAL_THUNK:
  case DEMANGLE_COMPONENT_COVARIANT_THUNK:
  case DEMANGLE_COMPONENT_JAVA_CLASS:
  case DEMANGLE_COMPONENT_GUARD:
  case DEMANGLE_COMPONENT_TLS_INIT:
  case DEMANGLE_COMPONENT_TLS_WRAPPER:
  case DEMANGLE_COMPONENT_REFTEMP:
  case DEMANGLE_COMPONENT_HIDDEN_ALIAS:
  case DEMANGLE_COMPONENT_POINTER:
  case DEMANGLE_COMPONENT_REFERENCE:
  case DEMANGLE_COMPONENT_RVALUE_REFERENCE:
  case DEMANGLE_COMPONENT_COMPLEX:
  case DEMANGLE_COMPONENT_IMAGINARY:
  case DEMANGLE_COMPONENT_VENDOR_TYPE:
  case DEMANGLE_COMPONENT_CAST:
  case DEMANGLE_COMPONENT_CONVERSION:
  case DEMANGLE_COMPONENT_NULLARY:
  case DEMANGLE_COMPONENT_TRINARY_ARG2:
  case DEMANGLE_COMPONENT_JAVA_RESOURCE:
  case DEMANGLE_COMPONENT_DECLTYPE:
  case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:
  case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:
  case DEMANGLE_COMPONENT_TRANSACTION_CLONE:
  case DEMANGLE_COMPONENT_NONTRANSACTION_CLONE:
  case DEMANGLE_COMPONENT_PACK_EXPANSION:
    if (var_1 == (type_1 *)0x0) {
      return (type_1 *)0x0;
    }
    break;
  case DEMANGLE_COMPONENT_RESTRICT:
  case DEMANGLE_COMPONENT_VOLATILE:
  case DEMANGLE_COMPONENT_CONST:
  case DEMANGLE_COMPONENT_RESTRICT_THIS:
  case DEMANGLE_COMPONENT_VOLATILE_THIS:
  case DEMANGLE_COMPONENT_CONST_THIS:
  case DEMANGLE_COMPONENT_REFERENCE_THIS:
  case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS:
  case DEMANGLE_COMPONENT_FUNCTION_TYPE:
  case DEMANGLE_COMPONENT_ARGLIST:
  case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
  case DEMANGLE_COMPONENT_TRANSACTION_SAFE:
  case DEMANGLE_COMPONENT_NOEXCEPT:
  case DEMANGLE_COMPONENT_THROW_SPEC:
    break;
  }
  var_3 = di->next_comp;
  if (var_3 < di->num_comps) {
    pdVar2 = di->comps + var_3;
    pdVar2->d_printing = 0;
    di->next_comp = var_3 + 1;
    pdVar2->type = type;
    (pdVar2->u).s_extended_operator.name = var_2;
    (pdVar2->u).s_fixed.length = var_1;
    return pdVar2;
  }
_L12:
  return (type_1 *)0x0;
}


(translation_unit (ERROR (binary_expression left: (identifier) (ERROR (identifier)) right: (call_expression function: (identifier) arguments: (argument_list (ERROR (identifier)) (identifier) (identifier) (ERROR (identifier)) (ERROR (identifier)) (identifier) (ERROR (identifier)) (identifier))))) (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (switch_statement condition: (parenthesized_expression (identifier)) body: (compound_statement (case_statement (goto_statement label: (statement_identifier))) (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)) (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)) (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) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (case_statement value: (number_literal)) (case_statement value: (number_literal) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (break_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)) (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)) (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)) (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)) (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)) (case_statement value: (number_literal) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (break_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)) (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)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (break_statement)))) (expression_statement (assignment_expression left: (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))))))) (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement (identifier)))) (labeled_statement label: (statement_identifier) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))

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

undefined4 * __regparm3 MASKED(int param_1,undefined4 param_2,int param_3,int param_4)

{
  int iVar1;
  undefined4 *puVar2;
  
  switch(param_2) {
  default:
    goto LAB_00199c14;
  case 1:
  case 2:
  case 3:
  case 4:
  case 0xb:
  case 0x21:
  case 0x2b:
  case 0x2d:
  case 0x36:
  case 0x37:
  case 0x38:
  case 0x39:
  case 0x3a:
  case 0x3c:
  case 0x3d:
  case 0x3f:
  case 0x4b:
  case 0x4d:
    if (param_3 == 0) {
      return (undefined4 *)0x0;
    }
  case 0x2a:
  case 0x30:
    if (param_4 == 0) {
      return (undefined4 *)0x0;
    }
    break;
  case 9:
  case 10:
  case 0xc:
  case 0xd:
  case 0xe:
  case 0xf:
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
  case 0x14:
  case 0x15:
  case 0x16:
  case 0x17:
  case 0x22:
  case 0x23:
  case 0x24:
  case 0x25:
  case 0x26:
  case 0x28:
  case 0x33:
  case 0x34:
  case 0x35:
  case 0x3b:
  case 0x3e:
  case 0x42:
  case 0x43:
  case 0x44:
  case 0x48:
  case 0x49:
  case 0x4a:
    if (param_3 == 0) {
      return (undefined4 *)0x0;
    }
    break;
  case 0x19:
  case 0x1a:
  case 0x1b:
  case 0x1c:
  case 0x1d:
  case 0x1e:
  case 0x1f:
  case 0x20:
  case 0x29:
  case 0x2e:
  case 0x2f:
  case 0x4c:
  case 0x4e:
  case 0x4f:
    break;
  }
  iVar1 = *(int *)(param_1 + 0x14);
  if (iVar1 < *(int *)(param_1 + 0x18)) {
    puVar2 = (undefined4 *)(iVar1 * 0x10 + *(int *)(param_1 + 0x10));
    puVar2[1] = 0;
    *(int *)(param_1 + 0x14) = iVar1 + 1;
    *puVar2 = param_2;
    puVar2[3] = param_4;
    puVar2[2] = param_3;
    return puVar2;
  }
LAB_00199c14:
  return (undefined4 *)0x0;
}

