
/* std::ios_base::failure[abi:cxx11]::failure(char const*, std::error_code const&) */

void __thiscall
std::ios_base::failure[abi:cxx11]::failure
          (failure_abi_cxx11_ *this,char *param_1,error_code *param_2)

{
  int iVar1;
  long *plVar2;
  long *plVar3;
  size_t sVar4;
  undefined1 *local_98;
  undefined8 local_90;
  undefined1 local_88 [16];
  long *local_78;
  long local_70;
  long local_68;
  long lStack_60;
  long *local_58;
  long local_50;
  long local_48;
  long lStack_40;
  
  plVar2 = *(long **)(param_2 + 8);
  iVar1 = *(int *)param_2;
  if (*(code **)(*plVar2 + 0x20) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_)
  {
    local_98 = local_88;
    local_88[0] = 0;
    local_90 = 0;
    if (iVar1 == 1) {
                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */
      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);
    }
    else {
                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */
      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);
    }
  }
  else {
    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);
  }
                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */
  plVar3 = (long *)std::string::_M_replace((string *)&local_98,0,0,": ",2);
  local_78 = &local_68;
  if ((long *)*plVar3 == plVar3 + 2) {
    local_68 = plVar3[2];
    lStack_60 = plVar3[3];
  }
  else {
    local_68 = plVar3[2];
    local_78 = (long *)*plVar3;
  }
  local_70 = plVar3[1];
  *(undefined1 *)(plVar3 + 2) = 0;
  *plVar3 = (long)(plVar3 + 2);
  plVar3[1] = 0;
  sVar4 = strlen(param_1);
                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */
  plVar3 = (long *)std::string::_M_replace((string *)&local_78,0,0,param_1,sVar4);
  local_58 = &local_48;
  if ((long *)*plVar3 == plVar3 + 2) {
    local_48 = plVar3[2];
    lStack_40 = plVar3[3];
  }
  else {
    local_48 = plVar3[2];
    local_58 = (long *)*plVar3;
  }
  local_50 = plVar3[1];
  *(undefined1 *)(plVar3 + 2) = 0;
  *plVar3 = (long)(plVar3 + 2);
  plVar3[1] = 0;
                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */
  runtime_error::runtime_error((runtime_error *)this,(string *)&local_58);
  if (local_58 != &local_48) {
    operator_delete(local_58);
  }
  if (local_78 != &local_68) {
    operator_delete(local_78);
  }
  if (local_98 != local_88) {
    operator_delete(local_98);
  }
  *(int *)(this + 0x10) = iVar1;
  *(long **)(this + 0x18) = plVar2;
  *(undefined ***)this = &PTR__failure_003ba7a0;
  return;
}



void FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)

{
  int iVar1;
  long *plVar2;
  long *plVar3;
  size_t sVar4;
  undefined1 *local_98;
  undefined8 local_90;
  undefined1 local_88 [16];
  long *local_78;
  long local_70;
  long local_68;
  long lStack_60;
  long *local_58;
  long local_50;
  long local_48;
  long lStack_40;
  
  plVar2 = *(long **)(param_3 + 2);
  iVar1 = *param_3;
  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {
    local_98 = local_88;
    local_88[0] = 0;
    local_90 = 0;
    if (iVar1 == 1) {
                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */
      FUN_0027e650(&local_98,0,0,"iostream error",0xe);
    }
    else {
                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */
      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);
    }
  }
  else {
    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);
  }
                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */
  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);
  local_78 = &local_68;
  if ((long *)*plVar3 == plVar3 + 2) {
    local_68 = plVar3[2];
    lStack_60 = plVar3[3];
  }
  else {
    local_68 = plVar3[2];
    local_78 = (long *)*plVar3;
  }
  local_70 = plVar3[1];
  *(undefined1 *)(plVar3 + 2) = 0;
  *plVar3 = (long)(plVar3 + 2);
  plVar3[1] = 0;
  sVar4 = strlen(param_2);
                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */
  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);
  local_58 = &local_48;
  if ((long *)*plVar3 == plVar3 + 2) {
    local_48 = plVar3[2];
    lStack_40 = plVar3[3];
  }
  else {
    local_48 = plVar3[2];
    local_58 = (long *)*plVar3;
  }
  local_50 = plVar3[1];
  *(undefined1 *)(plVar3 + 2) = 0;
  *plVar3 = (long)(plVar3 + 2);
  plVar3[1] = 0;
                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */
  FUN_002f3b30(param_1,&local_58);
  if (local_58 != &local_48) {
    FUN_00276d20();
  }
  if (local_78 != &local_68) {
    FUN_00276d20();
  }
  if (local_98 != local_88) {
    FUN_00276d20();
  }
  *(int *)(param_1 + 2) = iVar1;
  param_1[3] = plVar2;
  *param_1 = &PTR_FUN_003ba7a0;
  return;
}


PUSH R15
PUSH R14
PUSH R13
MOV R13,RDI
PUSH R12
MOV R12,RSI
PUSH RBP
PUSH RBX
SUB RSP,0x68
MOV R14,qword ptr [RDX + 0x8]
MOV R15D,dword ptr [RDX]
LEA RDX,[0x2afda0]
MOV RBX,RSP
MOV RAX,qword ptr [R14]
MOV RAX,qword ptr [RAX + 0x20]
CMP RAX,RDX
JNZ 0x002b0530
LEA RAX,[RBX + 0x10]
MOV byte ptr [RSP + 0x10],0x0
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x8],0x0
CMP R15D,0x1
JZ 0x002b0510
MOV R8D,0xd
XOR EDX,EDX
XOR ESI,ESI
MOV RDI,RBX
LEA RCX,[0x32a584]
CALL 0x0027e650
MOV R8D,0x2
XOR EDX,EDX
XOR ESI,ESI
MOV RDI,RBX
LEA RCX,[0x3244cd]
CALL 0x0027e650
LEA RBP,[RSP + 0x20]
LEA RDX,[RBP + 0x10]
MOV qword ptr [RSP + 0x20],RDX
MOV RCX,qword ptr [RAX]
LEA RDX,[RAX + 0x10]
CMP RCX,RDX
JZ 0x002b04e8
MOV qword ptr [RSP + 0x20],RCX
MOV RCX,qword ptr [RAX + 0x10]
MOV qword ptr [RSP + 0x30],RCX
MOV RCX,qword ptr [RAX + 0x8]
MOV byte ptr [RAX + 0x10],0x0
MOV RDI,R12
MOV qword ptr [RSP + 0x28],RCX
MOV qword ptr [RAX],RDX
MOV qword ptr [RAX + 0x8],0x0
CALL 0x0013e490
MOV RCX,R12
XOR EDX,EDX
XOR ESI,ESI
MOV R8,RAX
MOV RDI,RBP
CALL 0x0027e650
LEA R12,[RSP + 0x40]
LEA RDX,[R12 + 0x10]
MOV qword ptr [RSP + 0x40],RDX
MOV RCX,qword ptr [RAX]
LEA RDX,[RAX + 0x10]
CMP RCX,RDX
JZ 0x002b0500
MOV qword ptr [RSP + 0x40],RCX
MOV RCX,qword ptr [RAX + 0x10]
MOV qword ptr [RSP + 0x50],RCX
MOV RCX,qword ptr [RAX + 0x8]
MOV byte ptr [RAX + 0x10],0x0
MOV RSI,R12
MOV RDI,R13
MOV qword ptr [RSP + 0x48],RCX
MOV qword ptr [RAX],RDX
MOV qword ptr [RAX + 0x8],0x0
CALL 0x002f3b30
MOV RDI,qword ptr [RSP + 0x40]
ADD R12,0x10
CMP RDI,R12
JZ 0x002b0498
CALL 0x00276d20
MOV RDI,qword ptr [RSP + 0x20]
ADD RBP,0x10
CMP RDI,RBP
JZ 0x002b04ab
CALL 0x00276d20
MOV RDI,qword ptr [RSP]
ADD RBX,0x10
CMP RDI,RBX
JZ 0x002b04bd
CALL 0x00276d20
LEA RAX,[0x3ba790]
MOV dword ptr [R13 + 0x10],R15D
MOV qword ptr [R13 + 0x18],R14
ADD RAX,0x10
MOV qword ptr [R13],RAX
ADD RSP,0x68
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOVDQU XMM0,xmmword ptr [RAX + 0x10]
MOVAPS xmmword ptr [RSP + 0x30],XMM0
JMP 0x002b0403
MOVDQU XMM1,xmmword ptr [RAX + 0x10]
MOVAPS xmmword ptr [RSP + 0x50],XMM1
JMP 0x002b0462
MOV R8D,0xe
XOR EDX,EDX
XOR ESI,ESI
MOV RDI,RBX
LEA RCX,[0x32a575]
CALL 0x0027e650
JMP 0x002b03be
MOV EDX,R15D
MOV RSI,R14
MOV RDI,RBX
CALL RAX
JMP 0x002b03be
(translation_unit "void FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)\n\n{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_3 + 2);\n  iVar1 = *param_3;\n  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */\n  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_2);\n                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */\n  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */\n  FUN_002f3b30(param_1,&local_58);\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\n  }\n  if (local_98 != local_88) {\n    FUN_00276d20();\n  }\n  *(int *)(param_1 + 2) = iVar1;\n  param_1[3] = plVar2;\n  *param_1 = &PTR_FUN_003ba7a0;\n  return;\n}\n\n" (function_definition "void FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)\n\n{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_3 + 2);\n  iVar1 = *param_3;\n  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */\n  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_2);\n                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */\n  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */\n  FUN_002f3b30(param_1,&local_58);\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\n  }\n  if (local_98 != local_88) {\n    FUN_00276d20();\n  }\n  *(int *)(param_1 + 2) = iVar1;\n  param_1[3] = plVar2;\n  *param_1 = &PTR_FUN_003ba7a0;\n  return;\n}" primitive_type (function_declarator "FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)" identifier (parameter_list "(undefined8 *param_1,char *param_2,int *param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_3 + 2);\n  iVar1 = *param_3;\n  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */\n  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_2);\n                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */\n  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */\n  FUN_002f3b30(param_1,&local_58);\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\n  }\n  if (local_98 != local_88) {\n    FUN_00276d20();\n  }\n  *(int *)(param_1 + 2) = iVar1;\n  param_1[3] = plVar2;\n  *param_1 = &PTR_FUN_003ba7a0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "undefined1 *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "undefined8 local_90;" type_identifier identifier ;) (declaration "undefined1 local_88 [16];" type_identifier (array_declarator "local_88 [16]" identifier [ number_literal ]) ;) (declaration "long *local_78;" (sized_type_specifier "long" long) (pointer_declarator "*local_78" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_68;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_60;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar2 = *(long **)(param_3 + 2);" (assignment_expression "plVar2 = *(long **)(param_3 + 2)" identifier = (pointer_expression "*(long **)(param_3 + 2)" * (cast_expression "(long **)(param_3 + 2)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (if_statement "if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" if (parenthesized_expression "(*(code **)(*plVar2 + 0x20) == FUN_002afda0)" ( (binary_expression "*(code **)(*plVar2 + 0x20) == FUN_002afda0" (pointer_expression "*(code **)(*plVar2 + 0x20)" * (cast_expression "(code **)(*plVar2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0x20)" ( (binary_expression "*plVar2 + 0x20" (pointer_expression "*plVar2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }" { (expression_statement "local_98 = local_88;" (assignment_expression "local_98 = local_88" identifier = identifier) ;) (expression_statement "local_88[0] = 0;" (assignment_expression "local_88[0] = 0" (subscript_expression "local_88[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" if (parenthesized_expression "(iVar1 == 1)" ( (binary_expression "iVar1 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }" { comment (expression_statement "FUN_0027e650(&local_98,0,0,"iostream error",0xe);" (call_expression "FUN_0027e650(&local_98,0,0,"iostream error",0xe)" identifier (argument_list "(&local_98,0,0,"iostream error",0xe)" ( (pointer_expression "&local_98" & identifier) , number_literal , number_literal , (string_literal ""iostream error"" " string_content ") , number_literal ))) ;) }) (else_clause "else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" else (compound_statement "{\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" { comment (expression_statement "FUN_0027e650(&local_98,0,0,"Unknown error",0xd);" (call_expression "FUN_0027e650(&local_98,0,0,"Unknown error",0xd)" identifier (argument_list "(&local_98,0,0,"Unknown error",0xd)" ( (pointer_expression "&local_98" & identifier) , number_literal , number_literal , (string_literal ""Unknown error"" " string_content ") , number_literal ))) ;) }))) }) (else_clause "else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" else (compound_statement "{\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" { (expression_statement "(**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);" (call_expression "(**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1)" (parenthesized_expression "(**(code **)(*plVar2 + 0x20))" ( (pointer_expression "**(code **)(*plVar2 + 0x20)" * (pointer_expression "*(code **)(*plVar2 + 0x20)" * (cast_expression "(code **)(*plVar2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0x20)" ( (binary_expression "*plVar2 + 0x20" (pointer_expression "*plVar2" * identifier) + number_literal) ))))) )) (argument_list "(&local_98,plVar2,iVar1)" ( (pointer_expression "&local_98" & identifier) , identifier , identifier ))) ;) }))) comment (expression_statement "plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);" (assignment_expression "plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" identifier = (cast_expression "(long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" identifier (argument_list "(&local_98,0,0,&DAT_003244cd,2)" ( (pointer_expression "&local_98" & identifier) , number_literal , number_literal , (pointer_expression "&DAT_003244cd" & identifier) , number_literal ))))) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (if_statement "if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" if (parenthesized_expression "((long *)*plVar3 == plVar3 + 2)" ( (binary_expression "(long *)*plVar3 == plVar3 + 2" (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier)) == (binary_expression "plVar3 + 2" identifier + number_literal)) )) (compound_statement "{\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }" { (expression_statement "local_68 = plVar3[2];" (assignment_expression "local_68 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "lStack_60 = plVar3[3];" (assignment_expression "lStack_60 = plVar3[3]" identifier = (subscript_expression "plVar3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" else (compound_statement "{\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" { (expression_statement "local_68 = plVar3[2];" (assignment_expression "local_68 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_78 = (long *)*plVar3;" (assignment_expression "local_78 = (long *)*plVar3" identifier = (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) }))) (expression_statement "local_70 = plVar3[1];" (assignment_expression "local_70 = plVar3[1]" identifier = (subscript_expression "plVar3[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(plVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(plVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(plVar3 + 2)" * (cast_expression "(undefined1 *)(plVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*plVar3 = (long)(plVar3 + 2);" (assignment_expression "*plVar3 = (long)(plVar3 + 2)" (pointer_expression "*plVar3" * identifier) = (cast_expression "(long)(plVar3 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) ;) (expression_statement "plVar3[1] = 0;" (assignment_expression "plVar3[1] = 0" (subscript_expression "plVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) comment (expression_statement "plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);" (assignment_expression "plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4)" identifier = (cast_expression "(long *)FUN_0027e650(&local_78,0,0,param_2,sVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027e650(&local_78,0,0,param_2,sVar4)" identifier (argument_list "(&local_78,0,0,param_2,sVar4)" ( (pointer_expression "&local_78" & identifier) , number_literal , number_literal , identifier , identifier ))))) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" if (parenthesized_expression "((long *)*plVar3 == plVar3 + 2)" ( (binary_expression "(long *)*plVar3 == plVar3 + 2" (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier)) == (binary_expression "plVar3 + 2" identifier + number_literal)) )) (compound_statement "{\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }" { (expression_statement "local_48 = plVar3[2];" (assignment_expression "local_48 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "lStack_40 = plVar3[3];" (assignment_expression "lStack_40 = plVar3[3]" identifier = (subscript_expression "plVar3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" else (compound_statement "{\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" { (expression_statement "local_48 = plVar3[2];" (assignment_expression "local_48 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_58 = (long *)*plVar3;" (assignment_expression "local_58 = (long *)*plVar3" identifier = (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) }))) (expression_statement "local_50 = plVar3[1];" (assignment_expression "local_50 = plVar3[1]" identifier = (subscript_expression "plVar3[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(plVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(plVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(plVar3 + 2)" * (cast_expression "(undefined1 *)(plVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*plVar3 = (long)(plVar3 + 2);" (assignment_expression "*plVar3 = (long)(plVar3 + 2)" (pointer_expression "*plVar3" * identifier) = (cast_expression "(long)(plVar3 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) ;) (expression_statement "plVar3[1] = 0;" (assignment_expression "plVar3[1] = 0" (subscript_expression "plVar3[1]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "FUN_002f3b30(param_1,&local_58);" (call_expression "FUN_002f3b30(param_1,&local_58)" identifier (argument_list "(param_1,&local_58)" ( identifier , (pointer_expression "&local_58" & 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 != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_98 != local_88) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_98 != local_88)" ( (binary_expression "local_98 != local_88" identifier != identifier) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int *)(param_1 + 2) = iVar1;" (assignment_expression "*(int *)(param_1 + 2) = iVar1" (pointer_expression "*(int *)(param_1 + 2)" * (cast_expression "(int *)(param_1 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[3] = plVar2;" (assignment_expression "param_1[3] = plVar2" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = &PTR_FUN_003ba7a0;" (assignment_expression "*param_1 = &PTR_FUN_003ba7a0" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_003ba7a0" & identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* std::ios_base::failure[abi:cxx11]::failure(char const*, std::error_code const&) */\n\nvoid __thiscall\nstd::ios_base::failure[abi:cxx11]::failure\n          (failure_abi_cxx11_ *this,char *param_1,error_code *param_2)\n\n{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_2 + 8);\n  iVar1 = *(int *)param_2;\n  if (*(code **)(*plVar2 + 0x20) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_)\n  {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */\n  plVar3 = (long *)std::string::_M_replace((string *)&local_98,0,0,": ",2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_1);\n                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */\n  plVar3 = (long *)std::string::_M_replace((string *)&local_78,0,0,param_1,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */\n  runtime_error::runtime_error((runtime_error *)this,(string *)&local_58);\n  if (local_58 != &local_48) {\n    operator_delete(local_58);\n  }\n  if (local_78 != &local_68) {\n    operator_delete(local_78);\n  }\n  if (local_98 != local_88) {\n    operator_delete(local_98);\n  }\n  *(int *)(this + 0x10) = iVar1;\n  *(long **)(this + 0x18) = plVar2;\n  *(undefined ***)this = &PTR__failure_003ba7a0;\n  return;\n}\n\n" comment (function_definition "void __thiscall\nstd::ios_base::failure[abi:cxx11]::failure\n          (failure_abi_cxx11_ *this,char *param_1,error_code *param_2)\n\n{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_2 + 8);\n  iVar1 = *(int *)param_2;\n  if (*(code **)(*plVar2 + 0x20) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_)\n  {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */\n  plVar3 = (long *)std::string::_M_replace((string *)&local_98,0,0,": ",2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_1);\n                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */\n  plVar3 = (long *)std::string::_M_replace((string *)&local_78,0,0,param_1,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */\n  runtime_error::runtime_error((runtime_error *)this,(string *)&local_58);\n  if (local_58 != &local_48) {\n    operator_delete(local_58);\n  }\n  if (local_78 != &local_68) {\n    operator_delete(local_78);\n  }\n  if (local_98 != local_88) {\n    operator_delete(local_98);\n  }\n  *(int *)(this + 0x10) = iVar1;\n  *(long **)(this + 0x18) = plVar2;\n  *(undefined ***)this = &PTR__failure_003ba7a0;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::ios_base::failure[abi:cxx11]::" identifier : : identifier : : (array_declarator "failure[abi:cxx11]" identifier [ (ERROR "abi:" identifier :) identifier ]) : :) (function_declarator "failure\n          (failure_abi_cxx11_ *this,char *param_1,error_code *param_2)" identifier (parameter_list "(failure_abi_cxx11_ *this,char *param_1,error_code *param_2)" ( (parameter_declaration "failure_abi_cxx11_ *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "error_code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_2 + 8);\n  iVar1 = *(int *)param_2;\n  if (*(code **)(*plVar2 + 0x20) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_)\n  {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */\n  plVar3 = (long *)std::string::_M_replace((string *)&local_98,0,0,": ",2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_1);\n                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */\n  plVar3 = (long *)std::string::_M_replace((string *)&local_78,0,0,param_1,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */\n  runtime_error::runtime_error((runtime_error *)this,(string *)&local_58);\n  if (local_58 != &local_48) {\n    operator_delete(local_58);\n  }\n  if (local_78 != &local_68) {\n    operator_delete(local_78);\n  }\n  if (local_98 != local_88) {\n    operator_delete(local_98);\n  }\n  *(int *)(this + 0x10) = iVar1;\n  *(long **)(this + 0x18) = plVar2;\n  *(undefined ***)this = &PTR__failure_003ba7a0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "undefined1 *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "undefined8 local_90;" type_identifier identifier ;) (declaration "undefined1 local_88 [16];" type_identifier (array_declarator "local_88 [16]" identifier [ number_literal ]) ;) (declaration "long *local_78;" (sized_type_specifier "long" long) (pointer_declarator "*local_78" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_68;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_60;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar2 = *(long **)(param_2 + 8);" (assignment_expression "plVar2 = *(long **)(param_2 + 8)" identifier = (pointer_expression "*(long **)(param_2 + 8)" * (cast_expression "(long **)(param_2 + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)param_2;" (assignment_expression "iVar1 = *(int *)param_2" identifier = (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(code **)(*plVar2 + 0x20) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_)\n  {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" if (parenthesized_expression "(*(code **)(*plVar2 + 0x20) == ::(anonymous_namespace)" ( (binary_expression "*(code **)(*plVar2 + 0x20) == ::(anonymous_namespace" (pointer_expression "*(code **)(*plVar2 + 0x20)" * (cast_expression "(code **)(*plVar2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0x20)" ( (binary_expression "*plVar2 + 0x20" (pointer_expression "*plVar2" * identifier) + number_literal) )))) == (ERROR "::(" : : () identifier) )) (ERROR "::" : :) (labeled_statement "io_error_category::message_abi_cxx11_)\n  {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }\n  }" statement_identifier : (ERROR ":message_abi_cxx11_)" : identifier )) (compound_statement "{\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }\n  }" { (expression_statement "local_98 = local_88;" (assignment_expression "local_98 = local_88" identifier = identifier) ;) (expression_statement "local_88[0] = 0;" (assignment_expression "local_88[0] = 0" (subscript_expression "local_88[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 == 1) {\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }" if (parenthesized_expression "(iVar1 == 1)" ( (binary_expression "iVar1 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);\n    }" { comment (labeled_statement "std::string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)&local_98,0,0,"iostream error",0xe);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)&local_98,0,0,"iostream error",0xe);" (call_expression "_M_replace((string *)&local_98,0,0,"iostream error",0xe)" identifier (argument_list "((string *)&local_98,0,0,"iostream error",0xe)" ( (cast_expression "(string *)&local_98" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_98" & identifier)) , number_literal , number_literal , (string_literal ""iostream error"" " string_content ") , number_literal ))) ;))) }) (else_clause "else {\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }" else (compound_statement "{\n                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */\n      std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);\n    }" { comment (labeled_statement "std::string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)&local_98,0,0,"Unknown error",0xd);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)&local_98,0,0,"Unknown error",0xd);" (call_expression "_M_replace((string *)&local_98,0,0,"Unknown error",0xd)" identifier (argument_list "((string *)&local_98,0,0,"Unknown error",0xd)" ( (cast_expression "(string *)&local_98" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_98" & identifier)) , number_literal , number_literal , (string_literal ""Unknown error"" " string_content ") , number_literal ))) ;))) }))) })) (else_clause "else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" else (compound_statement "{\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" { (expression_statement "(**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);" (call_expression "(**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1)" (parenthesized_expression "(**(code **)(*plVar2 + 0x20))" ( (pointer_expression "**(code **)(*plVar2 + 0x20)" * (pointer_expression "*(code **)(*plVar2 + 0x20)" * (cast_expression "(code **)(*plVar2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0x20)" ( (binary_expression "*plVar2 + 0x20" (pointer_expression "*plVar2" * identifier) + number_literal) ))))) )) (argument_list "(&local_98,plVar2,iVar1)" ( (pointer_expression "&local_98" & identifier) , identifier , identifier ))) ;) }))) comment (ERROR "plVar3 = (long *)std::" (assignment_expression "plVar3 = (long *)std" identifier = (cast_expression "(long *)std" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::_M_replace((string *)&local_98,0,0,": ",2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)&local_98,0,0,": ",2);" (call_expression "_M_replace((string *)&local_98,0,0,": ",2)" identifier (argument_list "((string *)&local_98,0,0,": ",2)" ( (cast_expression "(string *)&local_98" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_98" & identifier)) , number_literal , number_literal , (string_literal "": "" " string_content ") , number_literal ))) ;)) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (if_statement "if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" if (parenthesized_expression "((long *)*plVar3 == plVar3 + 2)" ( (binary_expression "(long *)*plVar3 == plVar3 + 2" (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier)) == (binary_expression "plVar3 + 2" identifier + number_literal)) )) (compound_statement "{\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }" { (expression_statement "local_68 = plVar3[2];" (assignment_expression "local_68 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "lStack_60 = plVar3[3];" (assignment_expression "lStack_60 = plVar3[3]" identifier = (subscript_expression "plVar3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" else (compound_statement "{\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" { (expression_statement "local_68 = plVar3[2];" (assignment_expression "local_68 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_78 = (long *)*plVar3;" (assignment_expression "local_78 = (long *)*plVar3" identifier = (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) }))) (expression_statement "local_70 = plVar3[1];" (assignment_expression "local_70 = plVar3[1]" identifier = (subscript_expression "plVar3[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(plVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(plVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(plVar3 + 2)" * (cast_expression "(undefined1 *)(plVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*plVar3 = (long)(plVar3 + 2);" (assignment_expression "*plVar3 = (long)(plVar3 + 2)" (pointer_expression "*plVar3" * identifier) = (cast_expression "(long)(plVar3 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) ;) (expression_statement "plVar3[1] = 0;" (assignment_expression "plVar3[1] = 0" (subscript_expression "plVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) comment (ERROR "plVar3 = (long *)std::" (assignment_expression "plVar3 = (long *)std" identifier = (cast_expression "(long *)std" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::_M_replace((string *)&local_78,0,0,param_1,sVar4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)&local_78,0,0,param_1,sVar4);" (call_expression "_M_replace((string *)&local_78,0,0,param_1,sVar4)" identifier (argument_list "((string *)&local_78,0,0,param_1,sVar4)" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , number_literal , number_literal , identifier , identifier ))) ;)) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" if (parenthesized_expression "((long *)*plVar3 == plVar3 + 2)" ( (binary_expression "(long *)*plVar3 == plVar3 + 2" (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier)) == (binary_expression "plVar3 + 2" identifier + number_literal)) )) (compound_statement "{\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }" { (expression_statement "local_48 = plVar3[2];" (assignment_expression "local_48 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "lStack_40 = plVar3[3];" (assignment_expression "lStack_40 = plVar3[3]" identifier = (subscript_expression "plVar3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" else (compound_statement "{\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" { (expression_statement "local_48 = plVar3[2];" (assignment_expression "local_48 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_58 = (long *)*plVar3;" (assignment_expression "local_58 = (long *)*plVar3" identifier = (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) }))) (expression_statement "local_50 = plVar3[1];" (assignment_expression "local_50 = plVar3[1]" identifier = (subscript_expression "plVar3[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(plVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(plVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(plVar3 + 2)" * (cast_expression "(undefined1 *)(plVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*plVar3 = (long)(plVar3 + 2);" (assignment_expression "*plVar3 = (long)(plVar3 + 2)" (pointer_expression "*plVar3" * identifier) = (cast_expression "(long)(plVar3 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) ;) (expression_statement "plVar3[1] = 0;" (assignment_expression "plVar3[1] = 0" (subscript_expression "plVar3[1]" identifier [ number_literal ]) = number_literal) ;) comment (labeled_statement "runtime_error::runtime_error((runtime_error *)this,(string *)&local_58);" statement_identifier : (ERROR ":" :) (expression_statement "runtime_error((runtime_error *)this,(string *)&local_58);" (call_expression "runtime_error((runtime_error *)this,(string *)&local_58)" identifier (argument_list "((runtime_error *)this,(string *)&local_58)" ( (cast_expression "(runtime_error *)this" ( (type_descriptor "runtime_error *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & 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 != (pointer_expression "&local_48" & 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 ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    operator_delete(local_78);\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    operator_delete(local_78);\n  }" { (expression_statement "operator_delete(local_78);" (call_expression "operator_delete(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) })) (if_statement "if (local_98 != local_88) {\n    operator_delete(local_98);\n  }" if (parenthesized_expression "(local_98 != local_88)" ( (binary_expression "local_98 != local_88" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_98);\n  }" { (expression_statement "operator_delete(local_98);" (call_expression "operator_delete(local_98)" identifier (argument_list "(local_98)" ( identifier ))) ;) })) (expression_statement "*(int *)(this + 0x10) = iVar1;" (assignment_expression "*(int *)(this + 0x10) = iVar1" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long **)(this + 0x18) = plVar2;" (assignment_expression "*(long **)(this + 0x18) = plVar2" (pointer_expression "*(long **)(this + 0x18)" * (cast_expression "(long **)(this + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)this = &PTR__failure_003ba7a0;" (assignment_expression "*(undefined ***)this = &PTR__failure_003ba7a0" (pointer_expression "*(undefined ***)this" * (cast_expression "(undefined ***)this" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR__failure_003ba7a0" & identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)\n\n{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_3 + 2);\n  iVar1 = *param_3;\n  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    \n  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_2);\n                    \n  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    \n  FUN_002f3b30(param_1,&local_58);\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\n  }\n  if (local_98 != local_88) {\n    FUN_00276d20();\n  }\n  *(int *)(param_1 + 2) = iVar1;\n  param_1[3] = plVar2;\n  *param_1 = &PTR_FUN_003ba7a0;\n  return;\n}\n\n" (function_definition "void FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)\n\n{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_3 + 2);\n  iVar1 = *param_3;\n  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    \n  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_2);\n                    \n  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    \n  FUN_002f3b30(param_1,&local_58);\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\n  }\n  if (local_98 != local_88) {\n    FUN_00276d20();\n  }\n  *(int *)(param_1 + 2) = iVar1;\n  param_1[3] = plVar2;\n  *param_1 = &PTR_FUN_003ba7a0;\n  return;\n}" primitive_type (function_declarator "FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)" identifier (parameter_list "(undefined8 *param_1,char *param_2,int *param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_3 + 2);\n  iVar1 = *param_3;\n  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    \n  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_2);\n                    \n  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    \n  FUN_002f3b30(param_1,&local_58);\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\n  }\n  if (local_98 != local_88) {\n    FUN_00276d20();\n  }\n  *(int *)(param_1 + 2) = iVar1;\n  param_1[3] = plVar2;\n  *param_1 = &PTR_FUN_003ba7a0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "undefined1 *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "undefined8 local_90;" type_identifier identifier ;) (declaration "undefined1 local_88 [16];" type_identifier (array_declarator "local_88 [16]" identifier [ number_literal ]) ;) (declaration "long *local_78;" (sized_type_specifier "long" long) (pointer_declarator "*local_78" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_68;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_60;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar2 = *(long **)(param_3 + 2);" (assignment_expression "plVar2 = *(long **)(param_3 + 2)" identifier = (pointer_expression "*(long **)(param_3 + 2)" * (cast_expression "(long **)(param_3 + 2)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (if_statement "if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" if (parenthesized_expression "(*(code **)(*plVar2 + 0x20) == FUN_002afda0)" ( (binary_expression "*(code **)(*plVar2 + 0x20) == FUN_002afda0" (pointer_expression "*(code **)(*plVar2 + 0x20)" * (cast_expression "(code **)(*plVar2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0x20)" ( (binary_expression "*plVar2 + 0x20" (pointer_expression "*plVar2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }" { (expression_statement "local_98 = local_88;" (assignment_expression "local_98 = local_88" identifier = identifier) ;) (expression_statement "local_88[0] = 0;" (assignment_expression "local_88[0] = 0" (subscript_expression "local_88[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (if_statement "if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" if (parenthesized_expression "(iVar1 == 1)" ( (binary_expression "iVar1 == 1" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }" { (expression_statement "FUN_0027e650(&local_98,0,0,"iostream error",0xe);" (call_expression "FUN_0027e650(&local_98,0,0,"iostream error",0xe)" identifier (argument_list "(&local_98,0,0,"iostream error",0xe)" ( (pointer_expression "&local_98" & identifier) , number_literal , number_literal , (string_literal ""iostream error"" " string_content ") , number_literal ))) ;) }) (else_clause "else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" else (compound_statement "{\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" { (expression_statement "FUN_0027e650(&local_98,0,0,"Unknown error",0xd);" (call_expression "FUN_0027e650(&local_98,0,0,"Unknown error",0xd)" identifier (argument_list "(&local_98,0,0,"Unknown error",0xd)" ( (pointer_expression "&local_98" & identifier) , number_literal , number_literal , (string_literal ""Unknown error"" " string_content ") , number_literal ))) ;) }))) }) (else_clause "else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" else (compound_statement "{\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" { (expression_statement "(**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);" (call_expression "(**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1)" (parenthesized_expression "(**(code **)(*plVar2 + 0x20))" ( (pointer_expression "**(code **)(*plVar2 + 0x20)" * (pointer_expression "*(code **)(*plVar2 + 0x20)" * (cast_expression "(code **)(*plVar2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar2 + 0x20)" ( (binary_expression "*plVar2 + 0x20" (pointer_expression "*plVar2" * identifier) + number_literal) ))))) )) (argument_list "(&local_98,plVar2,iVar1)" ( (pointer_expression "&local_98" & identifier) , identifier , identifier ))) ;) }))) (expression_statement "plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);" (assignment_expression "plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" identifier = (cast_expression "(long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" identifier (argument_list "(&local_98,0,0,&DAT_003244cd,2)" ( (pointer_expression "&local_98" & identifier) , number_literal , number_literal , (pointer_expression "&DAT_003244cd" & identifier) , number_literal ))))) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (if_statement "if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" if (parenthesized_expression "((long *)*plVar3 == plVar3 + 2)" ( (binary_expression "(long *)*plVar3 == plVar3 + 2" (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier)) == (binary_expression "plVar3 + 2" identifier + number_literal)) )) (compound_statement "{\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }" { (expression_statement "local_68 = plVar3[2];" (assignment_expression "local_68 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "lStack_60 = plVar3[3];" (assignment_expression "lStack_60 = plVar3[3]" identifier = (subscript_expression "plVar3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" else (compound_statement "{\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" { (expression_statement "local_68 = plVar3[2];" (assignment_expression "local_68 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_78 = (long *)*plVar3;" (assignment_expression "local_78 = (long *)*plVar3" identifier = (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) }))) (expression_statement "local_70 = plVar3[1];" (assignment_expression "local_70 = plVar3[1]" identifier = (subscript_expression "plVar3[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(plVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(plVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(plVar3 + 2)" * (cast_expression "(undefined1 *)(plVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*plVar3 = (long)(plVar3 + 2);" (assignment_expression "*plVar3 = (long)(plVar3 + 2)" (pointer_expression "*plVar3" * identifier) = (cast_expression "(long)(plVar3 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) ;) (expression_statement "plVar3[1] = 0;" (assignment_expression "plVar3[1] = 0" (subscript_expression "plVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);" (assignment_expression "plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4)" identifier = (cast_expression "(long *)FUN_0027e650(&local_78,0,0,param_2,sVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027e650(&local_78,0,0,param_2,sVar4)" identifier (argument_list "(&local_78,0,0,param_2,sVar4)" ( (pointer_expression "&local_78" & identifier) , number_literal , number_literal , identifier , identifier ))))) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" if (parenthesized_expression "((long *)*plVar3 == plVar3 + 2)" ( (binary_expression "(long *)*plVar3 == plVar3 + 2" (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier)) == (binary_expression "plVar3 + 2" identifier + number_literal)) )) (compound_statement "{\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }" { (expression_statement "local_48 = plVar3[2];" (assignment_expression "local_48 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "lStack_40 = plVar3[3];" (assignment_expression "lStack_40 = plVar3[3]" identifier = (subscript_expression "plVar3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" else (compound_statement "{\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" { (expression_statement "local_48 = plVar3[2];" (assignment_expression "local_48 = plVar3[2]" identifier = (subscript_expression "plVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_58 = (long *)*plVar3;" (assignment_expression "local_58 = (long *)*plVar3" identifier = (cast_expression "(long *)*plVar3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) }))) (expression_statement "local_50 = plVar3[1];" (assignment_expression "local_50 = plVar3[1]" identifier = (subscript_expression "plVar3[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(plVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(plVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(plVar3 + 2)" * (cast_expression "(undefined1 *)(plVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*plVar3 = (long)(plVar3 + 2);" (assignment_expression "*plVar3 = (long)(plVar3 + 2)" (pointer_expression "*plVar3" * identifier) = (cast_expression "(long)(plVar3 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar3 + 2)" ( (binary_expression "plVar3 + 2" identifier + number_literal) )))) ;) (expression_statement "plVar3[1] = 0;" (assignment_expression "plVar3[1] = 0" (subscript_expression "plVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_002f3b30(param_1,&local_58);" (call_expression "FUN_002f3b30(param_1,&local_58)" identifier (argument_list "(param_1,&local_58)" ( identifier , (pointer_expression "&local_58" & 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 != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_98 != local_88) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_98 != local_88)" ( (binary_expression "local_98 != local_88" identifier != identifier) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int *)(param_1 + 2) = iVar1;" (assignment_expression "*(int *)(param_1 + 2) = iVar1" (pointer_expression "*(int *)(param_1 + 2)" * (cast_expression "(int *)(param_1 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[3] = plVar2;" (assignment_expression "param_1[3] = plVar2" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = &PTR_FUN_003ba7a0;" (assignment_expression "*param_1 = &PTR_FUN_003ba7a0" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_003ba7a0" & identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (string_literal " string_content ") , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (string_literal " string_content ") , LIT ))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (pointer_expression & IDENT) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (return_statement return ;) })))
(function_definition "void FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)\n\n{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_3 + 2);\n  iVar1 = *param_3;\n  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    \n  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_2);\n                    \n  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    \n  FUN_002f3b30(param_1,&local_58);\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\n  }\n  if (local_98 != local_88) {\n    FUN_00276d20();\n  }\n  *(int *)(param_1 + 2) = iVar1;\n  param_1[3] = plVar2;\n  *param_1 = &PTR_FUN_003ba7a0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002b0350(undefined8 *param_1,char *param_2,int *param_3)" (identifier "FUN_002b0350") (parameter_list "(undefined8 *param_1,char *param_2,int *param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  long *plVar2;\n  long *plVar3;\n  size_t sVar4;\n  undefined1 *local_98;\n  undefined8 local_90;\n  undefined1 local_88 [16];\n  long *local_78;\n  long local_70;\n  long local_68;\n  long lStack_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  plVar2 = *(long **)(param_3 + 2);\n  iVar1 = *param_3;\n  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }\n                    \n  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);\n  local_78 = &local_68;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }\n  local_70 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n  sVar4 = strlen(param_2);\n                    \n  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);\n  local_58 = &local_48;\n  if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }\n  local_50 = plVar3[1];\n  *(undefined1 *)(plVar3 + 2) = 0;\n  *plVar3 = (long)(plVar3 + 2);\n  plVar3[1] = 0;\n                    \n  FUN_002f3b30(param_1,&local_58);\n  if (local_58 != &local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\n  }\n  if (local_98 != local_88) {\n    FUN_00276d20();\n  }\n  *(int *)(param_1 + 2) = iVar1;\n  param_1[3] = plVar2;\n  *param_1 = &PTR_FUN_003ba7a0;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "undefined1 *local_98;" (type_identifier "undefined1") (pointer_declarator "*local_98" (* "*") (identifier "local_98")) (; ";")) (declaration "undefined8 local_90;" (type_identifier "undefined8") (identifier "local_90") (; ";")) (declaration "undefined1 local_88 [16];" (type_identifier "undefined1") (array_declarator "local_88 [16]" (identifier "local_88") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long *local_78;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "long local_70;" (sized_type_specifier "long" (long "long")) (identifier "local_70") (; ";")) (declaration "long local_68;" (sized_type_specifier "long" (long "long")) (identifier "local_68") (; ";")) (declaration "long lStack_60;" (sized_type_specifier "long" (long "long")) (identifier "lStack_60") (; ";")) (declaration "long *local_58;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "long local_48;" (sized_type_specifier "long" (long "long")) (identifier "local_48") (; ";")) (declaration "long lStack_40;" (sized_type_specifier "long" (long "long")) (identifier "lStack_40") (; ";")) (expression_statement "plVar2 = *(long **)(param_3 + 2);" (assignment_expression "plVar2 = *(long **)(param_3 + 2)" (identifier "plVar2") (= "=") (pointer_expression "*(long **)(param_3 + 2)" (* "*") (cast_expression "(long **)(param_3 + 2)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" (identifier "iVar1") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (if_statement "if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }\n  else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar2 + 0x20) == FUN_002afda0)" (( "(") (binary_expression "*(code **)(*plVar2 + 0x20) == FUN_002afda0" (pointer_expression "*(code **)(*plVar2 + 0x20)" (* "*") (cast_expression "(code **)(*plVar2 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar2 + 0x20)" (( "(") (binary_expression "*plVar2 + 0x20" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (+ "+") (number_literal "0x20")) () ")")))) (== "==") (identifier "FUN_002afda0")) () ")")) (compound_statement "{\n    local_98 = local_88;\n    local_88[0] = 0;\n    local_90 = 0;\n    if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }\n  }" ({ "{") (expression_statement "local_98 = local_88;" (assignment_expression "local_98 = local_88" (identifier "local_98") (= "=") (identifier "local_88")) (; ";")) (expression_statement "local_88[0] = 0;" (assignment_expression "local_88[0] = 0" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar1 == 1) {\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }\n    else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" (if "if") (parenthesized_expression "(iVar1 == 1)" (( "(") (binary_expression "iVar1 == 1" (identifier "iVar1") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    \n      FUN_0027e650(&local_98,0,0,"iostream error",0xe);\n    }" ({ "{") (expression_statement "FUN_0027e650(&local_98,0,0,"iostream error",0xe);" (call_expression "FUN_0027e650(&local_98,0,0,"iostream error",0xe)" (identifier "FUN_0027e650") (argument_list "(&local_98,0,0,"iostream error",0xe)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (string_literal ""iostream error"" (" """) (string_content "iostream error") (" """)) (, ",") (number_literal "0xe") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" (else "else") (compound_statement "{\n                    \n      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);\n    }" ({ "{") (expression_statement "FUN_0027e650(&local_98,0,0,"Unknown error",0xd);" (call_expression "FUN_0027e650(&local_98,0,0,"Unknown error",0xd)" (identifier "FUN_0027e650") (argument_list "(&local_98,0,0,"Unknown error",0xd)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (string_literal ""Unknown error"" (" """) (string_content "Unknown error") (" """)) (, ",") (number_literal "0xd") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" (else "else") (compound_statement "{\n    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);\n  }" ({ "{") (expression_statement "(**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);" (call_expression "(**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1)" (parenthesized_expression "(**(code **)(*plVar2 + 0x20))" (( "(") (pointer_expression "**(code **)(*plVar2 + 0x20)" (* "*") (pointer_expression "*(code **)(*plVar2 + 0x20)" (* "*") (cast_expression "(code **)(*plVar2 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar2 + 0x20)" (( "(") (binary_expression "*plVar2 + 0x20" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(&local_98,plVar2,iVar1)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (identifier "plVar2") (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}")))) (expression_statement "plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);" (assignment_expression "plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" (identifier "plVar3") (= "=") (cast_expression "(long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0027e650(&local_98,0,0,&DAT_003244cd,2)" (identifier "FUN_0027e650") (argument_list "(&local_98,0,0,&DAT_003244cd,2)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_003244cd" (& "&") (identifier "DAT_003244cd")) (, ",") (number_literal "2") () ")"))))) (; ";")) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" (identifier "local_78") (= "=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) (; ";")) (if_statement "if ((long *)*plVar3 == plVar3 + 2) {\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }\n  else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" (if "if") (parenthesized_expression "((long *)*plVar3 == plVar3 + 2)" (( "(") (binary_expression "(long *)*plVar3 == plVar3 + 2" (cast_expression "(long *)*plVar3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar3" (* "*") (identifier "plVar3"))) (== "==") (binary_expression "plVar3 + 2" (identifier "plVar3") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n    local_68 = plVar3[2];\n    lStack_60 = plVar3[3];\n  }" ({ "{") (expression_statement "local_68 = plVar3[2];" (assignment_expression "local_68 = plVar3[2]" (identifier "local_68") (= "=") (subscript_expression "plVar3[2]" (identifier "plVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "lStack_60 = plVar3[3];" (assignment_expression "lStack_60 = plVar3[3]" (identifier "lStack_60") (= "=") (subscript_expression "plVar3[3]" (identifier "plVar3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" (else "else") (compound_statement "{\n    local_68 = plVar3[2];\n    local_78 = (long *)*plVar3;\n  }" ({ "{") (expression_statement "local_68 = plVar3[2];" (assignment_expression "local_68 = plVar3[2]" (identifier "local_68") (= "=") (subscript_expression "plVar3[2]" (identifier "plVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_78 = (long *)*plVar3;" (assignment_expression "local_78 = (long *)*plVar3" (identifier "local_78") (= "=") (cast_expression "(long *)*plVar3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar3" (* "*") (identifier "plVar3")))) (; ";")) (} "}")))) (expression_statement "local_70 = plVar3[1];" (assignment_expression "local_70 = plVar3[1]" (identifier "local_70") (= "=") (subscript_expression "plVar3[1]" (identifier "plVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(plVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(plVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(plVar3 + 2)" (* "*") (cast_expression "(undefined1 *)(plVar3 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 2)" (( "(") (binary_expression "plVar3 + 2" (identifier "plVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*plVar3 = (long)(plVar3 + 2);" (assignment_expression "*plVar3 = (long)(plVar3 + 2)" (pointer_expression "*plVar3" (* "*") (identifier "plVar3")) (= "=") (cast_expression "(long)(plVar3 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(plVar3 + 2)" (( "(") (binary_expression "plVar3 + 2" (identifier "plVar3") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "plVar3[1] = 0;" (assignment_expression "plVar3[1] = 0" (subscript_expression "plVar3[1]" (identifier "plVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "sVar4 = strlen(param_2);" (assignment_expression "sVar4 = strlen(param_2)" (identifier "sVar4") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);" (assignment_expression "plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4)" (identifier "plVar3") (= "=") (cast_expression "(long *)FUN_0027e650(&local_78,0,0,param_2,sVar4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0027e650(&local_78,0,0,param_2,sVar4)" (identifier "FUN_0027e650") (argument_list "(&local_78,0,0,param_2,sVar4)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "param_2") (, ",") (identifier "sVar4") () ")"))))) (; ";")) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" (identifier "local_58") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (if_statement "if ((long *)*plVar3 == plVar3 + 2) {\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }\n  else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" (if "if") (parenthesized_expression "((long *)*plVar3 == plVar3 + 2)" (( "(") (binary_expression "(long *)*plVar3 == plVar3 + 2" (cast_expression "(long *)*plVar3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar3" (* "*") (identifier "plVar3"))) (== "==") (binary_expression "plVar3 + 2" (identifier "plVar3") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n    local_48 = plVar3[2];\n    lStack_40 = plVar3[3];\n  }" ({ "{") (expression_statement "local_48 = plVar3[2];" (assignment_expression "local_48 = plVar3[2]" (identifier "local_48") (= "=") (subscript_expression "plVar3[2]" (identifier "plVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "lStack_40 = plVar3[3];" (assignment_expression "lStack_40 = plVar3[3]" (identifier "lStack_40") (= "=") (subscript_expression "plVar3[3]" (identifier "plVar3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" (else "else") (compound_statement "{\n    local_48 = plVar3[2];\n    local_58 = (long *)*plVar3;\n  }" ({ "{") (expression_statement "local_48 = plVar3[2];" (assignment_expression "local_48 = plVar3[2]" (identifier "local_48") (= "=") (subscript_expression "plVar3[2]" (identifier "plVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_58 = (long *)*plVar3;" (assignment_expression "local_58 = (long *)*plVar3" (identifier "local_58") (= "=") (cast_expression "(long *)*plVar3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar3" (* "*") (identifier "plVar3")))) (; ";")) (} "}")))) (expression_statement "local_50 = plVar3[1];" (assignment_expression "local_50 = plVar3[1]" (identifier "local_50") (= "=") (subscript_expression "plVar3[1]" (identifier "plVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(plVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(plVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(plVar3 + 2)" (* "*") (cast_expression "(undefined1 *)(plVar3 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 2)" (( "(") (binary_expression "plVar3 + 2" (identifier "plVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*plVar3 = (long)(plVar3 + 2);" (assignment_expression "*plVar3 = (long)(plVar3 + 2)" (pointer_expression "*plVar3" (* "*") (identifier "plVar3")) (= "=") (cast_expression "(long)(plVar3 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(plVar3 + 2)" (( "(") (binary_expression "plVar3 + 2" (identifier "plVar3") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "plVar3[1] = 0;" (assignment_expression "plVar3[1] = 0" (subscript_expression "plVar3[1]" (identifier "plVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_002f3b30(param_1,&local_58);" (call_expression "FUN_002f3b30(param_1,&local_58)" (identifier "FUN_002f3b30") (argument_list "(param_1,&local_58)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (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") (!= "!=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n    FUN_00276d20();\n  }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_78 != &local_68) {\n    FUN_00276d20();\n  }" (if "if") (parenthesized_expression "(local_78 != &local_68)" (( "(") (binary_expression "local_78 != &local_68" (identifier "local_78") (!= "!=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) () ")")) (compound_statement "{\n    FUN_00276d20();\n  }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_98 != local_88) {\n    FUN_00276d20();\n  }" (if "if") (parenthesized_expression "(local_98 != local_88)" (( "(") (binary_expression "local_98 != local_88" (identifier "local_98") (!= "!=") (identifier "local_88")) () ")")) (compound_statement "{\n    FUN_00276d20();\n  }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 2) = iVar1;" (assignment_expression "*(int *)(param_1 + 2) = iVar1" (pointer_expression "*(int *)(param_1 + 2)" (* "*") (cast_expression "(int *)(param_1 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "param_1[3] = plVar2;" (assignment_expression "param_1[3] = plVar2" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "plVar2")) (; ";")) (expression_statement "*param_1 = &PTR_FUN_003ba7a0;" (assignment_expression "*param_1 = &PTR_FUN_003ba7a0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&PTR_FUN_003ba7a0" (& "&") (identifier "PTR_FUN_003ba7a0"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* std::ios_base::failure[abi:cxx11]::failure(char const*, std::error_code const&) */

void __thiscall
std::ios_base::function_1[abi:cxx11]::function_1
          (type_1 *var_13,char *param_1,type_2 *var_1)

{
  int var_3;
  long *plVar2;
  long *var_5;
  size_t sVar4;
  type_3 *var_11;
  type_4 local_90;
  type_3 var_12 [16];
  long *var_10;
  long local_70;
  long local_68;
  long lStack_60;
  long *var_8;
  long local_50;
  long local_48;
  long lStack_40;
  
  plVar2 = *(long **)(var_1 + 8);
  var_3 = *(int *)var_1;
  if (*(type_5 **)(*plVar2 + 0x20) == ::(var_2)::io_error_category::message_abi_cxx11_)
  {
    var_11 = var_12;
    var_12[0] = 0;
    local_90 = 0;
    if (var_3 == 1) {
                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */
      std::string::var_4((type_6 *)&var_11,0,0,"iostream error",0xe);
    }
    else {
                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */
      std::string::var_4((type_6 *)&var_11,0,0,"Unknown error",0xd);
    }
  }
  else {
    (**(type_5 **)(*plVar2 + 0x20))(&var_11,plVar2,var_3);
  }
                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */
  var_5 = (long *)std::string::var_4((type_6 *)&var_11,0,0,": ",2);
  var_10 = &local_68;
  if ((long *)*var_5 == var_5 + 2) {
    local_68 = var_5[2];
    lStack_60 = var_5[3];
  }
  else {
    local_68 = var_5[2];
    var_10 = (long *)*var_5;
  }
  local_70 = var_5[1];
  *(type_3 *)(var_5 + 2) = 0;
  *var_5 = (long)(var_5 + 2);
  var_5[1] = 0;
  sVar4 = var_6(param_1);
                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */
  var_5 = (long *)std::string::var_4((type_6 *)&var_10,0,0,param_1,sVar4);
  var_8 = &local_48;
  if ((long *)*var_5 == var_5 + 2) {
    local_48 = var_5[2];
    lStack_40 = var_5[3];
  }
  else {
    local_48 = var_5[2];
    var_8 = (long *)*var_5;
  }
  local_50 = var_5[1];
  *(type_3 *)(var_5 + 2) = 0;
  *var_5 = (long)(var_5 + 2);
  var_5[1] = 0;
                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */
  runtime_error::var_7((var_7 *)var_13,(type_6 *)&var_8);
  if (var_8 != &local_48) {
    var_9(var_8);
  }
  if (var_10 != &local_68) {
    var_9(var_10);
  }
  if (var_11 != var_12) {
    var_9(var_11);
  }
  *(int *)(var_13 + 0x10) = var_3;
  *(long **)(var_13 + 0x18) = plVar2;
  *(type_7 ***)var_13 = &PTR__failure_003ba7a0;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (string_literal (string_content)) (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (string_literal (string_content)) (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (pointer_expression argument: (identifier)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (return_statement))))

void MASKED(undefined8 *param_1,char *param_2,int *param_3)

{
  int iVar1;
  long *plVar2;
  long *plVar3;
  size_t sVar4;
  undefined1 *local_98;
  undefined8 local_90;
  undefined1 local_88 [16];
  long *local_78;
  long local_70;
  long local_68;
  long lStack_60;
  long *local_58;
  long local_50;
  long local_48;
  long lStack_40;
  
  plVar2 = *(long **)(param_3 + 2);
  iVar1 = *param_3;
  if (*(code **)(*plVar2 + 0x20) == FUN_002afda0) {
    local_98 = local_88;
    local_88[0] = 0;
    local_90 = 0;
    if (iVar1 == 1) {
                    /* try { // try from 002b0524 to 002b0528 has its CatchHandler @ 002b0540 */
      FUN_0027e650(&local_98,0,0,"iostream error",0xe);
    }
    else {
                    /* try { // try from 002b03b9 to 002b03bd has its CatchHandler @ 002b0540 */
      FUN_0027e650(&local_98,0,0,"Unknown error",0xd);
    }
  }
  else {
    (**(code **)(*plVar2 + 0x20))(&local_98,plVar2,iVar1);
  }
                    /* try { // try from 002b03d2 to 002b03d6 has its CatchHandler @ 002b0550 */
  plVar3 = (long *)FUN_0027e650(&local_98,0,0,&DAT_003244cd,2);
  local_78 = &local_68;
  if ((long *)*plVar3 == plVar3 + 2) {
    local_68 = plVar3[2];
    lStack_60 = plVar3[3];
  }
  else {
    local_68 = plVar3[2];
    local_78 = (long *)*plVar3;
  }
  local_70 = plVar3[1];
  *(undefined1 *)(plVar3 + 2) = 0;
  *plVar3 = (long)(plVar3 + 2);
  plVar3[1] = 0;
  sVar4 = strlen(param_2);
                    /* try { // try from 002b0430 to 002b0434 has its CatchHandler @ 002b0558 */
  plVar3 = (long *)FUN_0027e650(&local_78,0,0,param_2,sVar4);
  local_58 = &local_48;
  if ((long *)*plVar3 == plVar3 + 2) {
    local_48 = plVar3[2];
    lStack_40 = plVar3[3];
  }
  else {
    local_48 = plVar3[2];
    local_58 = (long *)*plVar3;
  }
  local_50 = plVar3[1];
  *(undefined1 *)(plVar3 + 2) = 0;
  *plVar3 = (long)(plVar3 + 2);
  plVar3[1] = 0;
                    /* try { // try from 002b0480 to 002b0484 has its CatchHandler @ 002b0548 */
  FUN_002f3b30(param_1,&local_58);
  if (local_58 != &local_48) {
    FUN_00276d20();
  }
  if (local_78 != &local_68) {
    FUN_00276d20();
  }
  if (local_98 != local_88) {
    FUN_00276d20();
  }
  *(int *)(param_1 + 2) = iVar1;
  param_1[3] = plVar2;
  *param_1 = &PTR_FUN_003ba7a0;
  return;
}

