
/* std::__facet_shims::(anonymous
   namespace)::money_get_shim<wchar_t>::do_get(std::istreambuf_iterator<wchar_t,
   std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool,
   std::ios_base&, std::_Ios_Iostate&, std::wstring&) const */

undefined1  [16]
std::__facet_shims::(anonymous_namespace)::money_get_shim<wchar_t>::do_get
          (long param_1,undefined8 param_2,ulong param_3)

{
  int *piVar1;
  int iVar2;
  undefined1 auVar3 [16];
  int *in_stack_00000010;
  wstring *in_stack_00000018;
  allocator local_75;
  int local_74;
  long local_70;
  wchar_t *local_68;
  ulong local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
  local_74 = 0;
                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */
  auVar3 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));
  if (local_74 == 0) {
    if (local_48 == (code *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */
      __throw_logic_error("uninitialized __any_string");
    }
                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */
    std::wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);
                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */
    std::wstring::swap(in_stack_00000018,(wstring *)&local_70);
    if ((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8) {
      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {
        iVar2 = *(int *)(local_70 + -8);
        *(int *)(local_70 + -8) = iVar2 + -1;
      }
      else {
        LOCK();
        piVar1 = (int *)(local_70 + -8);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
      }
      if (iVar2 < 1) {
        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));
      }
    }
  }
  else {
    *in_stack_00000010 = local_74;
  }
  if (local_48 != (code *)0x0) {
    (*local_48)(&local_68);
  }
  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;
  return auVar3;
}



undefined1  [16] FUN_002dd700(long param_1,undefined8 param_2,ulong param_3)

{
  int *piVar1;
  int iVar2;
  undefined1 auVar3 [16];
  int *in_stack_00000010;
  undefined8 in_stack_00000018;
  undefined1 local_75;
  int local_74;
  long local_70;
  undefined8 local_68;
  undefined8 local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
  local_74 = 0;
                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */
  auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));
  if (local_74 == 0) {
    if (local_48 == (code *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */
      FUN_002e11f0("uninitialized __any_string");
    }
                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */
    FUN_0031f260(&local_70,local_68,local_60,&local_75);
                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */
    FUN_0031ccc0(in_stack_00000018,&local_70);
    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {
      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {
        iVar2 = *(int *)(local_70 + -8);
        *(int *)(local_70 + -8) = iVar2 + -1;
      }
      else {
        LOCK();
        piVar1 = (int *)(local_70 + -8);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
      }
      if (iVar2 < 1) {
        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);
      }
    }
  }
  else {
    *in_stack_00000010 = local_74;
  }
  if (local_48 != (code *)0x0) {
    (*local_48)(&local_68);
  }
  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;
  return auVar3;
}


PUSH RBP
MOVZX R9D,R9B
MOV RBP,RSP
PUSH R15
PUSH R14
LEA RAX,[RBP + -0x6c]
PUSH R13
PUSH R12
LEA R12,[RBP + -0x60]
PUSH RBX
MOV RBX,RDX
SUB RSP,0x58
MOV RDI,qword ptr [RDI + 0x10]
MOV qword ptr [RBP + -0x40],0x0
PUSH R12
PUSH 0x0
PUSH RAX
PUSH qword ptr [RBP + 0x10]
MOV dword ptr [RBP + -0x6c],0x0
CALL 0x002daa50
MOV qword ptr [RBP + -0x78],RDX
MOV R15,RAX
ADD RSP,0x20
MOV RDX,-0x100000000
AND RBX,RDX
MOV qword ptr [RBP + -0x80],RAX
MOV EDX,dword ptr [RBP + -0x6c]
MOV EAX,dword ptr [RBP + -0x78]
OR RBX,RAX
MOV RAX,qword ptr [RBP + -0x40]
TEST EDX,EDX
JZ 0x002dd798
MOV RCX,qword ptr [RBP + 0x18]
MOV dword ptr [RCX],EDX
TEST RAX,RAX
JZ 0x002dd77d
MOV RDI,R12
CALL RAX
LEA RSP,[RBP + -0x28]
MOV RAX,R15
MOV RDX,RBX
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
TEST RAX,RAX
JZ 0x002dd813
LEA R14,[RBP + -0x6d]
LEA R13,[RBP + -0x68]
MOV RDX,qword ptr [RBP + -0x58]
MOV RSI,qword ptr [RBP + -0x60]
MOV RCX,R14
MOV RDI,R13
CALL 0x0031f260
MOV RDI,qword ptr [RBP + 0x20]
MOV RSI,R13
CALL 0x0031ccc0
MOV RAX,qword ptr [RBP + -0x68]
LEA RDI,[RAX + -0x18]
CMP RDI,qword ptr [0x003f7cd8]
JNZ 0x002dd7e0
MOV RAX,qword ptr [RBP + -0x40]
JMP 0x002dd773
CMP qword ptr [0x003f7ee8],0x0
JZ 0x002dd808
MOV EDX,0xffffffff
XADD.LOCK dword ptr [RAX + -0x8],EDX
TEST EDX,EDX
JG 0x002dd7d5
MOV RSI,R14
CALL 0x0031d930
JMP 0x002dd7d5
MOV EDX,dword ptr [RAX + -0x8]
LEA ECX,[RDX + -0x1]
MOV dword ptr [RAX + -0x8],ECX
JMP 0x002dd7f4
LEA RDI,[0x35bea4]
CALL 0x002e11f0
(translation_unit "undefined1  [16] FUN_002dd700(long param_1,undefined8 param_2,ulong param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined1 local_75;\n  int local_74;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */\n  auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_002dd700(long param_1,undefined8 param_2,ulong param_3)" identifier ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) (ERROR ",undefined8 param_2,ulong param_3" , identifier identifier , identifier identifier) )) ; (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined1 local_75;\n  int local_74;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */\n  auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 auVar3 [16];" type_identifier (array_declarator "auVar3 [16]" identifier [ number_literal ]) ;) (declaration "int *in_stack_00000010;" primitive_type (pointer_declarator "*in_stack_00000010" * identifier) ;) (declaration "undefined8 in_stack_00000018;" type_identifier identifier ;) (declaration "undefined1 local_75;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_48 = (code *)0x0;" (assignment_expression "local_48 = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) comment (expression_statement "auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));" (assignment_expression "auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10))" identifier = (call_expression "FUN_002daa50(*(undefined8 *)(param_1 + 0x10))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) )))) ;) (if_statement "if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }" if (parenthesized_expression "(local_74 == 0)" ( (binary_expression "local_74 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }" { (if_statement "if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      FUN_002e11f0("uninitialized __any_string");\n    }" if (parenthesized_expression "(local_48 == (code *)0x0)" ( (binary_expression "local_48 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      FUN_002e11f0("uninitialized __any_string");\n    }" { comment comment (expression_statement "FUN_002e11f0("uninitialized __any_string");" (call_expression "FUN_002e11f0("uninitialized __any_string")" identifier (argument_list "("uninitialized __any_string")" ( (string_literal ""uninitialized __any_string"" " string_content ") ))) ;) })) comment (expression_statement "FUN_0031f260(&local_70,local_68,local_60,&local_75);" (call_expression "FUN_0031f260(&local_70,local_68,local_60,&local_75)" identifier (argument_list "(&local_70,local_68,local_60,&local_75)" ( (pointer_expression "&local_70" & identifier) , identifier , identifier , (pointer_expression "&local_75" & identifier) ))) ;) comment (expression_statement "FUN_0031ccc0(in_stack_00000018,&local_70);" (call_expression "FUN_0031ccc0(in_stack_00000018,&local_70)" identifier (argument_list "(in_stack_00000018,&local_70)" ( identifier , (pointer_expression "&local_70" & identifier) ))) ;) (if_statement "if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }" if (parenthesized_expression "((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8)" ( (binary_expression "(undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8" (cast_expression "(undefined *)(local_70 + -0x18)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -0x18)" ( (binary_expression "local_70 + -0x18" identifier + number_literal) ))) != identifier) )) (compound_statement "{\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }" { (if_statement "if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_003f7ee8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003f7ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }" { (expression_statement "iVar2 = *(int *)(local_70 + -8);" (assignment_expression "iVar2 = *(int *)(local_70 + -8)" identifier = (pointer_expression "*(int *)(local_70 + -8)" * (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_70 + -8) = iVar2 + -1;" (assignment_expression "*(int *)(local_70 + -8) = iVar2 + -1" (pointer_expression "*(int *)(local_70 + -8)" * (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) )))) = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1 = (int *)(local_70 + -8);" (assignment_expression "piVar1 = (int *)(local_70 + -8)" identifier = (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar2 = *piVar1;" (assignment_expression "iVar2 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }" { (expression_statement "thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);" (call_expression "thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75)" identifier (argument_list "((undefined *)(local_70 + -0x18),&local_75)" ( (cast_expression "(undefined *)(local_70 + -0x18)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -0x18)" ( (binary_expression "local_70 + -0x18" identifier + number_literal) ))) , (pointer_expression "&local_75" & identifier) ))) ;) })) })) }) (else_clause "else {\n    *in_stack_00000010 = local_74;\n  }" else (compound_statement "{\n    *in_stack_00000010 = local_74;\n  }" { (expression_statement "*in_stack_00000010 = local_74;" (assignment_expression "*in_stack_00000010 = local_74" (pointer_expression "*in_stack_00000010" * identifier) = identifier) ;) }))) (if_statement "if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*local_48)(&local_68);\n  }" { (expression_statement "(*local_48)(&local_68);" (call_expression "(*local_48)(&local_68)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(&local_68)" ( (pointer_expression "&local_68" & identifier) ))) ;) })) (expression_statement "auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;" (assignment_expression "auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff" (field_expression "auVar3._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "auVar3._8_8_ & 0xffffffff" (field_expression "auVar3._8_8_" identifier . field_identifier) & number_literal))) ;) (return_statement "return auVar3;" return identifier ;) }))
(translation_unit "/* std::__facet_shims::(anonymous\n   namespace)::money_get_shim<wchar_t>::do_get(std::istreambuf_iterator<wchar_t,\n   std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool,\n   std::ios_base&, std::_Ios_Iostate&, std::wstring&) const */\n\nundefined1  [16]\nstd::__facet_shims::(anonymous_namespace)::money_get_shim<wchar_t>::do_get\n          (long param_1,undefined8 param_2,ulong param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  wstring *in_stack_00000018;\n  allocator local_75;\n  int local_74;\n  long local_70;\n  wchar_t *local_68;\n  ulong local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */\n  auVar3 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      __throw_logic_error("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    std::wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    std::wstring::swap(in_stack_00000018,(wstring *)&local_70);\n    if ((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}\n\n" comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (labeled_statement "std::__facet_shims::(anonymous_namespace)::money_get_shim<wchar_t>::do_get\n          (long param_1,undefined8 param_2,ulong param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  wstring *in_stack_00000018;\n  allocator local_75;\n  int local_74;\n  long local_70;\n  wchar_t *local_68;\n  ulong local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */\n  auVar3 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      __throw_logic_error("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    std::wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    std::wstring::swap(in_stack_00000018,(wstring *)&local_70);\n    if ((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}" statement_identifier : (ERROR ":" :) (labeled_statement "__facet_shims::(anonymous_namespace)::money_get_shim<wchar_t>::do_get\n          (long param_1,undefined8 param_2,ulong param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  wstring *in_stack_00000018;\n  allocator local_75;\n  int local_74;\n  long local_70;\n  wchar_t *local_68;\n  ulong local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */\n  auVar3 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      __throw_logic_error("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    std::wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    std::wstring::swap(in_stack_00000018,(wstring *)&local_70);\n    if ((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}" statement_identifier (ERROR "::(anonymous_namespace)::money_get_shim<wchar_t>:" : : (parenthesized_expression "(anonymous_namespace)" ( identifier )) : : (binary_expression "money_get_shim<wchar_t" identifier < identifier) > :) : (ERROR "do_get\n          (long param_1,undefined8 param_2,ulong param_3)" (macro_type_specifier "do_get\n          (long param_1,undefined8 param_2,ulong param_3)" identifier ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) (ERROR ",undefined8 param_2,ulong param_3" , identifier identifier , identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  wstring *in_stack_00000018;\n  allocator local_75;\n  int local_74;\n  long local_70;\n  wchar_t *local_68;\n  ulong local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */\n  auVar3 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      __throw_logic_error("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    std::wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    std::wstring::swap(in_stack_00000018,(wstring *)&local_70);\n    if ((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 auVar3 [16];" type_identifier (array_declarator "auVar3 [16]" identifier [ number_literal ]) ;) (declaration "int *in_stack_00000010;" primitive_type (pointer_declarator "*in_stack_00000010" * identifier) ;) (declaration "wstring *in_stack_00000018;" type_identifier (pointer_declarator "*in_stack_00000018" * identifier) ;) (declaration "allocator local_75;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "wchar_t *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_48 = (code *)0x0;" (assignment_expression "local_48 = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) comment (expression_statement "auVar3 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));" (assignment_expression "auVar3 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10))" identifier = (binary_expression "__money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10))" (binary_expression "__money_get<wchar_t" identifier < identifier) > (parenthesized_expression "(*(__facet_shims **)(param_1 + 0x10))" ( (pointer_expression "*(__facet_shims **)(param_1 + 0x10)" * (cast_expression "(__facet_shims **)(param_1 + 0x10)" ( (type_descriptor "__facet_shims **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) )))) ;) (if_statement "if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      __throw_logic_error("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    std::wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    std::wstring::swap(in_stack_00000018,(wstring *)&local_70);\n    if ((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }" if (parenthesized_expression "(local_74 == 0)" ( (binary_expression "local_74 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      __throw_logic_error("uninitialized __any_string");\n    }\n                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */\n    std::wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);\n                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */\n    std::wstring::swap(in_stack_00000018,(wstring *)&local_70);\n    if ((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }\n    }\n  }" { (if_statement "if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      __throw_logic_error("uninitialized __any_string");\n    }" if (parenthesized_expression "(local_48 == (code *)0x0)" ( (binary_expression "local_48 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */\n      __throw_logic_error("uninitialized __any_string");\n    }" { comment comment (expression_statement "__throw_logic_error("uninitialized __any_string");" (call_expression "__throw_logic_error("uninitialized __any_string")" identifier (argument_list "("uninitialized __any_string")" ( (string_literal ""uninitialized __any_string"" " string_content ") ))) ;) })) comment (labeled_statement "std::wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::wstring((wstring *)&local_70,local_68,local_60,&local_75);" statement_identifier : (ERROR ":" :) (expression_statement "wstring((wstring *)&local_70,local_68,local_60,&local_75);" (call_expression "wstring((wstring *)&local_70,local_68,local_60,&local_75)" identifier (argument_list "((wstring *)&local_70,local_68,local_60,&local_75)" ( (cast_expression "(wstring *)&local_70" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_70" & identifier)) , identifier , identifier , (pointer_expression "&local_75" & identifier) ))) ;))) comment (labeled_statement "std::wstring::swap(in_stack_00000018,(wstring *)&local_70);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::swap(in_stack_00000018,(wstring *)&local_70);" statement_identifier : (ERROR ":" :) (expression_statement "swap(in_stack_00000018,(wstring *)&local_70);" (call_expression "swap(in_stack_00000018,(wstring *)&local_70)" identifier (argument_list "(in_stack_00000018,(wstring *)&local_70)" ( identifier , (cast_expression "(wstring *)&local_70" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_70" & identifier)) ))) ;))) (if_statement "if ((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }\n    }" if (parenthesized_expression "((allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8)" ( (binary_expression "(allocator *)(local_70 + -0x18) != (allocator *)PTR__S_empty_rep_storage_003f7cd8" (cast_expression "(allocator *)(local_70 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -0x18)" ( (binary_expression "local_70 + -0x18" identifier + number_literal) ))) != (cast_expression "(allocator *)PTR__S_empty_rep_storage_003f7cd8" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }\n    }" { (if_statement "if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_003f7ee8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003f7ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }" { (expression_statement "iVar2 = *(int *)(local_70 + -8);" (assignment_expression "iVar2 = *(int *)(local_70 + -8)" identifier = (pointer_expression "*(int *)(local_70 + -8)" * (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_70 + -8) = iVar2 + -1;" (assignment_expression "*(int *)(local_70 + -8) = iVar2 + -1" (pointer_expression "*(int *)(local_70 + -8)" * (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) )))) = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1 = (int *)(local_70 + -8);" (assignment_expression "piVar1 = (int *)(local_70 + -8)" identifier = (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar2 = *piVar1;" (assignment_expression "iVar2 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (iVar2 < 1) {\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n        std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));\n      }" { (labeled_statement "std::wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_Rep::_M_destroy((allocator *)(local_70 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_destroy((allocator *)(local_70 + -0x18));" statement_identifier : (ERROR ":" :) (expression_statement "_M_destroy((allocator *)(local_70 + -0x18));" (call_expression "_M_destroy((allocator *)(local_70 + -0x18))" identifier (argument_list "((allocator *)(local_70 + -0x18))" ( (cast_expression "(allocator *)(local_70 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -0x18)" ( (binary_expression "local_70 + -0x18" identifier + number_literal) ))) ))) ;)))) })) })) }) (else_clause "else {\n    *in_stack_00000010 = local_74;\n  }" else (compound_statement "{\n    *in_stack_00000010 = local_74;\n  }" { (expression_statement "*in_stack_00000010 = local_74;" (assignment_expression "*in_stack_00000010 = local_74" (pointer_expression "*in_stack_00000010" * identifier) = identifier) ;) }))) (if_statement "if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*local_48)(&local_68);\n  }" { (expression_statement "(*local_48)(&local_68);" (call_expression "(*local_48)(&local_68)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(&local_68)" ( (pointer_expression "&local_68" & identifier) ))) ;) })) (expression_statement "auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;" (assignment_expression "auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff" (field_expression "auVar3._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "auVar3._8_8_ & 0xffffffff" (field_expression "auVar3._8_8_" identifier . field_identifier) & number_literal))) ;) (return_statement "return auVar3;" return identifier ;) }))))
(translation_unit "undefined1  [16] FUN_002dd700(long param_1,undefined8 param_2,ulong param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined1 local_75;\n  int local_74;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    \n  auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    \n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    \n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_002dd700(long param_1,undefined8 param_2,ulong param_3)" identifier ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) (ERROR ",undefined8 param_2,ulong param_3" , identifier identifier , identifier identifier) )) ; (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined1 local_75;\n  int local_74;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    \n  auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    \n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    \n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 auVar3 [16];" type_identifier (array_declarator "auVar3 [16]" identifier [ number_literal ]) ;) (declaration "int *in_stack_00000010;" primitive_type (pointer_declarator "*in_stack_00000010" * identifier) ;) (declaration "undefined8 in_stack_00000018;" type_identifier identifier ;) (declaration "undefined1 local_75;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_48 = (code *)0x0;" (assignment_expression "local_48 = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));" (assignment_expression "auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10))" identifier = (call_expression "FUN_002daa50(*(undefined8 *)(param_1 + 0x10))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) )))) ;) (if_statement "if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    \n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    \n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }" if (parenthesized_expression "(local_74 == 0)" ( (binary_expression "local_74 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    \n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    \n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }" { (if_statement "if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }" if (parenthesized_expression "(local_48 == (code *)0x0)" ( (binary_expression "local_48 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }" { (expression_statement "FUN_002e11f0("uninitialized __any_string");" (call_expression "FUN_002e11f0("uninitialized __any_string")" identifier (argument_list "("uninitialized __any_string")" ( (string_literal ""uninitialized __any_string"" " string_content ") ))) ;) })) (expression_statement "FUN_0031f260(&local_70,local_68,local_60,&local_75);" (call_expression "FUN_0031f260(&local_70,local_68,local_60,&local_75)" identifier (argument_list "(&local_70,local_68,local_60,&local_75)" ( (pointer_expression "&local_70" & identifier) , identifier , identifier , (pointer_expression "&local_75" & identifier) ))) ;) (expression_statement "FUN_0031ccc0(in_stack_00000018,&local_70);" (call_expression "FUN_0031ccc0(in_stack_00000018,&local_70)" identifier (argument_list "(in_stack_00000018,&local_70)" ( identifier , (pointer_expression "&local_70" & identifier) ))) ;) (if_statement "if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }" if (parenthesized_expression "((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8)" ( (binary_expression "(undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8" (cast_expression "(undefined *)(local_70 + -0x18)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -0x18)" ( (binary_expression "local_70 + -0x18" identifier + number_literal) ))) != identifier) )) (compound_statement "{\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }" { (if_statement "if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_003f7ee8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003f7ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }" { (expression_statement "iVar2 = *(int *)(local_70 + -8);" (assignment_expression "iVar2 = *(int *)(local_70 + -8)" identifier = (pointer_expression "*(int *)(local_70 + -8)" * (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_70 + -8) = iVar2 + -1;" (assignment_expression "*(int *)(local_70 + -8) = iVar2 + -1" (pointer_expression "*(int *)(local_70 + -8)" * (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) )))) = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1 = (int *)(local_70 + -8);" (assignment_expression "piVar1 = (int *)(local_70 + -8)" identifier = (cast_expression "(int *)(local_70 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -8)" ( (binary_expression "local_70 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar2 = *piVar1;" (assignment_expression "iVar2 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }" { (expression_statement "thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);" (call_expression "thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75)" identifier (argument_list "((undefined *)(local_70 + -0x18),&local_75)" ( (cast_expression "(undefined *)(local_70 + -0x18)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_70 + -0x18)" ( (binary_expression "local_70 + -0x18" identifier + number_literal) ))) , (pointer_expression "&local_75" & identifier) ))) ;) })) })) }) (else_clause "else {\n    *in_stack_00000010 = local_74;\n  }" else (compound_statement "{\n    *in_stack_00000010 = local_74;\n  }" { (expression_statement "*in_stack_00000010 = local_74;" (assignment_expression "*in_stack_00000010 = local_74" (pointer_expression "*in_stack_00000010" * identifier) = identifier) ;) }))) (if_statement "if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*local_48)(&local_68);\n  }" { (expression_statement "(*local_48)(&local_68);" (call_expression "(*local_48)(&local_68)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(&local_68)" ( (pointer_expression "&local_68" & identifier) ))) ;) })) (expression_statement "auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;" (assignment_expression "auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff" (field_expression "auVar3._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "auVar3._8_8_ & 0xffffffff" (field_expression "auVar3._8_8_" identifier . field_identifier) & number_literal))) ;) (return_statement "return auVar3;" return identifier ;) }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (macro_type_specifier IDENT ( (type_descriptor (sized_type_specifier long TYPE)) (ERROR , IDENT IDENT , IDENT IDENT) )) ; (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (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 IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (pointer_expression & IDENT) ))) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) ))) ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (binary_expression IDENT & LIT) | (binary_expression (field_expression IDENT . field_identifier) & LIT))) ;) (return_statement return IDENT ;) }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (macro_type_specifier "FUN_002dd700(long param_1,undefined8 param_2,ulong param_3)" (identifier "FUN_002dd700") (( "(") (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (ERROR ",undefined8 param_2,ulong param_3" (, ",") (identifier "undefined8") (identifier "param_2") (, ",") (identifier "ulong") (identifier "param_3")) () ")")) (; "") (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  undefined1 auVar3 [16];\n  int *in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined1 local_75;\n  int local_74;\n  long local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n  local_74 = 0;\n                    \n  auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));\n  if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    \n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    \n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;\n  return auVar3;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined1 auVar3 [16];" (type_identifier "undefined1") (array_declarator "auVar3 [16]" (identifier "auVar3") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int *in_stack_00000010;" (primitive_type "int") (pointer_declarator "*in_stack_00000010" (* "*") (identifier "in_stack_00000010")) (; ";")) (declaration "undefined8 in_stack_00000018;" (type_identifier "undefined8") (identifier "in_stack_00000018") (; ";")) (declaration "undefined1 local_75;" (type_identifier "undefined1") (identifier "local_75") (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "long local_70;" (sized_type_specifier "long" (long "long")) (identifier "local_70") (; ";")) (declaration "undefined8 local_68;" (type_identifier "undefined8") (identifier "local_68") (; ";")) (declaration "undefined8 local_60;" (type_identifier "undefined8") (identifier "local_60") (; ";")) (declaration "code *local_48;" (type_identifier "code") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (expression_statement "local_48 = (code *)0x0;" (assignment_expression "local_48 = (code *)0x0" (identifier "local_48") (= "=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" (identifier "local_74") (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));" (assignment_expression "auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10))" (identifier "auVar3") (= "=") (call_expression "FUN_002daa50(*(undefined8 *)(param_1 + 0x10))" (identifier "FUN_002daa50") (argument_list "(*(undefined8 *)(param_1 + 0x10))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (if_statement "if (local_74 == 0) {\n    if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    \n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    \n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }\n  else {\n    *in_stack_00000010 = local_74;\n  }" (if "if") (parenthesized_expression "(local_74 == 0)" (( "(") (binary_expression "local_74 == 0" (identifier "local_74") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }\n                    \n    FUN_0031f260(&local_70,local_68,local_60,&local_75);\n                    \n    FUN_0031ccc0(in_stack_00000018,&local_70);\n    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }\n  }" ({ "{") (if_statement "if (local_48 == (code *)0x0) {\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }" (if "if") (parenthesized_expression "(local_48 == (code *)0x0)" (( "(") (binary_expression "local_48 == (code *)0x0" (identifier "local_48") (== "==") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n                    \n      FUN_002e11f0("uninitialized __any_string");\n    }" ({ "{") (expression_statement "FUN_002e11f0("uninitialized __any_string");" (call_expression "FUN_002e11f0("uninitialized __any_string")" (identifier "FUN_002e11f0") (argument_list "("uninitialized __any_string")" (( "(") (string_literal ""uninitialized __any_string"" (" """) (string_content "uninitialized __any_string") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0031f260(&local_70,local_68,local_60,&local_75);" (call_expression "FUN_0031f260(&local_70,local_68,local_60,&local_75)" (identifier "FUN_0031f260") (argument_list "(&local_70,local_68,local_60,&local_75)" (( "(") (pointer_expression "&local_70" (& "&") (identifier "local_70")) (, ",") (identifier "local_68") (, ",") (identifier "local_60") (, ",") (pointer_expression "&local_75" (& "&") (identifier "local_75")) () ")"))) (; ";")) (expression_statement "FUN_0031ccc0(in_stack_00000018,&local_70);" (call_expression "FUN_0031ccc0(in_stack_00000018,&local_70)" (identifier "FUN_0031ccc0") (argument_list "(in_stack_00000018,&local_70)" (( "(") (identifier "in_stack_00000018") (, ",") (pointer_expression "&local_70" (& "&") (identifier "local_70")) () ")"))) (; ";")) (if_statement "if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }" (if "if") (parenthesized_expression "((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8)" (( "(") (binary_expression "(undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8" (cast_expression "(undefined *)(local_70 + -0x18)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_70 + -0x18)" (( "(") (binary_expression "local_70 + -0x18" (identifier "local_70") (+ "+") (number_literal "-0x18")) () ")"))) (!= "!=") (identifier "PTR_DAT_003f7cd8")) () ")")) (compound_statement "{\n      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }\n      if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }\n    }" ({ "{") (if_statement "if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }\n      else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_003f7ee8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_003f7ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_003f7ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar2 = *(int *)(local_70 + -8);\n        *(int *)(local_70 + -8) = iVar2 + -1;\n      }" ({ "{") (expression_statement "iVar2 = *(int *)(local_70 + -8);" (assignment_expression "iVar2 = *(int *)(local_70 + -8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(local_70 + -8)" (* "*") (cast_expression "(int *)(local_70 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_70 + -8)" (( "(") (binary_expression "local_70 + -8" (identifier "local_70") (+ "+") (number_literal "-8")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_70 + -8) = iVar2 + -1;" (assignment_expression "*(int *)(local_70 + -8) = iVar2 + -1" (pointer_expression "*(int *)(local_70 + -8)" (* "*") (cast_expression "(int *)(local_70 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_70 + -8)" (( "(") (binary_expression "local_70 + -8" (identifier "local_70") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        piVar1 = (int *)(local_70 + -8);\n        iVar2 = *piVar1;\n        *piVar1 = *piVar1 + -1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar1 = (int *)(local_70 + -8);" (assignment_expression "piVar1 = (int *)(local_70 + -8)" (identifier "piVar1") (= "=") (cast_expression "(int *)(local_70 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_70 + -8)" (( "(") (binary_expression "local_70 + -8" (identifier "local_70") (+ "+") (number_literal "-8")) () ")")))) (; ";")) (expression_statement "iVar2 = *piVar1;" (assignment_expression "iVar2 = *piVar1" (identifier "iVar2") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (iVar2 < 1) {\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }" (if "if") (parenthesized_expression "(iVar2 < 1)" (( "(") (binary_expression "iVar2 < 1" (identifier "iVar2") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);\n      }" ({ "{") (expression_statement "thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);" (call_expression "thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75)" (identifier "thunk_FUN_002a2980") (argument_list "((undefined *)(local_70 + -0x18),&local_75)" (( "(") (cast_expression "(undefined *)(local_70 + -0x18)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_70 + -0x18)" (( "(") (binary_expression "local_70 + -0x18" (identifier "local_70") (+ "+") (number_literal "-0x18")) () ")"))) (, ",") (pointer_expression "&local_75" (& "&") (identifier "local_75")) () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    *in_stack_00000010 = local_74;\n  }" (else "else") (compound_statement "{\n    *in_stack_00000010 = local_74;\n  }" ({ "{") (expression_statement "*in_stack_00000010 = local_74;" (assignment_expression "*in_stack_00000010 = local_74" (pointer_expression "*in_stack_00000010" (* "*") (identifier "in_stack_00000010")) (= "=") (identifier "local_74")) (; ";")) (} "}")))) (if_statement "if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }" (if "if") (parenthesized_expression "(local_48 != (code *)0x0)" (( "(") (binary_expression "local_48 != (code *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (*local_48)(&local_68);\n  }" ({ "{") (expression_statement "(*local_48)(&local_68);" (call_expression "(*local_48)(&local_68)" (parenthesized_expression "(*local_48)" (( "(") (pointer_expression "*local_48" (* "*") (identifier "local_48")) () ")")) (argument_list "(&local_68)" (( "(") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")"))) (; ";")) (} "}"))) (expression_statement "auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;" (assignment_expression "auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff" (field_expression "auVar3._8_8_" (identifier "auVar3") (. ".") (field_identifier "_8_8_")) (= "=") (binary_expression "param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff" (binary_expression "param_3 & 0xffffffff00000000" (identifier "param_3") (& "&") (number_literal "0xffffffff00000000")) (| "|") (binary_expression "auVar3._8_8_ & 0xffffffff" (field_expression "auVar3._8_8_" (identifier "auVar3") (. ".") (field_identifier "_8_8_")) (& "&") (number_literal "0xffffffff")))) (; ";")) (return_statement "return auVar3;" (return "return") (identifier "auVar3") (; ";")) (} "}"))

/* std::__facet_shims::(anonymous
   namespace)::money_get_shim<wchar_t>::do_get(std::istreambuf_iterator<wchar_t,
   std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool,
   std::ios_base&, std::_Ios_Iostate&, std::wstring&) const */

type_1  [16]
std::__facet_shims::(anonymous_namespace)::money_get_shim<type_4>::do_get
          (long var_2,undefined8 param_2,type_5 var_13)

{
  int *piVar1;
  int var_9;
  type_1 auVar3 [16];
  int *in_stack_00000010;
  type_2 *in_stack_00000018;
  type_3 local_75;
  int var_3;
  long var_7;
  type_4 *local_68;
  type_5 local_60;
  type_6 *var_4;
  
  var_4 = (type_6 *)0x0;
  var_3 = 0;
                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */
  auVar3 = var_1<type_4>(*(type_7 **)(var_2 + 0x10));
  if (var_3 == 0) {
    if (var_4 == (type_6 *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */
      var_5("uninitialized __any_string");
    }
                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */
    std::wstring::type_2((type_2 *)&var_7,local_68,local_60,&local_75);
                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */
    std::wstring::var_6(in_stack_00000018,(type_2 *)&var_7);
    if ((type_3 *)(var_7 + -0x18) != (type_3 *)PTR__S_empty_rep_storage_003f7cd8) {
      if (var_8 == (type_8 *)0x0) {
        var_9 = *(int *)(var_7 + -8);
        *(int *)(var_7 + -8) = var_9 + -1;
      }
      else {
        var_10();
        piVar1 = (int *)(var_7 + -8);
        var_9 = *piVar1;
        *piVar1 = *piVar1 + -1;
        var_11();
      }
      if (var_9 < 1) {
        std::wstring::_Rep::var_12((type_3 *)(var_7 + -0x18));
      }
    }
  }
  else {
    *in_stack_00000010 = var_3;
  }
  if (var_4 != (type_6 *)0x0) {
    (*var_4)(&local_68);
  }
  auVar3._8_8_ = var_13 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;
  return auVar3;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (macro_type_specifier name: (identifier) type: (type_descriptor type: (sized_type_specifier type: (type_identifier))) (ERROR (identifier) (identifier) (identifier) (identifier))) (MISSING ";") (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_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))))))) (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))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (pointer_expression argument: (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) (return_statement (identifier))))

undefined1  [16] MASKED(long param_1,undefined8 param_2,ulong param_3)

{
  int *piVar1;
  int iVar2;
  undefined1 auVar3 [16];
  int *in_stack_00000010;
  undefined8 in_stack_00000018;
  undefined1 local_75;
  int local_74;
  long local_70;
  undefined8 local_68;
  undefined8 local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
  local_74 = 0;
                    /* try { // try from 002dd73b to 002dd73f has its CatchHandler @ 002dd81f */
  auVar3 = FUN_002daa50(*(undefined8 *)(param_1 + 0x10));
  if (local_74 == 0) {
    if (local_48 == (code *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002dd81a to 002dd81e has its CatchHandler @ 002dd81f */
      FUN_002e11f0("uninitialized __any_string");
    }
                    /* try { // try from 002dd7b3 to 002dd7b7 has its CatchHandler @ 002dd81f */
    FUN_0031f260(&local_70,local_68,local_60,&local_75);
                    /* try { // try from 002dd7bf to 002dd7c3 has its CatchHandler @ 002dd827 */
    FUN_0031ccc0(in_stack_00000018,&local_70);
    if ((undefined *)(local_70 + -0x18) != PTR_DAT_003f7cd8) {
      if (PTR___pthread_key_create_003f7ee8 == (undefined *)0x0) {
        iVar2 = *(int *)(local_70 + -8);
        *(int *)(local_70 + -8) = iVar2 + -1;
      }
      else {
        LOCK();
        piVar1 = (int *)(local_70 + -8);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
      }
      if (iVar2 < 1) {
        thunk_FUN_002a2980((undefined *)(local_70 + -0x18),&local_75);
      }
    }
  }
  else {
    *in_stack_00000010 = local_74;
  }
  if (local_48 != (code *)0x0) {
    (*local_48)(&local_68);
  }
  auVar3._8_8_ = param_3 & 0xffffffff00000000 | auVar3._8_8_ & 0xffffffff;
  return auVar3;
}

