
/* WARNING: Removing unreachable block (ram,0x002d2d54) */
/* std::collate<wchar_t>::do_compare(wchar_t const*, wchar_t const*, wchar_t const*, wchar_t const*)
   const */

int __thiscall
std::collate<wchar_t>::do_compare
          (collate<wchar_t> *this,wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,
          wchar_t *param_4)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  int iVar3;
  size_t sVar4;
  wchar_t *pwVar5;
  wchar_t *pwVar6;
  long local_70;
  wchar_t local_68 [4];
  wchar_t *local_58;
  long local_50;
  wchar_t local_48 [6];
  
  pwVar5 = local_68;
  std::wstring::_M_construct<wchar_t_const*>();
  local_58 = local_48;
                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */
  std::wstring::_M_construct<wchar_t_const*>(&local_58,param_3,param_4);
  pwVar1 = pwVar5 + local_70;
  pwVar2 = local_58 + local_50;
  pwVar6 = local_58;
  do {
    iVar3 = _M_compare(this,pwVar5,pwVar6);
    if (iVar3 != 0) {
LAB_002d2d2a:
      if (local_58 != local_48) {
        operator_delete(local_58);
      }
      return iVar3;
    }
    sVar4 = wcslen(pwVar5);
    pwVar5 = pwVar5 + sVar4;
    sVar4 = wcslen(pwVar6);
    pwVar6 = pwVar6 + sVar4;
    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;
    if (pwVar1 == pwVar5) {
      iVar3 = -1;
      goto LAB_002d2d2a;
    }
    if (pwVar2 == pwVar6) {
      iVar3 = 1;
      goto LAB_002d2d2a;
    }
    pwVar5 = pwVar5 + 1;
    pwVar6 = pwVar6 + 1;
  } while( true );
}



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

int FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                undefined8 param_5)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  int iVar3;
  size_t sVar4;
  wchar_t *pwVar5;
  wchar_t *pwVar6;
  long local_70;
  wchar_t local_68 [4];
  wchar_t *local_58;
  long local_50;
  wchar_t local_48 [6];
  
  pwVar5 = local_68;
  FUN_0027d360();
  local_58 = local_48;
                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */
  FUN_0027d360(&local_58,param_4,param_5);
  pwVar1 = pwVar5 + local_70;
  pwVar2 = local_58 + local_50;
  pwVar6 = local_58;
  do {
    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);
    if (iVar3 != 0) {
LAB_002d2d2a:
      if (local_58 != local_48) {
        FUN_00276d20();
      }
      return iVar3;
    }
    sVar4 = wcslen(pwVar5);
    pwVar5 = pwVar5 + sVar4;
    sVar4 = wcslen(pwVar6);
    pwVar6 = pwVar6 + sVar4;
    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;
    if (pwVar1 == pwVar5) {
      iVar3 = -1;
      goto LAB_002d2d2a;
    }
    if (pwVar2 == pwVar6) {
      iVar3 = 1;
      goto LAB_002d2d2a;
    }
    pwVar5 = pwVar5 + 1;
    pwVar6 = pwVar6 + 1;
  } while( true );
}


PUSH R15
MOV R15,RDI
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,R8
PUSH RBX
MOV RBX,RCX
SUB RSP,0x58
LEA RDI,[RSP + 0x10]
LEA RAX,[RDI + 0x10]
MOV qword ptr [RSP],RDI
MOV qword ptr [RSP + 0x10],RAX
CALL 0x0027d360
LEA RDI,[RSP + 0x30]
MOV RDX,RBP
MOV RSI,RBX
LEA RAX,[RDI + 0x10]
MOV qword ptr [RSP + 0x8],RDI
MOV qword ptr [RSP + 0x30],RAX
CALL 0x0027d360
MOV RAX,qword ptr [RSP + 0x18]
MOV RBX,qword ptr [RSP + 0x10]
MOV RBP,qword ptr [RSP + 0x30]
LEA R13,[RBX + RAX*0x4]
MOV RAX,qword ptr [RSP + 0x38]
LEA R14,[RBP + RAX*0x4]
JMP 0x002d2d15
MOV RDI,RBX
CALL 0x0013e150
MOV RDI,RBP
LEA RBX,[RBX + RAX*0x4]
CALL 0x0013e150
LEA RBP,[RBP + RAX*0x4]
CMP R13,RBX
JNZ 0x002d2d03
CMP R14,RBP
JZ 0x002d2d2a
CMP R13,RBX
JZ 0x002d2d70
CMP R14,RBP
JZ 0x002d2d80
ADD RBX,0x4
ADD RBP,0x4
MOV RDX,RBP
MOV RSI,RBX
MOV RDI,R15
CALL 0x003018c0
MOV R12D,EAX
TEST EAX,EAX
JZ 0x002d2ce0
MOV RAX,qword ptr [RSP + 0x8]
MOV RDI,qword ptr [RSP + 0x30]
ADD RAX,0x10
CMP RDI,RAX
JZ 0x002d2d42
CALL 0x00276d20
MOV RAX,qword ptr [RSP]
MOV RDI,qword ptr [RSP + 0x10]
ADD RAX,0x10
CMP RDI,RAX
JZ 0x002d2d59
CALL 0x00276d20
ADD RSP,0x58
MOV EAX,R12D
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R12D,0xffffffff
JMP 0x002d2d2a
MOV R12D,0x1
JMP 0x002d2d2a
(translation_unit "/* WARNING: Removing unreachable block (ram,0x002d2d54) */\n\nint FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  FUN_0027d360();\n  local_58 = local_48;\n                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */\n  FUN_0027d360(&local_58,param_4,param_5);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}\n\n" comment (function_definition "int FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  FUN_0027d360();\n  local_58 = local_48;\n                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */\n  FUN_0027d360(&local_58,param_4,param_5);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}" primitive_type (function_declarator "FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  FUN_0027d360();\n  local_58 = local_48;\n                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */\n  FUN_0027d360(&local_58,param_4,param_5);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "wchar_t *pwVar5;" type_identifier (pointer_declarator "*pwVar5" * identifier) ;) (declaration "wchar_t *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "wchar_t local_68 [4];" type_identifier (array_declarator "local_68 [4]" identifier [ number_literal ]) ;) (declaration "wchar_t *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "wchar_t local_48 [6];" type_identifier (array_declarator "local_48 [6]" identifier [ number_literal ]) ;) (expression_statement "pwVar5 = local_68;" (assignment_expression "pwVar5 = local_68" identifier = identifier) ;) (expression_statement "FUN_0027d360();" (call_expression "FUN_0027d360()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) comment (expression_statement "FUN_0027d360(&local_58,param_4,param_5);" (call_expression "FUN_0027d360(&local_58,param_4,param_5)" identifier (argument_list "(&local_58,param_4,param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "pwVar1 = pwVar5 + local_70;" (assignment_expression "pwVar1 = pwVar5 + local_70" identifier = (binary_expression "pwVar5 + local_70" identifier + identifier)) ;) (expression_statement "pwVar2 = local_58 + local_50;" (assignment_expression "pwVar2 = local_58 + local_50" identifier = (binary_expression "local_58 + local_50" identifier + identifier)) ;) (expression_statement "pwVar6 = local_58;" (assignment_expression "pwVar6 = local_58" identifier = identifier) ;) (do_statement "do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );" do (compound_statement "{\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  }" { (expression_statement "iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);" (assignment_expression "iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6)" identifier = (call_expression "FUN_003018c0(param_1,pwVar5,pwVar6)" identifier (argument_list "(param_1,pwVar5,pwVar6)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }" { (labeled_statement "LAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }" statement_identifier : (if_statement "if (local_58 != local_48) {\n        FUN_00276d20();\n      }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n        FUN_00276d20();\n      }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })) (expression_statement "sVar4 = wcslen(pwVar5);" (assignment_expression "sVar4 = wcslen(pwVar5)" identifier = (call_expression "wcslen(pwVar5)" identifier (argument_list "(pwVar5)" ( identifier )))) ;) (expression_statement "pwVar5 = pwVar5 + sVar4;" (assignment_expression "pwVar5 = pwVar5 + sVar4" identifier = (binary_expression "pwVar5 + sVar4" identifier + identifier)) ;) (expression_statement "sVar4 = wcslen(pwVar6);" (assignment_expression "sVar4 = wcslen(pwVar6)" identifier = (call_expression "wcslen(pwVar6)" identifier (argument_list "(pwVar6)" ( identifier )))) ;) (expression_statement "pwVar6 = pwVar6 + sVar4;" (assignment_expression "pwVar6 = pwVar6 + sVar4" identifier = (binary_expression "pwVar6 + sVar4" identifier + identifier)) ;) (if_statement "if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;" if (parenthesized_expression "((pwVar1 == pwVar5) && (pwVar2 == pwVar6))" ( (binary_expression "(pwVar1 == pwVar5) && (pwVar2 == pwVar6)" (parenthesized_expression "(pwVar1 == pwVar5)" ( (binary_expression "pwVar1 == pwVar5" identifier == identifier) )) && (parenthesized_expression "(pwVar2 == pwVar6)" ( (binary_expression "pwVar2 == pwVar6" identifier == identifier) ))) )) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;)) (if_statement "if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }" if (parenthesized_expression "(pwVar1 == pwVar5)" ( (binary_expression "pwVar1 == pwVar5" identifier == identifier) )) (compound_statement "{\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }" { (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" identifier = number_literal) ;) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;) })) (if_statement "if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }" if (parenthesized_expression "(pwVar2 == pwVar6)" ( (binary_expression "pwVar2 == pwVar6" identifier == identifier) )) (compound_statement "{\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;) })) (expression_statement "pwVar5 = pwVar5 + 1;" (assignment_expression "pwVar5 = pwVar5 + 1" identifier = (binary_expression "pwVar5 + 1" identifier + number_literal)) ;) (expression_statement "pwVar6 = pwVar6 + 1;" (assignment_expression "pwVar6 = pwVar6 + 1" identifier = (binary_expression "pwVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x002d2d54) */\n/* std::collate<wchar_t>::do_compare(wchar_t const*, wchar_t const*, wchar_t const*, wchar_t const*)\n   const */\n\nint __thiscall\nstd::collate<wchar_t>::do_compare\n          (collate<wchar_t> *this,wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,\n          wchar_t *param_4)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  std::wstring::_M_construct<wchar_t_const*>();\n  local_58 = local_48;\n                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */\n  std::wstring::_M_construct<wchar_t_const*>(&local_58,param_3,param_4);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = _M_compare(this,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        operator_delete(local_58);\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}\n\n" comment comment (function_definition "int __thiscall\nstd::collate<wchar_t>::do_compare\n          (collate<wchar_t> *this,wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,\n          wchar_t *param_4)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  std::wstring::_M_construct<wchar_t_const*>();\n  local_58 = local_48;\n                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */\n  std::wstring::_M_construct<wchar_t_const*>(&local_58,param_3,param_4);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = _M_compare(this,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        operator_delete(local_58);\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::collate<wchar_t>::" identifier : : identifier < identifier > : :) (function_declarator "do_compare\n          (collate<wchar_t> *this,wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,\n          wchar_t *param_4)" identifier (parameter_list "(collate<wchar_t> *this,wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,\n          wchar_t *param_4)" ( (parameter_declaration "collate<wchar_t> *this" type_identifier (ERROR "<wchar_t>" < identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "wchar_t *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "wchar_t *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "wchar_t *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "wchar_t *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  std::wstring::_M_construct<wchar_t_const*>();\n  local_58 = local_48;\n                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */\n  std::wstring::_M_construct<wchar_t_const*>(&local_58,param_3,param_4);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = _M_compare(this,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        operator_delete(local_58);\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "wchar_t *pwVar5;" type_identifier (pointer_declarator "*pwVar5" * identifier) ;) (declaration "wchar_t *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "wchar_t local_68 [4];" type_identifier (array_declarator "local_68 [4]" identifier [ number_literal ]) ;) (declaration "wchar_t *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "wchar_t local_48 [6];" type_identifier (array_declarator "local_48 [6]" identifier [ number_literal ]) ;) (expression_statement "pwVar5 = local_68;" (assignment_expression "pwVar5 = local_68" identifier = identifier) ;) (labeled_statement "std::wstring::_M_construct<wchar_t_const*>();" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_construct<wchar_t_const*>();" statement_identifier : (ERROR ":" :) (expression_statement "_M_construct<wchar_t_const*>();" (binary_expression "_M_construct<wchar_t_const" identifier < identifier) (ERROR "*>()" * > ( )) ;))) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) comment (labeled_statement "std::wstring::_M_construct<wchar_t_const*>(&local_58,param_3,param_4);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_construct<wchar_t_const*>(&local_58,param_3,param_4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_construct<wchar_t_const*>(&local_58,param_3,param_4);" (binary_expression "_M_construct<wchar_t_const*>(&local_58,param_3,param_4)" (binary_expression "_M_construct<wchar_t_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_58,param_3,param_4)" ( (comma_expression "&local_58,param_3,param_4" (pointer_expression "&local_58" & identifier) , (comma_expression "param_3,param_4" identifier , identifier)) ))) ;))) (expression_statement "pwVar1 = pwVar5 + local_70;" (assignment_expression "pwVar1 = pwVar5 + local_70" identifier = (binary_expression "pwVar5 + local_70" identifier + identifier)) ;) (expression_statement "pwVar2 = local_58 + local_50;" (assignment_expression "pwVar2 = local_58 + local_50" identifier = (binary_expression "local_58 + local_50" identifier + identifier)) ;) (expression_statement "pwVar6 = local_58;" (assignment_expression "pwVar6 = local_58" identifier = identifier) ;) (do_statement "do {\n    iVar3 = _M_compare(this,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        operator_delete(local_58);\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );" do (compound_statement "{\n    iVar3 = _M_compare(this,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        operator_delete(local_58);\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  }" { (expression_statement "iVar3 = _M_compare(this,pwVar5,pwVar6);" (assignment_expression "iVar3 = _M_compare(this,pwVar5,pwVar6)" identifier = (call_expression "_M_compare(this,pwVar5,pwVar6)" identifier (argument_list "(this,pwVar5,pwVar6)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        operator_delete(local_58);\n      }\n      return iVar3;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        operator_delete(local_58);\n      }\n      return iVar3;\n    }" { (labeled_statement "LAB_002d2d2a:\n      if (local_58 != local_48) {\n        operator_delete(local_58);\n      }" statement_identifier : (if_statement "if (local_58 != local_48) {\n        operator_delete(local_58);\n      }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n        operator_delete(local_58);\n      }" { (expression_statement "operator_delete(local_58);" (call_expression "operator_delete(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })) (expression_statement "sVar4 = wcslen(pwVar5);" (assignment_expression "sVar4 = wcslen(pwVar5)" identifier = (call_expression "wcslen(pwVar5)" identifier (argument_list "(pwVar5)" ( identifier )))) ;) (expression_statement "pwVar5 = pwVar5 + sVar4;" (assignment_expression "pwVar5 = pwVar5 + sVar4" identifier = (binary_expression "pwVar5 + sVar4" identifier + identifier)) ;) (expression_statement "sVar4 = wcslen(pwVar6);" (assignment_expression "sVar4 = wcslen(pwVar6)" identifier = (call_expression "wcslen(pwVar6)" identifier (argument_list "(pwVar6)" ( identifier )))) ;) (expression_statement "pwVar6 = pwVar6 + sVar4;" (assignment_expression "pwVar6 = pwVar6 + sVar4" identifier = (binary_expression "pwVar6 + sVar4" identifier + identifier)) ;) (if_statement "if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;" if (parenthesized_expression "((pwVar1 == pwVar5) && (pwVar2 == pwVar6))" ( (binary_expression "(pwVar1 == pwVar5) && (pwVar2 == pwVar6)" (parenthesized_expression "(pwVar1 == pwVar5)" ( (binary_expression "pwVar1 == pwVar5" identifier == identifier) )) && (parenthesized_expression "(pwVar2 == pwVar6)" ( (binary_expression "pwVar2 == pwVar6" identifier == identifier) ))) )) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;)) (if_statement "if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }" if (parenthesized_expression "(pwVar1 == pwVar5)" ( (binary_expression "pwVar1 == pwVar5" identifier == identifier) )) (compound_statement "{\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }" { (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" identifier = number_literal) ;) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;) })) (if_statement "if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }" if (parenthesized_expression "(pwVar2 == pwVar6)" ( (binary_expression "pwVar2 == pwVar6" identifier == identifier) )) (compound_statement "{\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;) })) (expression_statement "pwVar5 = pwVar5 + 1;" (assignment_expression "pwVar5 = pwVar5 + 1" identifier = (binary_expression "pwVar5 + 1" identifier + number_literal)) ;) (expression_statement "pwVar6 = pwVar6 + 1;" (assignment_expression "pwVar6 = pwVar6 + 1" identifier = (binary_expression "pwVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  FUN_0027d360();\n  local_58 = local_48;\n                    \n  FUN_0027d360(&local_58,param_4,param_5);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}\n\n" (function_definition "int FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  FUN_0027d360();\n  local_58 = local_48;\n                    \n  FUN_0027d360(&local_58,param_4,param_5);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}" primitive_type (function_declarator "FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  FUN_0027d360();\n  local_58 = local_48;\n                    \n  FUN_0027d360(&local_58,param_4,param_5);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "wchar_t *pwVar5;" type_identifier (pointer_declarator "*pwVar5" * identifier) ;) (declaration "wchar_t *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "wchar_t local_68 [4];" type_identifier (array_declarator "local_68 [4]" identifier [ number_literal ]) ;) (declaration "wchar_t *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "wchar_t local_48 [6];" type_identifier (array_declarator "local_48 [6]" identifier [ number_literal ]) ;) (expression_statement "pwVar5 = local_68;" (assignment_expression "pwVar5 = local_68" identifier = identifier) ;) (expression_statement "FUN_0027d360();" (call_expression "FUN_0027d360()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "FUN_0027d360(&local_58,param_4,param_5);" (call_expression "FUN_0027d360(&local_58,param_4,param_5)" identifier (argument_list "(&local_58,param_4,param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "pwVar1 = pwVar5 + local_70;" (assignment_expression "pwVar1 = pwVar5 + local_70" identifier = (binary_expression "pwVar5 + local_70" identifier + identifier)) ;) (expression_statement "pwVar2 = local_58 + local_50;" (assignment_expression "pwVar2 = local_58 + local_50" identifier = (binary_expression "local_58 + local_50" identifier + identifier)) ;) (expression_statement "pwVar6 = local_58;" (assignment_expression "pwVar6 = local_58" identifier = identifier) ;) (do_statement "do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );" do (compound_statement "{\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  }" { (expression_statement "iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);" (assignment_expression "iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6)" identifier = (call_expression "FUN_003018c0(param_1,pwVar5,pwVar6)" identifier (argument_list "(param_1,pwVar5,pwVar6)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }" { (labeled_statement "LAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }" statement_identifier : (if_statement "if (local_58 != local_48) {\n        FUN_00276d20();\n      }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n        FUN_00276d20();\n      }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })) (expression_statement "sVar4 = wcslen(pwVar5);" (assignment_expression "sVar4 = wcslen(pwVar5)" identifier = (call_expression "wcslen(pwVar5)" identifier (argument_list "(pwVar5)" ( identifier )))) ;) (expression_statement "pwVar5 = pwVar5 + sVar4;" (assignment_expression "pwVar5 = pwVar5 + sVar4" identifier = (binary_expression "pwVar5 + sVar4" identifier + identifier)) ;) (expression_statement "sVar4 = wcslen(pwVar6);" (assignment_expression "sVar4 = wcslen(pwVar6)" identifier = (call_expression "wcslen(pwVar6)" identifier (argument_list "(pwVar6)" ( identifier )))) ;) (expression_statement "pwVar6 = pwVar6 + sVar4;" (assignment_expression "pwVar6 = pwVar6 + sVar4" identifier = (binary_expression "pwVar6 + sVar4" identifier + identifier)) ;) (if_statement "if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;" if (parenthesized_expression "((pwVar1 == pwVar5) && (pwVar2 == pwVar6))" ( (binary_expression "(pwVar1 == pwVar5) && (pwVar2 == pwVar6)" (parenthesized_expression "(pwVar1 == pwVar5)" ( (binary_expression "pwVar1 == pwVar5" identifier == identifier) )) && (parenthesized_expression "(pwVar2 == pwVar6)" ( (binary_expression "pwVar2 == pwVar6" identifier == identifier) ))) )) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;)) (if_statement "if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }" if (parenthesized_expression "(pwVar1 == pwVar5)" ( (binary_expression "pwVar1 == pwVar5" identifier == identifier) )) (compound_statement "{\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }" { (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" identifier = number_literal) ;) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;) })) (if_statement "if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }" if (parenthesized_expression "(pwVar2 == pwVar6)" ( (binary_expression "pwVar2 == pwVar6" identifier == identifier) )) (compound_statement "{\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_002d2d2a;" goto statement_identifier ;) })) (expression_statement "pwVar5 = pwVar5 + 1;" (assignment_expression "pwVar5 = pwVar5 + 1" identifier = (binary_expression "pwVar5 + 1" identifier + number_literal)) ;) (expression_statement "pwVar6 = pwVar6 + 1;" (assignment_expression "pwVar6 = pwVar6 + 1" identifier = (binary_expression "pwVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  FUN_0027d360();\n  local_58 = local_48;\n                    \n  FUN_0027d360(&local_58,param_4,param_5);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_002d2c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)" (identifier "FUN_002d2c70") (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                undefined8 param_5)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) () ")"))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  int iVar3;\n  size_t sVar4;\n  wchar_t *pwVar5;\n  wchar_t *pwVar6;\n  long local_70;\n  wchar_t local_68 [4];\n  wchar_t *local_58;\n  long local_50;\n  wchar_t local_48 [6];\n  \n  pwVar5 = local_68;\n  FUN_0027d360();\n  local_58 = local_48;\n                    \n  FUN_0027d360(&local_58,param_4,param_5);\n  pwVar1 = pwVar5 + local_70;\n  pwVar2 = local_58 + local_50;\n  pwVar6 = local_58;\n  do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );\n}" ({ "{") (declaration "wchar_t *pwVar1;" (type_identifier "wchar_t") (pointer_declarator "*pwVar1" (* "*") (identifier "pwVar1")) (; ";")) (declaration "wchar_t *pwVar2;" (type_identifier "wchar_t") (pointer_declarator "*pwVar2" (* "*") (identifier "pwVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "wchar_t *pwVar5;" (type_identifier "wchar_t") (pointer_declarator "*pwVar5" (* "*") (identifier "pwVar5")) (; ";")) (declaration "wchar_t *pwVar6;" (type_identifier "wchar_t") (pointer_declarator "*pwVar6" (* "*") (identifier "pwVar6")) (; ";")) (declaration "long local_70;" (sized_type_specifier "long" (long "long")) (identifier "local_70") (; ";")) (declaration "wchar_t local_68 [4];" (type_identifier "wchar_t") (array_declarator "local_68 [4]" (identifier "local_68") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "wchar_t *local_58;" (type_identifier "wchar_t") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "wchar_t local_48 [6];" (type_identifier "wchar_t") (array_declarator "local_48 [6]" (identifier "local_48") ([ "[") (number_literal "6") (] "]")) (; ";")) (expression_statement "pwVar5 = local_68;" (assignment_expression "pwVar5 = local_68" (identifier "pwVar5") (= "=") (identifier "local_68")) (; ";")) (expression_statement "FUN_0027d360();" (call_expression "FUN_0027d360()" (identifier "FUN_0027d360") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (expression_statement "FUN_0027d360(&local_58,param_4,param_5);" (call_expression "FUN_0027d360(&local_58,param_4,param_5)" (identifier "FUN_0027d360") (argument_list "(&local_58,param_4,param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")"))) (; ";")) (expression_statement "pwVar1 = pwVar5 + local_70;" (assignment_expression "pwVar1 = pwVar5 + local_70" (identifier "pwVar1") (= "=") (binary_expression "pwVar5 + local_70" (identifier "pwVar5") (+ "+") (identifier "local_70"))) (; ";")) (expression_statement "pwVar2 = local_58 + local_50;" (assignment_expression "pwVar2 = local_58 + local_50" (identifier "pwVar2") (= "=") (binary_expression "local_58 + local_50" (identifier "local_58") (+ "+") (identifier "local_50"))) (; ";")) (expression_statement "pwVar6 = local_58;" (assignment_expression "pwVar6 = local_58" (identifier "pwVar6") (= "=") (identifier "local_58")) (; ";")) (do_statement "do {\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  } while( true );" (do "do") (compound_statement "{\n    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);\n    if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }\n    sVar4 = wcslen(pwVar5);\n    pwVar5 = pwVar5 + sVar4;\n    sVar4 = wcslen(pwVar6);\n    pwVar6 = pwVar6 + sVar4;\n    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;\n    if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }\n    if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }\n    pwVar5 = pwVar5 + 1;\n    pwVar6 = pwVar6 + 1;\n  }" ({ "{") (expression_statement "iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);" (assignment_expression "iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6)" (identifier "iVar3") (= "=") (call_expression "FUN_003018c0(param_1,pwVar5,pwVar6)" (identifier "FUN_003018c0") (argument_list "(param_1,pwVar5,pwVar6)" (( "(") (identifier "param_1") (, ",") (identifier "pwVar5") (, ",") (identifier "pwVar6") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }\n      return iVar3;\n    }" ({ "{") (labeled_statement "LAB_002d2d2a:\n      if (local_58 != local_48) {\n        FUN_00276d20();\n      }" (statement_identifier "LAB_002d2d2a") (: ":") (if_statement "if (local_58 != local_48) {\n        FUN_00276d20();\n      }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n        FUN_00276d20();\n      }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (expression_statement "sVar4 = wcslen(pwVar5);" (assignment_expression "sVar4 = wcslen(pwVar5)" (identifier "sVar4") (= "=") (call_expression "wcslen(pwVar5)" (identifier "wcslen") (argument_list "(pwVar5)" (( "(") (identifier "pwVar5") () ")")))) (; ";")) (expression_statement "pwVar5 = pwVar5 + sVar4;" (assignment_expression "pwVar5 = pwVar5 + sVar4" (identifier "pwVar5") (= "=") (binary_expression "pwVar5 + sVar4" (identifier "pwVar5") (+ "+") (identifier "sVar4"))) (; ";")) (expression_statement "sVar4 = wcslen(pwVar6);" (assignment_expression "sVar4 = wcslen(pwVar6)" (identifier "sVar4") (= "=") (call_expression "wcslen(pwVar6)" (identifier "wcslen") (argument_list "(pwVar6)" (( "(") (identifier "pwVar6") () ")")))) (; ";")) (expression_statement "pwVar6 = pwVar6 + sVar4;" (assignment_expression "pwVar6 = pwVar6 + sVar4" (identifier "pwVar6") (= "=") (binary_expression "pwVar6 + sVar4" (identifier "pwVar6") (+ "+") (identifier "sVar4"))) (; ";")) (if_statement "if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;" (if "if") (parenthesized_expression "((pwVar1 == pwVar5) && (pwVar2 == pwVar6))" (( "(") (binary_expression "(pwVar1 == pwVar5) && (pwVar2 == pwVar6)" (parenthesized_expression "(pwVar1 == pwVar5)" (( "(") (binary_expression "pwVar1 == pwVar5" (identifier "pwVar1") (== "==") (identifier "pwVar5")) () ")")) (&& "&&") (parenthesized_expression "(pwVar2 == pwVar6)" (( "(") (binary_expression "pwVar2 == pwVar6" (identifier "pwVar2") (== "==") (identifier "pwVar6")) () ")"))) () ")")) (goto_statement "goto LAB_002d2d2a;" (goto "goto") (statement_identifier "LAB_002d2d2a") (; ";"))) (if_statement "if (pwVar1 == pwVar5) {\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }" (if "if") (parenthesized_expression "(pwVar1 == pwVar5)" (( "(") (binary_expression "pwVar1 == pwVar5" (identifier "pwVar1") (== "==") (identifier "pwVar5")) () ")")) (compound_statement "{\n      iVar3 = -1;\n      goto LAB_002d2d2a;\n    }" ({ "{") (expression_statement "iVar3 = -1;" (assignment_expression "iVar3 = -1" (identifier "iVar3") (= "=") (number_literal "-1")) (; ";")) (goto_statement "goto LAB_002d2d2a;" (goto "goto") (statement_identifier "LAB_002d2d2a") (; ";")) (} "}"))) (if_statement "if (pwVar2 == pwVar6) {\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }" (if "if") (parenthesized_expression "(pwVar2 == pwVar6)" (( "(") (binary_expression "pwVar2 == pwVar6" (identifier "pwVar2") (== "==") (identifier "pwVar6")) () ")")) (compound_statement "{\n      iVar3 = 1;\n      goto LAB_002d2d2a;\n    }" ({ "{") (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_002d2d2a;" (goto "goto") (statement_identifier "LAB_002d2d2a") (; ";")) (} "}"))) (expression_statement "pwVar5 = pwVar5 + 1;" (assignment_expression "pwVar5 = pwVar5 + 1" (identifier "pwVar5") (= "=") (binary_expression "pwVar5 + 1" (identifier "pwVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pwVar6 = pwVar6 + 1;" (assignment_expression "pwVar6 = pwVar6 + 1" (identifier "pwVar6") (= "=") (binary_expression "pwVar6 + 1" (identifier "pwVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Removing unreachable block (ram,0x002d2d54) */
/* std::collate<wchar_t>::do_compare(wchar_t const*, wchar_t const*, wchar_t const*, wchar_t const*)
   const */

int __thiscall
std::type_1<type_2>::function_1
          (type_1<type_2> *this,type_2 *param_1,type_2 *param_2,type_2 *param_3,
          type_2 *param_4)

{
  type_2 *var_14;
  type_2 *var_15;
  int var_8;
  size_t var_12;
  type_2 *var_3;
  type_2 *var_13;
  long var_4;
  type_2 local_68 [4];
  type_2 *var_5;
  long var_6;
  type_2 var_9 [6];
  
  var_3 = local_68;
  std::wstring::var_1<var_2*>();
  var_5 = var_9;
                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */
  std::wstring::var_1<var_2*>(&var_5,param_3,param_4);
  var_14 = var_3 + var_4;
  var_15 = var_5 + var_6;
  var_13 = var_5;
  do {
    var_8 = var_7(this,var_3,var_13);
    if (var_8 != 0) {
LAB_002d2d2a:
      if (var_5 != var_9) {
        var_10(var_5);
      }
      return var_8;
    }
    var_12 = var_11(var_3);
    var_3 = var_3 + var_12;
    var_12 = var_11(var_13);
    var_13 = var_13 + var_12;
    if ((var_14 == var_3) && (var_15 == var_13)) goto LAB_002d2d2a;
    if (var_14 == var_3) {
      var_8 = -1;
      goto LAB_002d2d2a;
    }
    if (var_15 == var_13) {
      var_8 = 1;
      goto LAB_002d2d2a;
    }
    var_3 = var_3 + 1;
    var_13 = var_13 + 1;
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) 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: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (true))))))

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

int MASKED(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                undefined8 param_5)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  int iVar3;
  size_t sVar4;
  wchar_t *pwVar5;
  wchar_t *pwVar6;
  long local_70;
  wchar_t local_68 [4];
  wchar_t *local_58;
  long local_50;
  wchar_t local_48 [6];
  
  pwVar5 = local_68;
  FUN_0027d360();
  local_58 = local_48;
                    /* try { // try from 002d2cb7 to 002d2cbb has its CatchHandler @ 002d2d88 */
  FUN_0027d360(&local_58,param_4,param_5);
  pwVar1 = pwVar5 + local_70;
  pwVar2 = local_58 + local_50;
  pwVar6 = local_58;
  do {
    iVar3 = FUN_003018c0(param_1,pwVar5,pwVar6);
    if (iVar3 != 0) {
LAB_002d2d2a:
      if (local_58 != local_48) {
        FUN_00276d20();
      }
      return iVar3;
    }
    sVar4 = wcslen(pwVar5);
    pwVar5 = pwVar5 + sVar4;
    sVar4 = wcslen(pwVar6);
    pwVar6 = pwVar6 + sVar4;
    if ((pwVar1 == pwVar5) && (pwVar2 == pwVar6)) goto LAB_002d2d2a;
    if (pwVar1 == pwVar5) {
      iVar3 = -1;
      goto LAB_002d2d2a;
    }
    if (pwVar2 == pwVar6) {
      iVar3 = 1;
      goto LAB_002d2d2a;
    }
    pwVar5 = pwVar5 + 1;
    pwVar6 = pwVar6 + 1;
  } while( true );
}

