
/* WARNING: Enum "DT": Some values do not have unique names */
/* gold::Workqueue::Workqueue(gold::General_options const&) [clone .cold.51] */

void __thiscall gold::Workqueue::Workqueue(Workqueue *this,General_options *param_1)

{
  undefined4 in_EAX;
  int unaff_EBP;
  Lock *unaff_ESI;
  int unaff_EDI;
  int __in_chrg;
  
  __in_chrg = 0x18;
  *(undefined4 *)(unaff_EBP + -0x24) = in_EAX;
  operator_delete(*(void **)(unaff_EBP + -0x1c),0x18);
  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);
  Condvar::~Condvar(*(Condvar **)(unaff_EBP + -0x20),__in_chrg);
  if ((unaff_ESI[3].lock_ != (Lock_impl *)0x0) || (unaff_ESI[4].lock_ != (Lock_impl *)0x0)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));
  }
  if ((unaff_ESI[1].lock_ == (Lock_impl *)0x0) && (unaff_ESI[2].lock_ == (Lock_impl *)0x0)) {
    Lock::~Lock(unaff_ESI,__in_chrg);
                    /* WARNING: Subroutine does not return */
    _Unwind_Resume(*(undefined4 *)(unaff_EBP + -0x1c));
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));
}



void __regparm3 FUN_00030c6e(undefined4 param_1)

{
  undefined4 extraout_ECX;
  undefined4 extraout_EDX;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  
  *(undefined4 *)(unaff_EBP + -0x24) = param_1;
  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);
  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);
  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));
  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);
  }
  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {
    FUN_0006cc30();
                    /* WARNING: Subroutine does not return */
    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));
  }
                    /* WARNING: Subroutine does not return */
  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);
}


PUSH EBX
PUSH EBX
MOV EBX,EDI
PUSH 0x18
PUSH dword ptr [EBP + -0x1c]
MOV dword ptr [EBP + -0x24],EAX
CALL 0x001e6d90
MOV EAX,dword ptr [EBP + -0x24]
ADD ESP,0x10
SUB ESP,0xc
PUSH dword ptr [EBP + -0x20]
MOV EBX,EDI
MOV dword ptr [EBP + -0x1c],EAX
CALL 0x0006cd60
ADD ESP,0x10
CMP dword ptr [ESI + 0xc],0x0
JNZ 0x00030cc4
CMP dword ptr [ESI + 0x10],0x0
JNZ 0x00030cc4
CMP dword ptr [ESI + 0x4],0x0
JNZ 0x00030cdc
CMP dword ptr [ESI + 0x8],0x0
JNZ 0x00030cdc
SUB ESP,0xc
MOV EBX,EDI
PUSH ESI
CALL 0x0006cc30
POP EAX
PUSH dword ptr [EBP + -0x1c]
CALL 0x0027dd80
LEA EAX,[EDI + 0xfff0b7cc]
PUSH ECX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffef15bd]
PUSH 0x2c
PUSH EAX
CALL 0x00069d00
LEA EAX,[EDI + 0xfff0b7cc]
PUSH EDX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffef15bd]
PUSH 0x2c
PUSH EAX
CALL 0x00069d00
(translation_unit "void __regparm3 FUN_00030c6e(undefined4 param_1)\n\n{\n  undefined4 extraout_ECX;\n  undefined4 extraout_EDX;\n  int unaff_EBP;\n  int unaff_ESI;\n  int unaff_EDI;\n  \n  *(undefined4 *)(unaff_EBP + -0x24) = param_1;\n  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));\n  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }\n  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    /* WARNING: Subroutine does not return */\n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);\n}\n\n" (function_definition "void __regparm3 FUN_00030c6e(undefined4 param_1)\n\n{\n  undefined4 extraout_ECX;\n  undefined4 extraout_EDX;\n  int unaff_EBP;\n  int unaff_ESI;\n  int unaff_EDI;\n  \n  *(undefined4 *)(unaff_EBP + -0x24) = param_1;\n  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));\n  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }\n  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    /* WARNING: Subroutine does not return */\n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00030c6e(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  undefined4 extraout_ECX;\n  undefined4 extraout_EDX;\n  int unaff_EBP;\n  int unaff_ESI;\n  int unaff_EDI;\n  \n  *(undefined4 *)(unaff_EBP + -0x24) = param_1;\n  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));\n  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }\n  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    /* WARNING: Subroutine does not return */\n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);\n}" { (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int unaff_ESI;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "*(undefined4 *)(unaff_EBP + -0x24) = param_1;" (assignment_expression "*(undefined4 *)(unaff_EBP + -0x24) = param_1" (pointer_expression "*(undefined4 *)(unaff_EBP + -0x24)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x24)" ( (binary_expression "unaff_EBP + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);" (call_expression "FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18)" identifier (argument_list "(*(undefined4 *)(unaff_EBP + -0x1c),0x18)" ( (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);" (assignment_expression "*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24)" (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(unaff_EBP + -0x24)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x24)" ( (binary_expression "unaff_EBP + -0x24" identifier + number_literal) ))))) ;) (expression_statement "FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));" (call_expression "FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20))" identifier (argument_list "(*(undefined4 *)(unaff_EBP + -0x20))" ( (pointer_expression "*(undefined4 *)(unaff_EBP + -0x20)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x20)" ( (binary_expression "unaff_EBP + -0x20" identifier + number_literal) )))) ))) ;) (if_statement "if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }" if (parenthesized_expression "((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0))" ( (binary_expression "(*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)" (parenthesized_expression "(*(int *)(unaff_ESI + 0xc) != 0)" ( (binary_expression "*(int *)(unaff_ESI + 0xc) != 0" (pointer_expression "*(int *)(unaff_ESI + 0xc)" * (cast_expression "(int *)(unaff_ESI + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 0xc)" ( (binary_expression "unaff_ESI + 0xc" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(unaff_ESI + 0x10) != 0)" ( (binary_expression "*(int *)(unaff_ESI + 0x10) != 0" (pointer_expression "*(int *)(unaff_ESI + 0x10)" * (cast_expression "(int *)(unaff_ESI + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 0x10)" ( (binary_expression "unaff_ESI + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }" { comment (expression_statement "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);" (call_expression "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX)" identifier (argument_list "(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX)" ( (binary_expression "unaff_EDI + -0x10ea43" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + -0xf4834" identifier + number_literal) , identifier ))) ;) })) (if_statement "if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    /* WARNING: Subroutine does not return */\n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }" if (parenthesized_expression "((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0))" ( (binary_expression "(*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)" (parenthesized_expression "(*(int *)(unaff_ESI + 4) == 0)" ( (binary_expression "*(int *)(unaff_ESI + 4) == 0" (pointer_expression "*(int *)(unaff_ESI + 4)" * (cast_expression "(int *)(unaff_ESI + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 4)" ( (binary_expression "unaff_ESI + 4" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(unaff_ESI + 8) == 0)" ( (binary_expression "*(int *)(unaff_ESI + 8) == 0" (pointer_expression "*(int *)(unaff_ESI + 8)" * (cast_expression "(int *)(unaff_ESI + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 8)" ( (binary_expression "unaff_ESI + 8" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    FUN_0006cc30();\n                    /* WARNING: Subroutine does not return */\n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }" { (expression_statement "FUN_0006cc30();" (call_expression "FUN_0006cc30()" identifier (argument_list "()" ( ))) ;) comment (expression_statement "FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));" (call_expression "FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c))" identifier (argument_list "(*(undefined4 *)(unaff_EBP + -0x1c))" ( (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) ))) ;) })) comment (expression_statement "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);" (call_expression "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX)" identifier (argument_list "(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX)" ( (binary_expression "unaff_EDI + -0x10ea43" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + -0xf4834" identifier + number_literal) , identifier ))) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* gold::Workqueue::Workqueue(gold::General_options const&) [clone .cold.51] */\n\nvoid __thiscall gold::Workqueue::Workqueue(Workqueue *this,General_options *param_1)\n\n{\n  undefined4 in_EAX;\n  int unaff_EBP;\n  Lock *unaff_ESI;\n  int unaff_EDI;\n  int __in_chrg;\n  \n  __in_chrg = 0x18;\n  *(undefined4 *)(unaff_EBP + -0x24) = in_EAX;\n  operator_delete(*(void **)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  Condvar::~Condvar(*(Condvar **)(unaff_EBP + -0x20),__in_chrg);\n  if ((unaff_ESI[3].lock_ != (Lock_impl *)0x0) || (unaff_ESI[4].lock_ != (Lock_impl *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));\n  }\n  if ((unaff_ESI[1].lock_ == (Lock_impl *)0x0) && (unaff_ESI[2].lock_ == (Lock_impl *)0x0)) {\n    Lock::~Lock(unaff_ESI,__in_chrg);\n                    /* WARNING: Subroutine does not return */\n    _Unwind_Resume(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));\n}\n\n" comment comment (function_definition "void __thiscall gold::Workqueue::Workqueue(Workqueue *this,General_options *param_1)\n\n{\n  undefined4 in_EAX;\n  int unaff_EBP;\n  Lock *unaff_ESI;\n  int unaff_EDI;\n  int __in_chrg;\n  \n  __in_chrg = 0x18;\n  *(undefined4 *)(unaff_EBP + -0x24) = in_EAX;\n  operator_delete(*(void **)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  Condvar::~Condvar(*(Condvar **)(unaff_EBP + -0x20),__in_chrg);\n  if ((unaff_ESI[3].lock_ != (Lock_impl *)0x0) || (unaff_ESI[4].lock_ != (Lock_impl *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));\n  }\n  if ((unaff_ESI[1].lock_ == (Lock_impl *)0x0) && (unaff_ESI[2].lock_ == (Lock_impl *)0x0)) {\n    Lock::~Lock(unaff_ESI,__in_chrg);\n                    /* WARNING: Subroutine does not return */\n    _Unwind_Resume(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Workqueue::" identifier : : identifier : :) (function_declarator "Workqueue(Workqueue *this,General_options *param_1)" identifier (parameter_list "(Workqueue *this,General_options *param_1)" ( (parameter_declaration "Workqueue *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "General_options *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined4 in_EAX;\n  int unaff_EBP;\n  Lock *unaff_ESI;\n  int unaff_EDI;\n  int __in_chrg;\n  \n  __in_chrg = 0x18;\n  *(undefined4 *)(unaff_EBP + -0x24) = in_EAX;\n  operator_delete(*(void **)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  Condvar::~Condvar(*(Condvar **)(unaff_EBP + -0x20),__in_chrg);\n  if ((unaff_ESI[3].lock_ != (Lock_impl *)0x0) || (unaff_ESI[4].lock_ != (Lock_impl *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));\n  }\n  if ((unaff_ESI[1].lock_ == (Lock_impl *)0x0) && (unaff_ESI[2].lock_ == (Lock_impl *)0x0)) {\n    Lock::~Lock(unaff_ESI,__in_chrg);\n                    /* WARNING: Subroutine does not return */\n    _Unwind_Resume(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));\n}" { (declaration "undefined4 in_EAX;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "Lock *unaff_ESI;" type_identifier (pointer_declarator "*unaff_ESI" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int __in_chrg;" primitive_type identifier ;) (expression_statement "__in_chrg = 0x18;" (assignment_expression "__in_chrg = 0x18" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(unaff_EBP + -0x24) = in_EAX;" (assignment_expression "*(undefined4 *)(unaff_EBP + -0x24) = in_EAX" (pointer_expression "*(undefined4 *)(unaff_EBP + -0x24)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x24)" ( (binary_expression "unaff_EBP + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "operator_delete(*(void **)(unaff_EBP + -0x1c),0x18);" (call_expression "operator_delete(*(void **)(unaff_EBP + -0x1c),0x18)" identifier (argument_list "(*(void **)(unaff_EBP + -0x1c),0x18)" ( (pointer_expression "*(void **)(unaff_EBP + -0x1c)" * (cast_expression "(void **)(unaff_EBP + -0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);" (assignment_expression "*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24)" (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(unaff_EBP + -0x24)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x24)" ( (binary_expression "unaff_EBP + -0x24" identifier + number_literal) ))))) ;) (labeled_statement "Condvar::~Condvar(*(Condvar **)(unaff_EBP + -0x20),__in_chrg);" statement_identifier : (ERROR ":" :) (expression_statement "~Condvar(*(Condvar **)(unaff_EBP + -0x20),__in_chrg);" (unary_expression "~Condvar(*(Condvar **)(unaff_EBP + -0x20),__in_chrg)" ~ (call_expression "Condvar(*(Condvar **)(unaff_EBP + -0x20),__in_chrg)" identifier (argument_list "(*(Condvar **)(unaff_EBP + -0x20),__in_chrg)" ( (pointer_expression "*(Condvar **)(unaff_EBP + -0x20)" * (cast_expression "(Condvar **)(unaff_EBP + -0x20)" ( (type_descriptor "Condvar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBP + -0x20)" ( (binary_expression "unaff_EBP + -0x20" identifier + number_literal) )))) , identifier )))) ;)) (if_statement "if ((unaff_ESI[3].lock_ != (Lock_impl *)0x0) || (unaff_ESI[4].lock_ != (Lock_impl *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));\n  }" if (parenthesized_expression "((unaff_ESI[3].lock_ != (Lock_impl *)0x0) || (unaff_ESI[4].lock_ != (Lock_impl *)0x0))" ( (binary_expression "(unaff_ESI[3].lock_ != (Lock_impl *)0x0) || (unaff_ESI[4].lock_ != (Lock_impl *)0x0)" (parenthesized_expression "(unaff_ESI[3].lock_ != (Lock_impl *)0x0)" ( (binary_expression "unaff_ESI[3].lock_ != (Lock_impl *)0x0" (field_expression "unaff_ESI[3].lock_" (subscript_expression "unaff_ESI[3]" identifier [ number_literal ]) . field_identifier) != (cast_expression "(Lock_impl *)0x0" ( (type_descriptor "Lock_impl *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(unaff_ESI[4].lock_ != (Lock_impl *)0x0)" ( (binary_expression "unaff_ESI[4].lock_ != (Lock_impl *)0x0" (field_expression "unaff_ESI[4].lock_" (subscript_expression "unaff_ESI[4]" identifier [ number_literal ]) . field_identifier) != (cast_expression "(Lock_impl *)0x0" ( (type_descriptor "Lock_impl *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834))" identifier (argument_list "((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834))" ( (cast_expression "(char *)(unaff_EDI + -0x10ea43)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x10ea43)" ( (binary_expression "unaff_EDI + -0x10ea43" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + -0xf4834)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0xf4834)" ( (binary_expression "unaff_EDI + -0xf4834" identifier + number_literal) ))) ))) ;) })) (if_statement "if ((unaff_ESI[1].lock_ == (Lock_impl *)0x0) && (unaff_ESI[2].lock_ == (Lock_impl *)0x0)) {\n    Lock::~Lock(unaff_ESI,__in_chrg);\n                    /* WARNING: Subroutine does not return */\n    _Unwind_Resume(*(undefined4 *)(unaff_EBP + -0x1c));\n  }" if (parenthesized_expression "((unaff_ESI[1].lock_ == (Lock_impl *)0x0) && (unaff_ESI[2].lock_ == (Lock_impl *)0x0))" ( (binary_expression "(unaff_ESI[1].lock_ == (Lock_impl *)0x0) && (unaff_ESI[2].lock_ == (Lock_impl *)0x0)" (parenthesized_expression "(unaff_ESI[1].lock_ == (Lock_impl *)0x0)" ( (binary_expression "unaff_ESI[1].lock_ == (Lock_impl *)0x0" (field_expression "unaff_ESI[1].lock_" (subscript_expression "unaff_ESI[1]" identifier [ number_literal ]) . field_identifier) == (cast_expression "(Lock_impl *)0x0" ( (type_descriptor "Lock_impl *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(unaff_ESI[2].lock_ == (Lock_impl *)0x0)" ( (binary_expression "unaff_ESI[2].lock_ == (Lock_impl *)0x0" (field_expression "unaff_ESI[2].lock_" (subscript_expression "unaff_ESI[2]" identifier [ number_literal ]) . field_identifier) == (cast_expression "(Lock_impl *)0x0" ( (type_descriptor "Lock_impl *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    Lock::~Lock(unaff_ESI,__in_chrg);\n                    /* WARNING: Subroutine does not return */\n    _Unwind_Resume(*(undefined4 *)(unaff_EBP + -0x1c));\n  }" { (labeled_statement "Lock::~Lock(unaff_ESI,__in_chrg);" statement_identifier : (ERROR ":" :) (expression_statement "~Lock(unaff_ESI,__in_chrg);" (unary_expression "~Lock(unaff_ESI,__in_chrg)" ~ (call_expression "Lock(unaff_ESI,__in_chrg)" identifier (argument_list "(unaff_ESI,__in_chrg)" ( identifier , identifier )))) ;)) comment (expression_statement "_Unwind_Resume(*(undefined4 *)(unaff_EBP + -0x1c));" (call_expression "_Unwind_Resume(*(undefined4 *)(unaff_EBP + -0x1c))" identifier (argument_list "(*(undefined4 *)(unaff_EBP + -0x1c))" ( (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) ))) ;) })) comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834))" identifier (argument_list "((char *)(unaff_EDI + -0x10ea43),0x2c,(char *)(unaff_EDI + -0xf4834))" ( (cast_expression "(char *)(unaff_EDI + -0x10ea43)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x10ea43)" ( (binary_expression "unaff_EDI + -0x10ea43" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + -0xf4834)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0xf4834)" ( (binary_expression "unaff_EDI + -0xf4834" identifier + number_literal) ))) ))) ;) })))
(translation_unit "void __regparm3 FUN_00030c6e(undefined4 param_1)\n\n{\n  undefined4 extraout_ECX;\n  undefined4 extraout_EDX;\n  int unaff_EBP;\n  int unaff_ESI;\n  int unaff_EDI;\n  \n  *(undefined4 *)(unaff_EBP + -0x24) = param_1;\n  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));\n  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }\n  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    \n  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);\n}\n\n" (function_definition "void __regparm3 FUN_00030c6e(undefined4 param_1)\n\n{\n  undefined4 extraout_ECX;\n  undefined4 extraout_EDX;\n  int unaff_EBP;\n  int unaff_ESI;\n  int unaff_EDI;\n  \n  *(undefined4 *)(unaff_EBP + -0x24) = param_1;\n  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));\n  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }\n  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    \n  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00030c6e(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  undefined4 extraout_ECX;\n  undefined4 extraout_EDX;\n  int unaff_EBP;\n  int unaff_ESI;\n  int unaff_EDI;\n  \n  *(undefined4 *)(unaff_EBP + -0x24) = param_1;\n  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));\n  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }\n  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    \n  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);\n}" { (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int unaff_ESI;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "*(undefined4 *)(unaff_EBP + -0x24) = param_1;" (assignment_expression "*(undefined4 *)(unaff_EBP + -0x24) = param_1" (pointer_expression "*(undefined4 *)(unaff_EBP + -0x24)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x24)" ( (binary_expression "unaff_EBP + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);" (call_expression "FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18)" identifier (argument_list "(*(undefined4 *)(unaff_EBP + -0x1c),0x18)" ( (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);" (assignment_expression "*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24)" (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(unaff_EBP + -0x24)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x24)" ( (binary_expression "unaff_EBP + -0x24" identifier + number_literal) ))))) ;) (expression_statement "FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));" (call_expression "FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20))" identifier (argument_list "(*(undefined4 *)(unaff_EBP + -0x20))" ( (pointer_expression "*(undefined4 *)(unaff_EBP + -0x20)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x20)" ( (binary_expression "unaff_EBP + -0x20" identifier + number_literal) )))) ))) ;) (if_statement "if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }" if (parenthesized_expression "((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0))" ( (binary_expression "(*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)" (parenthesized_expression "(*(int *)(unaff_ESI + 0xc) != 0)" ( (binary_expression "*(int *)(unaff_ESI + 0xc) != 0" (pointer_expression "*(int *)(unaff_ESI + 0xc)" * (cast_expression "(int *)(unaff_ESI + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 0xc)" ( (binary_expression "unaff_ESI + 0xc" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(unaff_ESI + 0x10) != 0)" ( (binary_expression "*(int *)(unaff_ESI + 0x10) != 0" (pointer_expression "*(int *)(unaff_ESI + 0x10)" * (cast_expression "(int *)(unaff_ESI + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 0x10)" ( (binary_expression "unaff_ESI + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }" { (expression_statement "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);" (call_expression "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX)" identifier (argument_list "(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX)" ( (binary_expression "unaff_EDI + -0x10ea43" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + -0xf4834" identifier + number_literal) , identifier ))) ;) })) (if_statement "if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }" if (parenthesized_expression "((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0))" ( (binary_expression "(*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)" (parenthesized_expression "(*(int *)(unaff_ESI + 4) == 0)" ( (binary_expression "*(int *)(unaff_ESI + 4) == 0" (pointer_expression "*(int *)(unaff_ESI + 4)" * (cast_expression "(int *)(unaff_ESI + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 4)" ( (binary_expression "unaff_ESI + 4" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(unaff_ESI + 8) == 0)" ( (binary_expression "*(int *)(unaff_ESI + 8) == 0" (pointer_expression "*(int *)(unaff_ESI + 8)" * (cast_expression "(int *)(unaff_ESI + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 8)" ( (binary_expression "unaff_ESI + 8" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }" { (expression_statement "FUN_0006cc30();" (call_expression "FUN_0006cc30()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));" (call_expression "FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c))" identifier (argument_list "(*(undefined4 *)(unaff_EBP + -0x1c))" ( (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" * (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x1c)" ( (binary_expression "unaff_EBP + -0x1c" identifier + number_literal) )))) ))) ;) })) (expression_statement "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);" (call_expression "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX)" identifier (argument_list "(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX)" ( (binary_expression "unaff_EDI + -0x10ea43" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + -0xf4834" identifier + number_literal) , identifier ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })))
(function_definition "void __regparm3 FUN_00030c6e(undefined4 param_1)\n\n{\n  undefined4 extraout_ECX;\n  undefined4 extraout_EDX;\n  int unaff_EBP;\n  int unaff_ESI;\n  int unaff_EDI;\n  \n  *(undefined4 *)(unaff_EBP + -0x24) = param_1;\n  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));\n  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }\n  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    \n  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00030c6e(undefined4 param_1)" (identifier "FUN_00030c6e") (parameter_list "(undefined4 param_1)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined4 extraout_ECX;\n  undefined4 extraout_EDX;\n  int unaff_EBP;\n  int unaff_ESI;\n  int unaff_EDI;\n  \n  *(undefined4 *)(unaff_EBP + -0x24) = param_1;\n  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);\n  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);\n  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));\n  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }\n  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }\n                    \n  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);\n}" ({ "{") (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "undefined4 extraout_EDX;" (type_identifier "undefined4") (identifier "extraout_EDX") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "int unaff_ESI;" (primitive_type "int") (identifier "unaff_ESI") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (expression_statement "*(undefined4 *)(unaff_EBP + -0x24) = param_1;" (assignment_expression "*(undefined4 *)(unaff_EBP + -0x24) = param_1" (pointer_expression "*(undefined4 *)(unaff_EBP + -0x24)" (* "*") (cast_expression "(undefined4 *)(unaff_EBP + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + -0x24)" (( "(") (binary_expression "unaff_EBP + -0x24" (identifier "unaff_EBP") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);" (call_expression "FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18)" (identifier "FUN_001e6d90") (argument_list "(*(undefined4 *)(unaff_EBP + -0x1c),0x18)" (( "(") (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" (* "*") (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + -0x1c)" (( "(") (binary_expression "unaff_EBP + -0x1c" (identifier "unaff_EBP") (+ "+") (number_literal "-0x1c")) () ")")))) (, ",") (number_literal "0x18") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);" (assignment_expression "*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24)" (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" (* "*") (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + -0x1c)" (( "(") (binary_expression "unaff_EBP + -0x1c" (identifier "unaff_EBP") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(unaff_EBP + -0x24)" (* "*") (cast_expression "(undefined4 *)(unaff_EBP + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + -0x24)" (( "(") (binary_expression "unaff_EBP + -0x24" (identifier "unaff_EBP") (+ "+") (number_literal "-0x24")) () ")"))))) (; ";")) (expression_statement "FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));" (call_expression "FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20))" (identifier "FUN_0006cd60") (argument_list "(*(undefined4 *)(unaff_EBP + -0x20))" (( "(") (pointer_expression "*(undefined4 *)(unaff_EBP + -0x20)" (* "*") (cast_expression "(undefined4 *)(unaff_EBP + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + -0x20)" (( "(") (binary_expression "unaff_EBP + -0x20" (identifier "unaff_EBP") (+ "+") (number_literal "-0x20")) () ")")))) () ")"))) (; ";")) (if_statement "if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }" (if "if") (parenthesized_expression "((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0))" (( "(") (binary_expression "(*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)" (parenthesized_expression "(*(int *)(unaff_ESI + 0xc) != 0)" (( "(") (binary_expression "*(int *)(unaff_ESI + 0xc) != 0" (pointer_expression "*(int *)(unaff_ESI + 0xc)" (* "*") (cast_expression "(int *)(unaff_ESI + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_ESI + 0xc)" (( "(") (binary_expression "unaff_ESI + 0xc" (identifier "unaff_ESI") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(unaff_ESI + 0x10) != 0)" (( "(") (binary_expression "*(int *)(unaff_ESI + 0x10) != 0" (pointer_expression "*(int *)(unaff_ESI + 0x10)" (* "*") (cast_expression "(int *)(unaff_ESI + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_ESI + 0x10)" (( "(") (binary_expression "unaff_ESI + 0x10" (identifier "unaff_ESI") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);\n  }" ({ "{") (expression_statement "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);" (call_expression "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX)" (identifier "FUN_00069d00") (argument_list "(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX)" (( "(") (binary_expression "unaff_EDI + -0x10ea43" (identifier "unaff_EDI") (+ "+") (number_literal "-0x10ea43")) (, ",") (number_literal "0x2c") (, ",") (binary_expression "unaff_EDI + -0xf4834" (identifier "unaff_EDI") (+ "+") (number_literal "-0xf4834")) (, ",") (identifier "extraout_ECX") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }" (if "if") (parenthesized_expression "((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0))" (( "(") (binary_expression "(*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)" (parenthesized_expression "(*(int *)(unaff_ESI + 4) == 0)" (( "(") (binary_expression "*(int *)(unaff_ESI + 4) == 0" (pointer_expression "*(int *)(unaff_ESI + 4)" (* "*") (cast_expression "(int *)(unaff_ESI + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_ESI + 4)" (( "(") (binary_expression "unaff_ESI + 4" (identifier "unaff_ESI") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(unaff_ESI + 8) == 0)" (( "(") (binary_expression "*(int *)(unaff_ESI + 8) == 0" (pointer_expression "*(int *)(unaff_ESI + 8)" (* "*") (cast_expression "(int *)(unaff_ESI + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_ESI + 8)" (( "(") (binary_expression "unaff_ESI + 8" (identifier "unaff_ESI") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    FUN_0006cc30();\n                    \n    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));\n  }" ({ "{") (expression_statement "FUN_0006cc30();" (call_expression "FUN_0006cc30()" (identifier "FUN_0006cc30") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));" (call_expression "FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c))" (identifier "FUN_0027dd80") (argument_list "(*(undefined4 *)(unaff_EBP + -0x1c))" (( "(") (pointer_expression "*(undefined4 *)(unaff_EBP + -0x1c)" (* "*") (cast_expression "(undefined4 *)(unaff_EBP + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + -0x1c)" (( "(") (binary_expression "unaff_EBP + -0x1c" (identifier "unaff_EBP") (+ "+") (number_literal "-0x1c")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);" (call_expression "FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX)" (identifier "FUN_00069d00") (argument_list "(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX)" (( "(") (binary_expression "unaff_EDI + -0x10ea43" (identifier "unaff_EDI") (+ "+") (number_literal "-0x10ea43")) (, ",") (number_literal "0x2c") (, ",") (binary_expression "unaff_EDI + -0xf4834" (identifier "unaff_EDI") (+ "+") (number_literal "-0xf4834")) (, ",") (identifier "extraout_EDX") () ")"))) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* gold::Workqueue::Workqueue(gold::General_options const&) [clone .cold.51] */

void __thiscall gold::function_1::function_1(function_1 *this,type_1 *param_1)

{
  type_2 in_EAX;
  int var_1;
  type_3 *unaff_ESI;
  int var_5;
  int __in_chrg;
  
  __in_chrg = 0x18;
  *(type_2 *)(var_1 + -0x24) = in_EAX;
  var_2(*(void **)(var_1 + -0x1c),0x18);
  *(type_2 *)(var_1 + -0x1c) = *(type_2 *)(var_1 + -0x24);
  Condvar::~var_3(*(var_3 **)(var_1 + -0x20),__in_chrg);
  if ((unaff_ESI[3].lock_ != (type_4 *)0x0) || (unaff_ESI[4].lock_ != (type_4 *)0x0)) {
                    /* WARNING: Subroutine does not return */
    var_4((char *)(var_5 + -0x10ea43),0x2c,(char *)(var_5 + -0xf4834));
  }
  if ((unaff_ESI[1].lock_ == (type_4 *)0x0) && (unaff_ESI[2].lock_ == (type_4 *)0x0)) {
    Lock::~type_3(unaff_ESI,__in_chrg);
                    /* WARNING: Subroutine does not return */
    var_6(*(type_2 *)(var_1 + -0x1c));
  }
                    /* WARNING: Subroutine does not return */
  var_4((char *)(var_5 + -0x10ea43),0x2c,(char *)(var_5 + -0xf4834));
}


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

void __regparm3 MASKED(undefined4 param_1)

{
  undefined4 extraout_ECX;
  undefined4 extraout_EDX;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  
  *(undefined4 *)(unaff_EBP + -0x24) = param_1;
  FUN_001e6d90(*(undefined4 *)(unaff_EBP + -0x1c),0x18);
  *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -0x24);
  FUN_0006cd60(*(undefined4 *)(unaff_EBP + -0x20));
  if ((*(int *)(unaff_ESI + 0xc) != 0) || (*(int *)(unaff_ESI + 0x10) != 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_ECX);
  }
  if ((*(int *)(unaff_ESI + 4) == 0) && (*(int *)(unaff_ESI + 8) == 0)) {
    FUN_0006cc30();
                    /* WARNING: Subroutine does not return */
    FUN_0027dd80(*(undefined4 *)(unaff_EBP + -0x1c));
  }
                    /* WARNING: Subroutine does not return */
  FUN_00069d00(unaff_EDI + -0x10ea43,0x2c,unaff_EDI + -0xf4834,extraout_EDX);
}

