
/* WARNING: Removing unreachable block (ram,0x002d88c3) */
/* 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)

{
  undefined8 uVar1;
  wchar_t *__s1;
  undefined1 auVar2 [16];
  undefined8 *in_stack_00000018;
  wchar_t *local_88;
  size_t local_80;
  undefined8 local_78 [2];
  long local_68;
  long local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */
  auVar2 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));
  if (local_48 == (code *)0x0) {
                    /* WARNING: Subroutine does not return */
    __throw_logic_error("uninitialized __any_string");
  }
  local_88 = (wchar_t *)local_78;
                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */
  std::wstring::_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4);
  __s1 = (wchar_t *)*in_stack_00000018;
  if (local_88 == (wchar_t *)local_78) {
    if (local_80 != 0) {
      if (local_80 == 1) {
        *__s1 = (wchar_t)local_78[0];
      }
      else {
        wmemcpy(__s1,local_88,local_80);
        __s1 = (wchar_t *)*in_stack_00000018;
      }
    }
    in_stack_00000018[1] = local_80;
    __s1[local_80] = L'\0';
    __s1 = local_88;
    uVar1 = local_78[0];
  }
  else {
    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {
      *in_stack_00000018 = local_88;
      in_stack_00000018[1] = local_80;
      in_stack_00000018[2] = local_78[0];
      goto LAB_002d8974;
    }
    uVar1 = in_stack_00000018[2];
    *in_stack_00000018 = local_88;
    in_stack_00000018[1] = local_80;
    in_stack_00000018[2] = local_78[0];
    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;
  }
  local_78[0] = uVar1;
  local_88 = __s1;
  local_80 = 0;
  *local_88 = L'\0';
  if (local_88 != (wchar_t *)local_78) {
    operator_delete(local_88);
  }
LAB_002d8974:
  if (local_48 != (code *)0x0) {
    (*local_48)(&local_68);
  }
  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;
  return auVar2;
}



/* WARNING: Removing unreachable block (ram,0x002d88c3) */

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

{
  undefined8 uVar1;
  wchar_t *__s1;
  undefined1 auVar2 [16];
  undefined8 *in_stack_00000018;
  wchar_t *local_88;
  size_t local_80;
  undefined8 local_78 [2];
  long local_68;
  long local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */
  auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));
  if (local_48 == (code *)0x0) {
                    /* WARNING: Subroutine does not return */
    FUN_002e11f0("uninitialized __any_string");
  }
  local_88 = (wchar_t *)local_78;
                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */
  FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);
  __s1 = (wchar_t *)*in_stack_00000018;
  if (local_88 == (wchar_t *)local_78) {
    if (local_80 != 0) {
      if (local_80 == 1) {
        *__s1 = (wchar_t)local_78[0];
      }
      else {
        wmemcpy(__s1,local_88,local_80);
        __s1 = (wchar_t *)*in_stack_00000018;
      }
    }
    in_stack_00000018[1] = local_80;
    __s1[local_80] = L'\0';
    __s1 = local_88;
    uVar1 = local_78[0];
  }
  else {
    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {
      *in_stack_00000018 = local_88;
      in_stack_00000018[1] = local_80;
      in_stack_00000018[2] = local_78[0];
      goto LAB_002d8974;
    }
    uVar1 = in_stack_00000018[2];
    *in_stack_00000018 = local_88;
    in_stack_00000018[1] = local_80;
    in_stack_00000018[2] = local_78[0];
    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;
  }
  local_78[0] = uVar1;
  local_88 = __s1;
  local_80 = 0;
  *local_88 = L'\0';
  if (local_88 != (wchar_t *)local_78) {
    FUN_002a2980();
  }
LAB_002d8974:
  if (local_48 != (code *)0x0) {
    (*local_48)(&local_68);
  }
  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;
  return auVar2;
}


PUSH RBP
MOVZX R9D,R9B
MOV RBP,RSP
PUSH R15
PUSH R14
LEA RAX,[RBP + -0x84]
PUSH R13
PUSH R12
LEA R12,[RBP + -0x60]
PUSH RBX
MOV RBX,RDX
SUB RSP,0x78
MOV RDI,qword ptr [RDI + 0x10]
MOV R13,qword ptr [RBP + 0x20]
MOV qword ptr [RBP + -0x40],0x0
PUSH R12
PUSH 0x0
PUSH RAX
PUSH qword ptr [RBP + 0x10]
MOV dword ptr [RBP + -0x84],0x0
CALL 0x002df540
MOV qword ptr [RBP + -0x98],RDX
MOV R15,RAX
ADD RSP,0x20
MOV RDX,-0x100000000
AND RBX,RDX
MOV qword ptr [RBP + -0xa0],RAX
MOV EDX,dword ptr [RBP + -0x84]
MOV EAX,dword ptr [RBP + -0x98]
OR RBX,RAX
MOV RAX,qword ptr [RBP + -0x40]
TEST EDX,EDX
JZ 0x002d88f0
MOV RCX,qword ptr [RBP + 0x18]
MOV dword ptr [RCX],EDX
TEST RAX,RAX
JZ 0x002d88d3
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 0x002d89c7
LEA R14,[RBP + -0x80]
MOV RSI,qword ptr [RBP + -0x60]
LEA RAX,[R14 + 0x10]
MOV RDI,R14
MOV qword ptr [RBP + -0x80],RAX
MOV RAX,qword ptr [RBP + -0x58]
LEA RDX,[RSI + RAX*0x4]
CALL 0x002a8fc0
MOV RSI,qword ptr [RBP + -0x80]
LEA RAX,[R14 + 0x10]
MOV RDI,qword ptr [R13]
MOV RDX,qword ptr [RBP + -0x78]
CMP RSI,RAX
JZ 0x002d8990
LEA RCX,[R13 + 0x10]
MOV RAX,qword ptr [RBP + -0x70]
CMP RDI,RCX
JZ 0x002d8980
MOV RCX,qword ptr [R13 + 0x10]
MOV qword ptr [R13],RSI
MOV qword ptr [R13 + 0x8],RDX
MOV qword ptr [R13 + 0x10],RAX
TEST RDI,RDI
JZ 0x002d8974
MOV qword ptr [RBP + -0x80],RDI
MOV qword ptr [RBP + -0x70],RCX
ADD R14,0x10
MOV qword ptr [RBP + -0x78],0x0
MOV dword ptr [RDI],0x0
CMP RDI,R14
JZ 0x002d8974
CALL 0x002a2980
MOV RAX,qword ptr [RBP + -0x40]
JMP 0x002d88c9
MOV qword ptr [R13],RSI
MOV qword ptr [R13 + 0x8],RDX
MOV qword ptr [R13 + 0x10],RAX
JMP 0x002d8974
TEST RDX,RDX
JZ 0x002d89ac
CMP RDX,0x1
JZ 0x002d89c0
CALL 0x001440f0
MOV RDX,qword ptr [RBP + -0x78]
MOV RDI,qword ptr [R13]
MOV RSI,qword ptr [RBP + -0x80]
MOV qword ptr [R13 + 0x8],RDX
MOV dword ptr [RDI + RDX*0x4],0x0
MOV RDI,RSI
JMP 0x002d8958
MOV EAX,dword ptr [RBP + -0x70]
MOV dword ptr [RDI],EAX
JMP 0x002d89ac
LEA RDI,[0x35bea4]
CALL 0x002e11f0
(translation_unit "/* WARNING: Removing unreachable block (ram,0x002d88c3) */\n\nundefined1  [16] FUN_002d8840(long param_1,undefined8 param_2,ulong param_3)\n\n{\n  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */\n  auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002e11f0("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */\n  FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    FUN_002a2980();\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\n}\n\n" comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_002d8840(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  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */\n  auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002e11f0("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */\n  FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    FUN_002a2980();\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "wchar_t *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 *in_stack_00000018;" type_identifier (pointer_declarator "*in_stack_00000018" * identifier) ;) (declaration "wchar_t *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "size_t local_80;" primitive_type identifier ;) (declaration "undefined8 local_78 [2];" type_identifier (array_declarator "local_78 [2]" identifier [ number_literal ]) ;) (declaration "long local_68;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) 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)) ;) comment (expression_statement "auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));" (assignment_expression "auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10))" identifier = (call_expression "FUN_002df540(*(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_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\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    FUN_002e11f0("uninitialized __any_string");\n  }" { 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 ") ))) ;) })) (expression_statement "local_88 = (wchar_t *)local_78;" (assignment_expression "local_88 = (wchar_t *)local_78" identifier = (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) comment (expression_statement "FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);" (call_expression "FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4)" identifier (argument_list "(&local_88,local_68,local_68 + local_60 * 4)" ( (pointer_expression "&local_88" & identifier) , identifier , (binary_expression "local_68 + local_60 * 4" identifier + (binary_expression "local_60 * 4" identifier * number_literal)) ))) ;) (expression_statement "__s1 = (wchar_t *)*in_stack_00000018;" (assignment_expression "__s1 = (wchar_t *)*in_stack_00000018" identifier = (cast_expression "(wchar_t *)*in_stack_00000018" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*in_stack_00000018" * identifier))) ;) (if_statement "if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" if (parenthesized_expression "(local_88 == (wchar_t *)local_78)" ( (binary_expression "local_88 == (wchar_t *)local_78" identifier == (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }" { (if_statement "if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }" { (if_statement "if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" if (parenthesized_expression "(local_80 == 1)" ( (binary_expression "local_80 == 1" identifier == number_literal) )) (compound_statement "{\n        *__s1 = (wchar_t)local_78[0];\n      }" { (expression_statement "*__s1 = (wchar_t)local_78[0];" (assignment_expression "*__s1 = (wchar_t)local_78[0]" (pointer_expression "*__s1" * identifier) = (cast_expression "(wchar_t)local_78[0]" ( (type_descriptor "wchar_t" type_identifier) ) (subscript_expression "local_78[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" else (compound_statement "{\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" { (expression_statement "wmemcpy(__s1,local_88,local_80);" (call_expression "wmemcpy(__s1,local_88,local_80)" identifier (argument_list "(__s1,local_88,local_80)" ( identifier , identifier , identifier ))) ;) (expression_statement "__s1 = (wchar_t *)*in_stack_00000018;" (assignment_expression "__s1 = (wchar_t *)*in_stack_00000018" identifier = (cast_expression "(wchar_t *)*in_stack_00000018" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*in_stack_00000018" * identifier))) ;) }))) })) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__s1[local_80] = L'\0';" (assignment_expression "__s1[local_80] = L'\0'" (subscript_expression "__s1[local_80]" identifier [ identifier ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "__s1 = local_88;" (assignment_expression "__s1 = local_88" identifier = identifier) ;) (expression_statement "uVar1 = local_78[0];" (assignment_expression "uVar1 = local_78[0]" identifier = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" else (compound_statement "{\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" { (if_statement "if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }" if (parenthesized_expression "(__s1 == (wchar_t *)(in_stack_00000018 + 2))" ( (binary_expression "__s1 == (wchar_t *)(in_stack_00000018 + 2)" identifier == (cast_expression "(wchar_t *)(in_stack_00000018 + 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_stack_00000018 + 2)" ( (binary_expression "in_stack_00000018 + 2" identifier + number_literal) )))) )) (compound_statement "{\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }" { (expression_statement "*in_stack_00000018 = local_88;" (assignment_expression "*in_stack_00000018 = local_88" (pointer_expression "*in_stack_00000018" * identifier) = identifier) ;) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "in_stack_00000018[2] = local_78[0];" (assignment_expression "in_stack_00000018[2] = local_78[0]" (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ]) = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d8974;" goto statement_identifier ;) })) (expression_statement "uVar1 = in_stack_00000018[2];" (assignment_expression "uVar1 = in_stack_00000018[2]" identifier = (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ])) ;) (expression_statement "*in_stack_00000018 = local_88;" (assignment_expression "*in_stack_00000018 = local_88" (pointer_expression "*in_stack_00000018" * identifier) = identifier) ;) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "in_stack_00000018[2] = local_78[0];" (assignment_expression "in_stack_00000018[2] = local_78[0]" (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ]) = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) (if_statement "if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;" if (parenthesized_expression "(__s1 == (wchar_t *)0x0)" ( (binary_expression "__s1 == (wchar_t *)0x0" identifier == (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002d8974;" goto statement_identifier ;)) }))) (expression_statement "local_78[0] = uVar1;" (assignment_expression "local_78[0] = uVar1" (subscript_expression "local_78[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_88 = __s1;" (assignment_expression "local_88 = __s1" identifier = identifier) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "*local_88 = L'\0';" (assignment_expression "*local_88 = L'\0'" (pointer_expression "*local_88" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (if_statement "if (local_88 != (wchar_t *)local_78) {\n    FUN_002a2980();\n  }" if (parenthesized_expression "(local_88 != (wchar_t *)local_78)" ( (binary_expression "local_88 != (wchar_t *)local_78" identifier != (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    FUN_002a2980();\n  }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }" statement_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 "auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;" (assignment_expression "auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff" (field_expression "auVar2._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "auVar2._8_8_ & 0xffffffff" (field_expression "auVar2._8_8_" identifier . field_identifier) & number_literal))) ;) (return_statement "return auVar2;" return identifier ;) }))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x002d88c3) */\n/* 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  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */\n  auVar2 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __throw_logic_error("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */\n  std::wstring::_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    operator_delete(local_88);\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\n}\n\n" comment 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  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */\n  auVar2 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __throw_logic_error("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */\n  std::wstring::_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    operator_delete(local_88);\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\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  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */\n  auVar2 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __throw_logic_error("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */\n  std::wstring::_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    operator_delete(local_88);\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\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  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */\n  auVar2 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __throw_logic_error("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */\n  std::wstring::_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    operator_delete(local_88);\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "wchar_t *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 *in_stack_00000018;" type_identifier (pointer_declarator "*in_stack_00000018" * identifier) ;) (declaration "wchar_t *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "size_t local_80;" primitive_type identifier ;) (declaration "undefined8 local_78 [2];" type_identifier (array_declarator "local_78 [2]" identifier [ number_literal ]) ;) (declaration "long local_68;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) 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)) ;) comment (expression_statement "auVar2 = __money_get<wchar_t>(*(__facet_shims **)(param_1 + 0x10));" (assignment_expression "auVar2 = __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_48 == (code *)0x0) {\n                    /* WARNING: Subroutine does not return */\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    __throw_logic_error("uninitialized __any_string");\n  }" { 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 ") ))) ;) })) (expression_statement "local_88 = (wchar_t *)local_78;" (assignment_expression "local_88 = (wchar_t *)local_78" identifier = (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) comment (labeled_statement "std::wstring::_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4);" (binary_expression "_M_construct<wchar_t_const*>(&local_88,local_68,local_68 + local_60 * 4)" (binary_expression "_M_construct<wchar_t_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_88,local_68,local_68 + local_60 * 4)" ( (comma_expression "&local_88,local_68,local_68 + local_60 * 4" (pointer_expression "&local_88" & identifier) , (comma_expression "local_68,local_68 + local_60 * 4" identifier , (binary_expression "local_68 + local_60 * 4" identifier + (binary_expression "local_60 * 4" identifier * number_literal)))) ))) ;))) (expression_statement "__s1 = (wchar_t *)*in_stack_00000018;" (assignment_expression "__s1 = (wchar_t *)*in_stack_00000018" identifier = (cast_expression "(wchar_t *)*in_stack_00000018" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*in_stack_00000018" * identifier))) ;) (if_statement "if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" if (parenthesized_expression "(local_88 == (wchar_t *)local_78)" ( (binary_expression "local_88 == (wchar_t *)local_78" identifier == (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }" { (if_statement "if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }" { (if_statement "if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" if (parenthesized_expression "(local_80 == 1)" ( (binary_expression "local_80 == 1" identifier == number_literal) )) (compound_statement "{\n        *__s1 = (wchar_t)local_78[0];\n      }" { (expression_statement "*__s1 = (wchar_t)local_78[0];" (assignment_expression "*__s1 = (wchar_t)local_78[0]" (pointer_expression "*__s1" * identifier) = (cast_expression "(wchar_t)local_78[0]" ( (type_descriptor "wchar_t" type_identifier) ) (subscript_expression "local_78[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" else (compound_statement "{\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" { (expression_statement "wmemcpy(__s1,local_88,local_80);" (call_expression "wmemcpy(__s1,local_88,local_80)" identifier (argument_list "(__s1,local_88,local_80)" ( identifier , identifier , identifier ))) ;) (expression_statement "__s1 = (wchar_t *)*in_stack_00000018;" (assignment_expression "__s1 = (wchar_t *)*in_stack_00000018" identifier = (cast_expression "(wchar_t *)*in_stack_00000018" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*in_stack_00000018" * identifier))) ;) }))) })) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__s1[local_80] = L'\0';" (assignment_expression "__s1[local_80] = L'\0'" (subscript_expression "__s1[local_80]" identifier [ identifier ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "__s1 = local_88;" (assignment_expression "__s1 = local_88" identifier = identifier) ;) (expression_statement "uVar1 = local_78[0];" (assignment_expression "uVar1 = local_78[0]" identifier = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" else (compound_statement "{\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" { (if_statement "if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }" if (parenthesized_expression "(__s1 == (wchar_t *)(in_stack_00000018 + 2))" ( (binary_expression "__s1 == (wchar_t *)(in_stack_00000018 + 2)" identifier == (cast_expression "(wchar_t *)(in_stack_00000018 + 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_stack_00000018 + 2)" ( (binary_expression "in_stack_00000018 + 2" identifier + number_literal) )))) )) (compound_statement "{\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }" { (expression_statement "*in_stack_00000018 = local_88;" (assignment_expression "*in_stack_00000018 = local_88" (pointer_expression "*in_stack_00000018" * identifier) = identifier) ;) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "in_stack_00000018[2] = local_78[0];" (assignment_expression "in_stack_00000018[2] = local_78[0]" (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ]) = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d8974;" goto statement_identifier ;) })) (expression_statement "uVar1 = in_stack_00000018[2];" (assignment_expression "uVar1 = in_stack_00000018[2]" identifier = (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ])) ;) (expression_statement "*in_stack_00000018 = local_88;" (assignment_expression "*in_stack_00000018 = local_88" (pointer_expression "*in_stack_00000018" * identifier) = identifier) ;) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "in_stack_00000018[2] = local_78[0];" (assignment_expression "in_stack_00000018[2] = local_78[0]" (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ]) = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) (if_statement "if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;" if (parenthesized_expression "(__s1 == (wchar_t *)0x0)" ( (binary_expression "__s1 == (wchar_t *)0x0" identifier == (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002d8974;" goto statement_identifier ;)) }))) (expression_statement "local_78[0] = uVar1;" (assignment_expression "local_78[0] = uVar1" (subscript_expression "local_78[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_88 = __s1;" (assignment_expression "local_88 = __s1" identifier = identifier) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "*local_88 = L'\0';" (assignment_expression "*local_88 = L'\0'" (pointer_expression "*local_88" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (if_statement "if (local_88 != (wchar_t *)local_78) {\n    operator_delete(local_88);\n  }" if (parenthesized_expression "(local_88 != (wchar_t *)local_78)" ( (binary_expression "local_88 != (wchar_t *)local_78" identifier != (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    operator_delete(local_88);\n  }" { (expression_statement "operator_delete(local_88);" (call_expression "operator_delete(local_88)" identifier (argument_list "(local_88)" ( identifier ))) ;) })) (labeled_statement "LAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }" statement_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 "auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;" (assignment_expression "auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff" (field_expression "auVar2._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "auVar2._8_8_ & 0xffffffff" (field_expression "auVar2._8_8_" identifier . field_identifier) & number_literal))) ;) (return_statement "return auVar2;" return identifier ;) }))))
(translation_unit "undefined1  [16] FUN_002d8840(long param_1,undefined8 param_2,ulong param_3)\n\n{\n  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    \n  auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    \n    FUN_002e11f0("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    \n  FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    FUN_002a2980();\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_002d8840(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  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    \n  auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    \n    FUN_002e11f0("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    \n  FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    FUN_002a2980();\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "wchar_t *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 *in_stack_00000018;" type_identifier (pointer_declarator "*in_stack_00000018" * identifier) ;) (declaration "wchar_t *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "size_t local_80;" primitive_type identifier ;) (declaration "undefined8 local_78 [2];" type_identifier (array_declarator "local_78 [2]" identifier [ number_literal ]) ;) (declaration "long local_68;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) 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 "auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));" (assignment_expression "auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10))" identifier = (call_expression "FUN_002df540(*(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_48 == (code *)0x0) {\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    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 "local_88 = (wchar_t *)local_78;" (assignment_expression "local_88 = (wchar_t *)local_78" identifier = (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);" (call_expression "FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4)" identifier (argument_list "(&local_88,local_68,local_68 + local_60 * 4)" ( (pointer_expression "&local_88" & identifier) , identifier , (binary_expression "local_68 + local_60 * 4" identifier + (binary_expression "local_60 * 4" identifier * number_literal)) ))) ;) (expression_statement "__s1 = (wchar_t *)*in_stack_00000018;" (assignment_expression "__s1 = (wchar_t *)*in_stack_00000018" identifier = (cast_expression "(wchar_t *)*in_stack_00000018" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*in_stack_00000018" * identifier))) ;) (if_statement "if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" if (parenthesized_expression "(local_88 == (wchar_t *)local_78)" ( (binary_expression "local_88 == (wchar_t *)local_78" identifier == (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }" { (if_statement "if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }" { (if_statement "if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" if (parenthesized_expression "(local_80 == 1)" ( (binary_expression "local_80 == 1" identifier == number_literal) )) (compound_statement "{\n        *__s1 = (wchar_t)local_78[0];\n      }" { (expression_statement "*__s1 = (wchar_t)local_78[0];" (assignment_expression "*__s1 = (wchar_t)local_78[0]" (pointer_expression "*__s1" * identifier) = (cast_expression "(wchar_t)local_78[0]" ( (type_descriptor "wchar_t" type_identifier) ) (subscript_expression "local_78[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" else (compound_statement "{\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" { (expression_statement "wmemcpy(__s1,local_88,local_80);" (call_expression "wmemcpy(__s1,local_88,local_80)" identifier (argument_list "(__s1,local_88,local_80)" ( identifier , identifier , identifier ))) ;) (expression_statement "__s1 = (wchar_t *)*in_stack_00000018;" (assignment_expression "__s1 = (wchar_t *)*in_stack_00000018" identifier = (cast_expression "(wchar_t *)*in_stack_00000018" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*in_stack_00000018" * identifier))) ;) }))) })) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__s1[local_80] = L'\0';" (assignment_expression "__s1[local_80] = L'\0'" (subscript_expression "__s1[local_80]" identifier [ identifier ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "__s1 = local_88;" (assignment_expression "__s1 = local_88" identifier = identifier) ;) (expression_statement "uVar1 = local_78[0];" (assignment_expression "uVar1 = local_78[0]" identifier = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" else (compound_statement "{\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" { (if_statement "if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }" if (parenthesized_expression "(__s1 == (wchar_t *)(in_stack_00000018 + 2))" ( (binary_expression "__s1 == (wchar_t *)(in_stack_00000018 + 2)" identifier == (cast_expression "(wchar_t *)(in_stack_00000018 + 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_stack_00000018 + 2)" ( (binary_expression "in_stack_00000018 + 2" identifier + number_literal) )))) )) (compound_statement "{\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }" { (expression_statement "*in_stack_00000018 = local_88;" (assignment_expression "*in_stack_00000018 = local_88" (pointer_expression "*in_stack_00000018" * identifier) = identifier) ;) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "in_stack_00000018[2] = local_78[0];" (assignment_expression "in_stack_00000018[2] = local_78[0]" (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ]) = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d8974;" goto statement_identifier ;) })) (expression_statement "uVar1 = in_stack_00000018[2];" (assignment_expression "uVar1 = in_stack_00000018[2]" identifier = (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ])) ;) (expression_statement "*in_stack_00000018 = local_88;" (assignment_expression "*in_stack_00000018 = local_88" (pointer_expression "*in_stack_00000018" * identifier) = identifier) ;) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "in_stack_00000018[2] = local_78[0];" (assignment_expression "in_stack_00000018[2] = local_78[0]" (subscript_expression "in_stack_00000018[2]" identifier [ number_literal ]) = (subscript_expression "local_78[0]" identifier [ number_literal ])) ;) (if_statement "if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;" if (parenthesized_expression "(__s1 == (wchar_t *)0x0)" ( (binary_expression "__s1 == (wchar_t *)0x0" identifier == (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002d8974;" goto statement_identifier ;)) }))) (expression_statement "local_78[0] = uVar1;" (assignment_expression "local_78[0] = uVar1" (subscript_expression "local_78[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_88 = __s1;" (assignment_expression "local_88 = __s1" identifier = identifier) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "*local_88 = L'\0';" (assignment_expression "*local_88 = L'\0'" (pointer_expression "*local_88" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (if_statement "if (local_88 != (wchar_t *)local_78) {\n    FUN_002a2980();\n  }" if (parenthesized_expression "(local_88 != (wchar_t *)local_78)" ( (binary_expression "local_88 != (wchar_t *)local_78" identifier != (cast_expression "(wchar_t *)local_78" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    FUN_002a2980();\n  }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }" statement_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 "auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;" (assignment_expression "auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff" (field_expression "auVar2._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | (binary_expression "auVar2._8_8_ & 0xffffffff" (field_expression "auVar2._8_8_" identifier . field_identifier) & number_literal))) ;) (return_statement "return auVar2;" 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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 = (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (binary_expression IDENT + (binary_expression IDENT * LIT)) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal L' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal L' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (labeled_statement statement_identifier : (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_002d8840(long param_1,undefined8 param_2,ulong param_3)" (identifier "FUN_002d8840") (( "(") (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  undefined8 uVar1;\n  wchar_t *__s1;\n  undefined1 auVar2 [16];\n  undefined8 *in_stack_00000018;\n  wchar_t *local_88;\n  size_t local_80;\n  undefined8 local_78 [2];\n  long local_68;\n  long local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    \n  auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));\n  if (local_48 == (code *)0x0) {\n                    \n    FUN_002e11f0("uninitialized __any_string");\n  }\n  local_88 = (wchar_t *)local_78;\n                    \n  FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);\n  __s1 = (wchar_t *)*in_stack_00000018;\n  if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }\n  local_78[0] = uVar1;\n  local_88 = __s1;\n  local_80 = 0;\n  *local_88 = L'\0';\n  if (local_88 != (wchar_t *)local_78) {\n    FUN_002a2980();\n  }\nLAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;\n  return auVar2;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "wchar_t *__s1;" (type_identifier "wchar_t") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "undefined1 auVar2 [16];" (type_identifier "undefined1") (array_declarator "auVar2 [16]" (identifier "auVar2") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 *in_stack_00000018;" (type_identifier "undefined8") (pointer_declarator "*in_stack_00000018" (* "*") (identifier "in_stack_00000018")) (; ";")) (declaration "wchar_t *local_88;" (type_identifier "wchar_t") (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "size_t local_80;" (primitive_type "size_t") (identifier "local_80") (; ";")) (declaration "undefined8 local_78 [2];" (type_identifier "undefined8") (array_declarator "local_78 [2]" (identifier "local_78") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "long local_68;" (sized_type_specifier "long" (long "long")) (identifier "local_68") (; ";")) (declaration "long local_60;" (sized_type_specifier "long" (long "long")) (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 "auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));" (assignment_expression "auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10))" (identifier "auVar2") (= "=") (call_expression "FUN_002df540(*(undefined8 *)(param_1 + 0x10))" (identifier "FUN_002df540") (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_48 == (code *)0x0) {\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    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 "local_88 = (wchar_t *)local_78;" (assignment_expression "local_88 = (wchar_t *)local_78" (identifier "local_88") (= "=") (cast_expression "(wchar_t *)local_78" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_78"))) (; ";")) (expression_statement "FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);" (call_expression "FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4)" (identifier "FUN_002a8fc0") (argument_list "(&local_88,local_68,local_68 + local_60 * 4)" (( "(") (pointer_expression "&local_88" (& "&") (identifier "local_88")) (, ",") (identifier "local_68") (, ",") (binary_expression "local_68 + local_60 * 4" (identifier "local_68") (+ "+") (binary_expression "local_60 * 4" (identifier "local_60") (* "*") (number_literal "4"))) () ")"))) (; ";")) (expression_statement "__s1 = (wchar_t *)*in_stack_00000018;" (assignment_expression "__s1 = (wchar_t *)*in_stack_00000018" (identifier "__s1") (= "=") (cast_expression "(wchar_t *)*in_stack_00000018" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*in_stack_00000018" (* "*") (identifier "in_stack_00000018")))) (; ";")) (if_statement "if (local_88 == (wchar_t *)local_78) {\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }\n  else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" (if "if") (parenthesized_expression "(local_88 == (wchar_t *)local_78)" (( "(") (binary_expression "local_88 == (wchar_t *)local_78" (identifier "local_88") (== "==") (cast_expression "(wchar_t *)local_78" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_78"))) () ")")) (compound_statement "{\n    if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }\n    in_stack_00000018[1] = local_80;\n    __s1[local_80] = L'\0';\n    __s1 = local_88;\n    uVar1 = local_78[0];\n  }" ({ "{") (if_statement "if (local_80 != 0) {\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }" (if "if") (parenthesized_expression "(local_80 != 0)" (( "(") (binary_expression "local_80 != 0" (identifier "local_80") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }\n    }" ({ "{") (if_statement "if (local_80 == 1) {\n        *__s1 = (wchar_t)local_78[0];\n      }\n      else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" (if "if") (parenthesized_expression "(local_80 == 1)" (( "(") (binary_expression "local_80 == 1" (identifier "local_80") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        *__s1 = (wchar_t)local_78[0];\n      }" ({ "{") (expression_statement "*__s1 = (wchar_t)local_78[0];" (assignment_expression "*__s1 = (wchar_t)local_78[0]" (pointer_expression "*__s1" (* "*") (identifier "__s1")) (= "=") (cast_expression "(wchar_t)local_78[0]" (( "(") (type_descriptor "wchar_t" (type_identifier "wchar_t")) () ")") (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" (else "else") (compound_statement "{\n        wmemcpy(__s1,local_88,local_80);\n        __s1 = (wchar_t *)*in_stack_00000018;\n      }" ({ "{") (expression_statement "wmemcpy(__s1,local_88,local_80);" (call_expression "wmemcpy(__s1,local_88,local_80)" (identifier "wmemcpy") (argument_list "(__s1,local_88,local_80)" (( "(") (identifier "__s1") (, ",") (identifier "local_88") (, ",") (identifier "local_80") () ")"))) (; ";")) (expression_statement "__s1 = (wchar_t *)*in_stack_00000018;" (assignment_expression "__s1 = (wchar_t *)*in_stack_00000018" (identifier "__s1") (= "=") (cast_expression "(wchar_t *)*in_stack_00000018" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*in_stack_00000018" (* "*") (identifier "in_stack_00000018")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" (identifier "in_stack_00000018") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_80")) (; ";")) (expression_statement "__s1[local_80] = L'\0';" (assignment_expression "__s1[local_80] = L'\0'" (subscript_expression "__s1[local_80]" (identifier "__s1") ([ "[") (identifier "local_80") (] "]")) (= "=") (char_literal "L'\0'" (L' "L'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "__s1 = local_88;" (assignment_expression "__s1 = local_88" (identifier "__s1") (= "=") (identifier "local_88")) (; ";")) (expression_statement "uVar1 = local_78[0];" (assignment_expression "uVar1 = local_78[0]" (identifier "uVar1") (= "=") (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" (else "else") (compound_statement "{\n    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }\n    uVar1 = in_stack_00000018[2];\n    *in_stack_00000018 = local_88;\n    in_stack_00000018[1] = local_80;\n    in_stack_00000018[2] = local_78[0];\n    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;\n  }" ({ "{") (if_statement "if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }" (if "if") (parenthesized_expression "(__s1 == (wchar_t *)(in_stack_00000018 + 2))" (( "(") (binary_expression "__s1 == (wchar_t *)(in_stack_00000018 + 2)" (identifier "__s1") (== "==") (cast_expression "(wchar_t *)(in_stack_00000018 + 2)" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_stack_00000018 + 2)" (( "(") (binary_expression "in_stack_00000018 + 2" (identifier "in_stack_00000018") (+ "+") (number_literal "2")) () ")")))) () ")")) (compound_statement "{\n      *in_stack_00000018 = local_88;\n      in_stack_00000018[1] = local_80;\n      in_stack_00000018[2] = local_78[0];\n      goto LAB_002d8974;\n    }" ({ "{") (expression_statement "*in_stack_00000018 = local_88;" (assignment_expression "*in_stack_00000018 = local_88" (pointer_expression "*in_stack_00000018" (* "*") (identifier "in_stack_00000018")) (= "=") (identifier "local_88")) (; ";")) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" (identifier "in_stack_00000018") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_80")) (; ";")) (expression_statement "in_stack_00000018[2] = local_78[0];" (assignment_expression "in_stack_00000018[2] = local_78[0]" (subscript_expression "in_stack_00000018[2]" (identifier "in_stack_00000018") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]"))) (; ";")) (goto_statement "goto LAB_002d8974;" (goto "goto") (statement_identifier "LAB_002d8974") (; ";")) (} "}"))) (expression_statement "uVar1 = in_stack_00000018[2];" (assignment_expression "uVar1 = in_stack_00000018[2]" (identifier "uVar1") (= "=") (subscript_expression "in_stack_00000018[2]" (identifier "in_stack_00000018") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*in_stack_00000018 = local_88;" (assignment_expression "*in_stack_00000018 = local_88" (pointer_expression "*in_stack_00000018" (* "*") (identifier "in_stack_00000018")) (= "=") (identifier "local_88")) (; ";")) (expression_statement "in_stack_00000018[1] = local_80;" (assignment_expression "in_stack_00000018[1] = local_80" (subscript_expression "in_stack_00000018[1]" (identifier "in_stack_00000018") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_80")) (; ";")) (expression_statement "in_stack_00000018[2] = local_78[0];" (assignment_expression "in_stack_00000018[2] = local_78[0]" (subscript_expression "in_stack_00000018[2]" (identifier "in_stack_00000018") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;" (if "if") (parenthesized_expression "(__s1 == (wchar_t *)0x0)" (( "(") (binary_expression "__s1 == (wchar_t *)0x0" (identifier "__s1") (== "==") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_002d8974;" (goto "goto") (statement_identifier "LAB_002d8974") (; ";"))) (} "}")))) (expression_statement "local_78[0] = uVar1;" (assignment_expression "local_78[0] = uVar1" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "local_88 = __s1;" (assignment_expression "local_88 = __s1" (identifier "local_88") (= "=") (identifier "__s1")) (; ";")) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_88 = L'\0';" (assignment_expression "*local_88 = L'\0'" (pointer_expression "*local_88" (* "*") (identifier "local_88")) (= "=") (char_literal "L'\0'" (L' "L'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (local_88 != (wchar_t *)local_78) {\n    FUN_002a2980();\n  }" (if "if") (parenthesized_expression "(local_88 != (wchar_t *)local_78)" (( "(") (binary_expression "local_88 != (wchar_t *)local_78" (identifier "local_88") (!= "!=") (cast_expression "(wchar_t *)local_78" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_78"))) () ")")) (compound_statement "{\n    FUN_002a2980();\n  }" ({ "{") (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" (identifier "FUN_002a2980") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_002d8974:\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }" (statement_identifier "LAB_002d8974") (: ":") (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 "auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;" (assignment_expression "auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff" (field_expression "auVar2._8_8_" (identifier "auVar2") (. ".") (field_identifier "_8_8_")) (= "=") (binary_expression "param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff" (binary_expression "param_3 & 0xffffffff00000000" (identifier "param_3") (& "&") (number_literal "0xffffffff00000000")) (| "|") (binary_expression "auVar2._8_8_ & 0xffffffff" (field_expression "auVar2._8_8_" (identifier "auVar2") (. ".") (field_identifier "_8_8_")) (& "&") (number_literal "0xffffffff")))) (; ";")) (return_statement "return auVar2;" (return "return") (identifier "auVar2") (; ";")) (} "}"))

/* WARNING: Removing unreachable block (ram,0x002d88c3) */
/* 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_3  [16]
std::__facet_shims::(anonymous_namespace)::money_get_shim<type_2>::do_get
          (long var_2,type_1 param_2,ulong var_15)

{
  type_1 uVar1;
  type_2 *var_12;
  type_3 auVar2 [16];
  type_1 *var_13;
  type_2 *var_9;
  size_t var_10;
  type_1 local_78 [2];
  long var_7;
  long var_8;
  type_4 *var_3;
  
  var_3 = (type_4 *)0x0;
                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */
  auVar2 = var_1<type_2>(*(type_5 **)(var_2 + 0x10));
  if (var_3 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_4("uninitialized __any_string");
  }
  var_9 = (type_2 *)local_78;
                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */
  std::wstring::var_5<var_6*>(&var_9,var_7,var_7 + var_8 * 4);
  var_12 = (type_2 *)*var_13;
  if (var_9 == (type_2 *)local_78) {
    if (var_10 != 0) {
      if (var_10 == 1) {
        *var_12 = (type_2)local_78[0];
      }
      else {
        var_11(var_12,var_9,var_10);
        var_12 = (type_2 *)*var_13;
      }
    }
    var_13[1] = var_10;
    var_12[var_10] = L'\0';
    var_12 = var_9;
    uVar1 = local_78[0];
  }
  else {
    if (var_12 == (type_2 *)(var_13 + 2)) {
      *var_13 = var_9;
      var_13[1] = var_10;
      var_13[2] = local_78[0];
      goto LAB_002d8974;
    }
    uVar1 = var_13[2];
    *var_13 = var_9;
    var_13[1] = var_10;
    var_13[2] = local_78[0];
    if (var_12 == (type_2 *)0x0) goto LAB_002d8974;
  }
  local_78[0] = uVar1;
  var_9 = var_12;
  var_10 = 0;
  *var_9 = L'\0';
  if (var_9 != (type_2 *)local_78) {
    var_14(var_9);
  }
LAB_002d8974:
  if (var_3 != (type_4 *)0x0) {
    (*var_3)(&var_7);
  }
  auVar2._8_8_ = var_15 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;
  return auVar2;
}


(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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (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: (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 (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (labeled_statement label: (statement_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))))

/* WARNING: Removing unreachable block (ram,0x002d88c3) */

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

{
  undefined8 uVar1;
  wchar_t *__s1;
  undefined1 auVar2 [16];
  undefined8 *in_stack_00000018;
  wchar_t *local_88;
  size_t local_80;
  undefined8 local_78 [2];
  long local_68;
  long local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
                    /* try { // try from 002d8885 to 002d8889 has its CatchHandler @ 002d89d3 */
  auVar2 = FUN_002df540(*(undefined8 *)(param_1 + 0x10));
  if (local_48 == (code *)0x0) {
                    /* WARNING: Subroutine does not return */
    FUN_002e11f0("uninitialized __any_string");
  }
  local_88 = (wchar_t *)local_78;
                    /* try { // try from 002d8914 to 002d89d2 has its CatchHandler @ 002d89d3 */
  FUN_002a8fc0(&local_88,local_68,local_68 + local_60 * 4);
  __s1 = (wchar_t *)*in_stack_00000018;
  if (local_88 == (wchar_t *)local_78) {
    if (local_80 != 0) {
      if (local_80 == 1) {
        *__s1 = (wchar_t)local_78[0];
      }
      else {
        wmemcpy(__s1,local_88,local_80);
        __s1 = (wchar_t *)*in_stack_00000018;
      }
    }
    in_stack_00000018[1] = local_80;
    __s1[local_80] = L'\0';
    __s1 = local_88;
    uVar1 = local_78[0];
  }
  else {
    if (__s1 == (wchar_t *)(in_stack_00000018 + 2)) {
      *in_stack_00000018 = local_88;
      in_stack_00000018[1] = local_80;
      in_stack_00000018[2] = local_78[0];
      goto LAB_002d8974;
    }
    uVar1 = in_stack_00000018[2];
    *in_stack_00000018 = local_88;
    in_stack_00000018[1] = local_80;
    in_stack_00000018[2] = local_78[0];
    if (__s1 == (wchar_t *)0x0) goto LAB_002d8974;
  }
  local_78[0] = uVar1;
  local_88 = __s1;
  local_80 = 0;
  *local_88 = L'\0';
  if (local_88 != (wchar_t *)local_78) {
    FUN_002a2980();
  }
LAB_002d8974:
  if (local_48 != (code *)0x0) {
    (*local_48)(&local_68);
  }
  auVar2._8_8_ = param_3 & 0xffffffff00000000 | auVar2._8_8_ & 0xffffffff;
  return auVar2;
}

