
/* std::wfilebuf::_M_convert_to_external(wchar_t*, long) */

bool __thiscall std::wfilebuf::_M_convert_to_external(wfilebuf *this,wchar_t *param_1,long param_2)

{
  char *pcVar1;
  long *plVar2;
  long lVar3;
  code *pcVar4;
  undefined8 uVar5;
  long lVar6;
  undefined8 *puVar7;
  wfilebuf *pwVar8;
  char cVar9;
  int iVar10;
  uint uVar11;
  long lVar12;
  undefined1 *puVar13;
  long alStack_80 [3];
  undefined1 auStack_68 [4];
  uint local_64;
  long local_60;
  undefined8 *local_58;
  wfilebuf *local_50;
  long local_48;
  undefined8 local_40 [2];
  
  puVar13 = auStack_68;
  if (*(long **)(this + 200) == (long *)0x0) {
                    /* WARNING: Subroutine does not return */
    alStack_80[2] = 0x2a185a;
    __throw_bad_cast();
  }
  alStack_80[2] = 0x2a1730;
  cVar9 = (**(code **)(**(long **)(this + 200) + 0x30))();
  if (cVar9 == '\0') {
    alStack_80[2] = 0x2a1745;
    iVar10 = (**(code **)(**(long **)(this + 200) + 0x40))();
    plVar2 = *(long **)(this + 200);
    lVar6 = -(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0);
    lVar3 = *plVar2;
    pcVar1 = (char *)((long)&local_60 + lVar6);
    local_58 = local_40;
    local_50 = this + 0x84;
    *(long **)(auStack_68 + lVar6 + -8) = &local_48;
    *(char **)((long)alStack_80 + lVar6 + 8) = pcVar1 + iVar10 * param_2;
    pcVar4 = *(code **)(lVar3 + 0x10);
    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;
    uVar11 = (*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1);
    puVar13 = auStack_68 + lVar6;
    if (uVar11 < 2) {
      local_60 = local_48;
      param_2 = local_48 - (long)pcVar1;
      local_64 = uVar11;
      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;
      lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);
      pwVar8 = local_50;
      lVar3 = local_60;
      if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {
        plVar2 = *(long **)(this + 200);
        uVar5 = *(undefined8 *)(this + 0x28);
        lVar12 = *plVar2;
        *(long **)(auStack_68 + lVar6 + -8) = &local_48;
        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;
        puVar7 = local_58;
        pcVar4 = *(code **)(lVar12 + 0x10);
        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;
        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);
        if (iVar10 == 2) goto LAB_002a1849;
        param_2 = local_48 - (long)pcVar1;
        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;
        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);
      }
      goto LAB_002a17b2;
    }
    if (uVar11 != 3) {
LAB_002a1849:
                    /* WARNING: Subroutine does not return */
      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;
      __throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");
    }
  }
  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;
  lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2);
LAB_002a17b2:
  return lVar12 == param_2;
}



bool FUN_002a1700(long param_1,long param_2,long param_3)

{
  long lVar1;
  long *plVar2;
  long lVar3;
  code *pcVar4;
  undefined8 uVar5;
  long lVar6;
  undefined8 *puVar7;
  long lVar8;
  char cVar9;
  int iVar10;
  uint uVar11;
  long lVar12;
  undefined1 *puVar13;
  long alStack_80 [3];
  undefined1 auStack_68 [4];
  uint local_64;
  long local_60;
  undefined8 *local_58;
  long local_50;
  long local_48;
  undefined8 local_40 [2];
  
  puVar13 = auStack_68;
  if (*(long **)(param_1 + 200) == (long *)0x0) {
                    /* WARNING: Subroutine does not return */
    alStack_80[2] = 0x2a185a;
    FUN_002b5510();
  }
  alStack_80[2] = 0x2a1730;
  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();
  if (cVar9 == '\0') {
    alStack_80[2] = 0x2a1745;
    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();
    plVar2 = *(long **)(param_1 + 200);
    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);
    lVar3 = *plVar2;
    lVar1 = (long)&local_60 + lVar6;
    local_58 = local_40;
    local_50 = param_1 + 0x84;
    *(long **)(auStack_68 + lVar6 + -8) = &local_48;
    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;
    pcVar4 = *(code **)(lVar3 + 0x10);
    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;
    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);
    puVar13 = auStack_68 + lVar6;
    if (uVar11 < 2) {
      local_60 = local_48;
      param_3 = local_48 - lVar1;
      local_64 = uVar11;
      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;
      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);
      lVar8 = local_50;
      lVar3 = local_60;
      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {
        plVar2 = *(long **)(param_1 + 200);
        uVar5 = *(undefined8 *)(param_1 + 0x28);
        lVar12 = *plVar2;
        *(long **)(auStack_68 + lVar6 + -8) = &local_48;
        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;
        puVar7 = local_58;
        pcVar4 = *(code **)(lVar12 + 0x10);
        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;
        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);
        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);
        if (iVar10 == 2) goto LAB_002a1849;
        param_3 = local_48 - lVar1;
        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;
        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);
      }
      goto LAB_002a17b2;
    }
    if (uVar11 != 3) {
LAB_002a1849:
                    /* WARNING: Subroutine does not return */
      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;
      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");
    }
  }
  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;
  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);
LAB_002a17b2:
  return lVar12 == param_3;
}


PUSH RBP
MOV RBP,RSP
PUSH R15
PUSH R14
PUSH R13
MOV R13,RDI
PUSH R12
PUSH RBX
SUB RSP,0x38
MOV RDI,qword ptr [RDI + 0xc8]
TEST RDI,RDI
JZ 0x002a1855
MOV RAX,qword ptr [RDI]
MOV R12,RSI
MOV RBX,RDX
CALL qword ptr [RAX + 0x30]
TEST AL,AL
JNZ 0x002a17a3
MOV RDI,qword ptr [R13 + 0xc8]
LEA R15,[RBP + -0x40]
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x40]
MOV RDI,qword ptr [R13 + 0xc8]
LEA R8,[RBP + -0x38]
LEA RCX,[R12 + RBX*0x4]
MOVSXD RDX,EAX
LEA RSI,[R13 + 0x84]
MOV qword ptr [RBP + -0x50],R8
IMUL RDX,RBX
MOV qword ptr [RBP + -0x48],RSI
LEA RAX,[RDX + 0x17]
AND RAX,-0x10
SUB RSP,RAX
MOV RAX,qword ptr [RDI]
LEA R11,[RSP + 0xf]
PUSH R15
AND R11,-0x10
ADD RDX,R11
MOV R14,R11
MOV R9,R11
PUSH RDX
MOV RDX,R12
CALL qword ptr [RAX + 0x10]
POP RSI
POP RDI
CMP EAX,0x1
JBE 0x002a17d0
CMP EAX,0x3
JNZ 0x002a1849
LEA RDI,[R13 + 0x68]
MOV RDX,RBX
MOV RSI,R12
CALL 0x00277440
CMP RAX,RBX
SETZ AL
LEA RSP,[RBP + -0x28]
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
MOV R8,qword ptr [RBP + -0x40]
LEA R12,[R13 + 0x68]
MOV RSI,R14
MOV dword ptr [RBP + -0x5c],EAX
MOV RDI,R12
MOV RBX,R8
MOV qword ptr [RBP + -0x58],R8
SUB RBX,R14
MOV RDX,RBX
CALL 0x00277440
CMP RBX,RAX
JNZ 0x002a17b2
MOV ECX,dword ptr [RBP + -0x5c]
MOV R8,qword ptr [RBP + -0x58]
AND ECX,0x1
JZ 0x002a17b2
MOV RDI,qword ptr [R13 + 0xc8]
MOV RCX,qword ptr [R13 + 0x28]
MOV R9,R14
MOV RDX,qword ptr [RBP + -0x38]
MOV RSI,qword ptr [RBP + -0x48]
MOV RAX,qword ptr [RDI]
PUSH R15
PUSH R8
MOV R8,qword ptr [RBP + -0x50]
CALL qword ptr [RAX + 0x10]
POP RDX
POP RCX
CMP EAX,0x2
JZ 0x002a1849
MOV RBX,qword ptr [RBP + -0x40]
MOV RSI,R14
MOV RDI,R12
SUB RBX,R14
MOV RDX,RBX
CALL 0x00277440
JMP 0x002a17b2
LEA RDI,[0x329c18]
CALL 0x002b0560
CALL 0x002b5510
(translation_unit "bool FUN_002a1700(long param_1,long param_2,long param_3)\n\n{\n  long lVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  long local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);\nLAB_002a17b2:\n  return lVar12 == param_3;\n}\n\n" (function_definition "bool FUN_002a1700(long param_1,long param_2,long param_3)\n\n{\n  long lVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  long local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);\nLAB_002a17b2:\n  return lVar12 == param_3;\n}" primitive_type (function_declarator "FUN_002a1700(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  long local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);\nLAB_002a17b2:\n  return lVar12 == param_3;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "long alStack_80 [3];" (sized_type_specifier "long" long) (array_declarator "alStack_80 [3]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_68 [4];" type_identifier (array_declarator "auStack_68 [4]" identifier [ number_literal ]) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_58;" type_identifier (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 "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "puVar13 = auStack_68;" (assignment_expression "puVar13 = auStack_68" identifier = identifier) ;) (if_statement "if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }" if (parenthesized_expression "(*(long **)(param_1 + 200) == (long *)0x0)" ( (binary_expression "*(long **)(param_1 + 200) == (long *)0x0" (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }" { comment (expression_statement "alStack_80[2] = 0x2a185a;" (assignment_expression "alStack_80[2] = 0x2a185a" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_002b5510();" (call_expression "FUN_002b5510()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "alStack_80[2] = 0x2a1730;" (assignment_expression "alStack_80[2] = 0x2a1730" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();" (assignment_expression "cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 200) + 0x30))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 200) + 0x30))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 200) + 0x30)" * (pointer_expression "*(code **)(**(long **)(param_1 + 200) + 0x30)" * (cast_expression "(code **)(**(long **)(param_1 + 200) + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 200) + 0x30)" ( (binary_expression "**(long **)(param_1 + 200) + 0x30" (pointer_expression "**(long **)(param_1 + 200)" * (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }" { (expression_statement "alStack_80[2] = 0x2a1745;" (assignment_expression "alStack_80[2] = 0x2a1745" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();" (assignment_expression "iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 200) + 0x40))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 200) + 0x40))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 200) + 0x40)" * (pointer_expression "*(code **)(**(long **)(param_1 + 200) + 0x40)" * (cast_expression "(code **)(**(long **)(param_1 + 200) + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 200) + 0x40)" ( (binary_expression "**(long **)(param_1 + 200) + 0x40" (pointer_expression "**(long **)(param_1 + 200)" * (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "plVar2 = *(long **)(param_1 + 200);" (assignment_expression "plVar2 = *(long **)(param_1 + 200)" identifier = (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);" (assignment_expression "lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" identifier = (unary_expression "-(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" - (parenthesized_expression "(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" ( (binary_expression "iVar10 * param_3 + 0x17U & 0xfffffffffffffff0" (binary_expression "iVar10 * param_3 + 0x17U" (binary_expression "iVar10 * param_3" identifier * identifier) + number_literal) & number_literal) )))) ;) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (expression_statement "lVar1 = (long)&local_60 + lVar6;" (assignment_expression "lVar1 = (long)&local_60 + lVar6" identifier = (binary_expression "(long)&local_60 + lVar6" (cast_expression "(long)&local_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_60" & identifier)) + identifier)) ;) (expression_statement "local_58 = local_40;" (assignment_expression "local_58 = local_40" identifier = identifier) ;) (expression_statement "local_50 = param_1 + 0x84;" (assignment_expression "local_50 = param_1 + 0x84" identifier = (binary_expression "param_1 + 0x84" identifier + number_literal)) ;) (expression_statement "*(long **)(auStack_68 + lVar6 + -8) = &local_48;" (assignment_expression "*(long **)(auStack_68 + lVar6 + -8) = &local_48" (pointer_expression "*(long **)(auStack_68 + lVar6 + -8)" * (cast_expression "(long **)(auStack_68 + lVar6 + -8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "*(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;" (assignment_expression "*(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1" (pointer_expression "*(long *)((long)alStack_80 + lVar6 + 8)" * (cast_expression "(long *)((long)alStack_80 + lVar6 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6 + 8)" ( (binary_expression "(long)alStack_80 + lVar6 + 8" (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (binary_expression "iVar10 * param_3 + lVar1" (binary_expression "iVar10 * param_3" identifier * identifier) + identifier)) ;) (expression_statement "pcVar4 = *(code **)(lVar3 + 0x10);" (assignment_expression "pcVar4 = *(code **)(lVar3 + 0x10)" identifier = (pointer_expression "*(code **)(lVar3 + 0x10)" * (cast_expression "(code **)(lVar3 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;" (assignment_expression "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793" (pointer_expression "*(undefined8 *)((long)alStack_80 + lVar6)" * (cast_expression "(undefined8 *)((long)alStack_80 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6)" ( (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);" (assignment_expression "uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" identifier = (call_expression "(*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" ( identifier , (binary_expression "param_1 + 0x84" identifier + number_literal) , identifier , (binary_expression "param_2 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) , identifier , identifier )))) ;) (expression_statement "puVar13 = auStack_68 + lVar6;" (assignment_expression "puVar13 = auStack_68 + lVar6" identifier = (binary_expression "auStack_68 + lVar6" identifier + identifier)) ;) (if_statement "if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }" if (parenthesized_expression "(uVar11 < 2)" ( (binary_expression "uVar11 < 2" identifier < number_literal) )) (compound_statement "{\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }" { (expression_statement "local_60 = local_48;" (assignment_expression "local_60 = local_48" identifier = identifier) ;) (expression_statement "param_3 = local_48 - lVar1;" (assignment_expression "param_3 = local_48 - lVar1" identifier = (binary_expression "local_48 - lVar1" identifier - identifier)) ;) (expression_statement "local_64 = uVar11;" (assignment_expression "local_64 = uVar11" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3)" identifier = (call_expression "FUN_00277440(param_1 + 0x68,lVar1,param_3)" identifier (argument_list "(param_1 + 0x68,lVar1,param_3)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) , identifier , identifier )))) ;) (expression_statement "lVar8 = local_50;" (assignment_expression "lVar8 = local_50" identifier = identifier) ;) (expression_statement "lVar3 = local_60;" (assignment_expression "lVar3 = local_60" identifier = identifier) ;) (if_statement "if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }" if (parenthesized_expression "((param_3 == lVar12) && ((local_64 & 1) != 0))" ( (binary_expression "(param_3 == lVar12) && ((local_64 & 1) != 0)" (parenthesized_expression "(param_3 == lVar12)" ( (binary_expression "param_3 == lVar12" identifier == identifier) )) && (parenthesized_expression "((local_64 & 1) != 0)" ( (binary_expression "(local_64 & 1) != 0" (parenthesized_expression "(local_64 & 1)" ( (binary_expression "local_64 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }" { (expression_statement "plVar2 = *(long **)(param_1 + 200);" (assignment_expression "plVar2 = *(long **)(param_1 + 200)" identifier = (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "uVar5 = *(undefined8 *)(param_1 + 0x28)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar12 = *plVar2;" (assignment_expression "lVar12 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (expression_statement "*(long **)(auStack_68 + lVar6 + -8) = &local_48;" (assignment_expression "*(long **)(auStack_68 + lVar6 + -8) = &local_48" (pointer_expression "*(long **)(auStack_68 + lVar6 + -8)" * (cast_expression "(long **)(auStack_68 + lVar6 + -8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "*(long *)((long)alStack_80 + lVar6 + 8) = lVar3;" (assignment_expression "*(long *)((long)alStack_80 + lVar6 + 8) = lVar3" (pointer_expression "*(long *)((long)alStack_80 + lVar6 + 8)" * (cast_expression "(long *)((long)alStack_80 + lVar6 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6 + 8)" ( (binary_expression "(long)alStack_80 + lVar6 + 8" (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "pcVar4 = *(code **)(lVar12 + 0x10);" (assignment_expression "pcVar4 = *(code **)(lVar12 + 0x10)" identifier = (pointer_expression "*(code **)(lVar12 + 0x10)" * (cast_expression "(code **)(lVar12 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar12 + 0x10)" ( (binary_expression "lVar12 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;" (assignment_expression "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828" (pointer_expression "*(undefined8 *)((long)alStack_80 + lVar6)" * (cast_expression "(undefined8 *)((long)alStack_80 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6)" ( (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);" (assignment_expression "iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" identifier = (call_expression "(*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" ( identifier , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (expression_statement "uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);" (assignment_expression "uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8)" identifier = (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) ))))) ;) (if_statement "if (iVar10 == 2) goto LAB_002a1849;" if (parenthesized_expression "(iVar10 == 2)" ( (binary_expression "iVar10 == 2" identifier == number_literal) )) (goto_statement "goto LAB_002a1849;" goto statement_identifier ;)) (expression_statement "param_3 = local_48 - lVar1;" (assignment_expression "param_3 = local_48 - lVar1" identifier = (binary_expression "local_48 - lVar1" identifier - identifier)) ;) (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5)" identifier = (call_expression "FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5)" identifier (argument_list "(param_1 + 0x68,lVar1,param_3,uVar5)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) , identifier , identifier , identifier )))) ;) })) (goto_statement "goto LAB_002a17b2;" goto statement_identifier ;) })) (if_statement "if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }" if (parenthesized_expression "(uVar11 != 3)" ( (binary_expression "uVar11 != 3" identifier != number_literal) )) (compound_statement "{\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }" { (labeled_statement "LAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;" statement_identifier : comment (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;)) (expression_statement "FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");" (call_expression "FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error")" identifier (argument_list "("basic_filebuf::_M_convert_to_external conversion error")" ( (string_literal ""basic_filebuf::_M_convert_to_external conversion error"" " string_content ") ))) ;) })) })) (expression_statement "*(undefined8 *)(puVar13 + -8) = 0x2a17b2;" (assignment_expression "*(undefined8 *)(puVar13 + -8) = 0x2a17b2" (pointer_expression "*(undefined8 *)(puVar13 + -8)" * (cast_expression "(undefined8 *)(puVar13 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -8)" ( (binary_expression "puVar13 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3)" identifier = (call_expression "FUN_00277440(param_1 + 0x68,param_2,param_3)" identifier (argument_list "(param_1 + 0x68,param_2,param_3)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) , identifier , identifier )))) ;) (labeled_statement "LAB_002a17b2:\n  return lVar12 == param_3;" statement_identifier : (return_statement "return lVar12 == param_3;" return (binary_expression "lVar12 == param_3" identifier == identifier) ;)) })))
(translation_unit "/* std::wfilebuf::_M_convert_to_external(wchar_t*, long) */\n\nbool __thiscall std::wfilebuf::_M_convert_to_external(wfilebuf *this,wchar_t *param_1,long param_2)\n\n{\n  char *pcVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  wfilebuf *pwVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  wfilebuf *local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(this + 200) == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    __throw_bad_cast();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(this + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(this + 200) + 0x40))();\n    plVar2 = *(long **)(this + 200);\n    lVar6 = -(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    pcVar1 = (char *)((long)&local_60 + lVar6);\n    local_58 = local_40;\n    local_50 = this + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(char **)((long)alStack_80 + lVar6 + 8) = pcVar1 + iVar10 * param_2;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_2 = local_48 - (long)pcVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      pwVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      __throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2);\nLAB_002a17b2:\n  return lVar12 == param_2;\n}\n\n" comment (function_definition "bool __thiscall std::wfilebuf::_M_convert_to_external(wfilebuf *this,wchar_t *param_1,long param_2)\n\n{\n  char *pcVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  wfilebuf *pwVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  wfilebuf *local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(this + 200) == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    __throw_bad_cast();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(this + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(this + 200) + 0x40))();\n    plVar2 = *(long **)(this + 200);\n    lVar6 = -(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    pcVar1 = (char *)((long)&local_60 + lVar6);\n    local_58 = local_40;\n    local_50 = this + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(char **)((long)alStack_80 + lVar6 + 8) = pcVar1 + iVar10 * param_2;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_2 = local_48 - (long)pcVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      pwVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      __throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2);\nLAB_002a17b2:\n  return lVar12 == param_2;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::wfilebuf::" identifier : : identifier : :) (function_declarator "_M_convert_to_external(wfilebuf *this,wchar_t *param_1,long param_2)" identifier (parameter_list "(wfilebuf *this,wchar_t *param_1,long param_2)" ( (parameter_declaration "wfilebuf *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "wchar_t *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char *pcVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  wfilebuf *pwVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  wfilebuf *local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(this + 200) == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    __throw_bad_cast();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(this + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(this + 200) + 0x40))();\n    plVar2 = *(long **)(this + 200);\n    lVar6 = -(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    pcVar1 = (char *)((long)&local_60 + lVar6);\n    local_58 = local_40;\n    local_50 = this + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(char **)((long)alStack_80 + lVar6 + 8) = pcVar1 + iVar10 * param_2;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_2 = local_48 - (long)pcVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      pwVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      __throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2);\nLAB_002a17b2:\n  return lVar12 == param_2;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "wfilebuf *pwVar8;" type_identifier (pointer_declarator "*pwVar8" * identifier) ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "long alStack_80 [3];" (sized_type_specifier "long" long) (array_declarator "alStack_80 [3]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_68 [4];" type_identifier (array_declarator "auStack_68 [4]" identifier [ number_literal ]) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "wfilebuf *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "puVar13 = auStack_68;" (assignment_expression "puVar13 = auStack_68" identifier = identifier) ;) (if_statement "if (*(long **)(this + 200) == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    __throw_bad_cast();\n  }" if (parenthesized_expression "(*(long **)(this + 200) == (long *)0x0)" ( (binary_expression "*(long **)(this + 200) == (long *)0x0" (pointer_expression "*(long **)(this + 200)" * (cast_expression "(long **)(this + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 200)" ( (binary_expression "this + 200" identifier + number_literal) )))) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    alStack_80[2] = 0x2a185a;\n    __throw_bad_cast();\n  }" { comment (expression_statement "alStack_80[2] = 0x2a185a;" (assignment_expression "alStack_80[2] = 0x2a185a" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__throw_bad_cast();" (call_expression "__throw_bad_cast()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "alStack_80[2] = 0x2a1730;" (assignment_expression "alStack_80[2] = 0x2a1730" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "cVar9 = (**(code **)(**(long **)(this + 200) + 0x30))();" (assignment_expression "cVar9 = (**(code **)(**(long **)(this + 200) + 0x30))()" identifier = (call_expression "(**(code **)(**(long **)(this + 200) + 0x30))()" (parenthesized_expression "(**(code **)(**(long **)(this + 200) + 0x30))" ( (pointer_expression "**(code **)(**(long **)(this + 200) + 0x30)" * (pointer_expression "*(code **)(**(long **)(this + 200) + 0x30)" * (cast_expression "(code **)(**(long **)(this + 200) + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(this + 200) + 0x30)" ( (binary_expression "**(long **)(this + 200) + 0x30" (pointer_expression "**(long **)(this + 200)" * (pointer_expression "*(long **)(this + 200)" * (cast_expression "(long **)(this + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 200)" ( (binary_expression "this + 200" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(this + 200) + 0x40))();\n    plVar2 = *(long **)(this + 200);\n    lVar6 = -(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    pcVar1 = (char *)((long)&local_60 + lVar6);\n    local_58 = local_40;\n    local_50 = this + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(char **)((long)alStack_80 + lVar6 + 8) = pcVar1 + iVar10 * param_2;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_2 = local_48 - (long)pcVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      pwVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      __throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(this + 200) + 0x40))();\n    plVar2 = *(long **)(this + 200);\n    lVar6 = -(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    pcVar1 = (char *)((long)&local_60 + lVar6);\n    local_58 = local_40;\n    local_50 = this + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(char **)((long)alStack_80 + lVar6 + 8) = pcVar1 + iVar10 * param_2;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_2 = local_48 - (long)pcVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      pwVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      __throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }" { (expression_statement "alStack_80[2] = 0x2a1745;" (assignment_expression "alStack_80[2] = 0x2a1745" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar10 = (**(code **)(**(long **)(this + 200) + 0x40))();" (assignment_expression "iVar10 = (**(code **)(**(long **)(this + 200) + 0x40))()" identifier = (call_expression "(**(code **)(**(long **)(this + 200) + 0x40))()" (parenthesized_expression "(**(code **)(**(long **)(this + 200) + 0x40))" ( (pointer_expression "**(code **)(**(long **)(this + 200) + 0x40)" * (pointer_expression "*(code **)(**(long **)(this + 200) + 0x40)" * (cast_expression "(code **)(**(long **)(this + 200) + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(this + 200) + 0x40)" ( (binary_expression "**(long **)(this + 200) + 0x40" (pointer_expression "**(long **)(this + 200)" * (pointer_expression "*(long **)(this + 200)" * (cast_expression "(long **)(this + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 200)" ( (binary_expression "this + 200" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "plVar2 = *(long **)(this + 200);" (assignment_expression "plVar2 = *(long **)(this + 200)" identifier = (pointer_expression "*(long **)(this + 200)" * (cast_expression "(long **)(this + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 200)" ( (binary_expression "this + 200" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = -(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0);" (assignment_expression "lVar6 = -(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0)" identifier = (unary_expression "-(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0)" - (parenthesized_expression "(iVar10 * param_2 + 0x17U & 0xfffffffffffffff0)" ( (binary_expression "iVar10 * param_2 + 0x17U & 0xfffffffffffffff0" (binary_expression "iVar10 * param_2 + 0x17U" (binary_expression "iVar10 * param_2" identifier * identifier) + number_literal) & number_literal) )))) ;) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (expression_statement "pcVar1 = (char *)((long)&local_60 + lVar6);" (assignment_expression "pcVar1 = (char *)((long)&local_60 + lVar6)" identifier = (cast_expression "(char *)((long)&local_60 + lVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_60 + lVar6)" ( (binary_expression "(long)&local_60 + lVar6" (cast_expression "(long)&local_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_60" & identifier)) + identifier) )))) ;) (expression_statement "local_58 = local_40;" (assignment_expression "local_58 = local_40" identifier = identifier) ;) (expression_statement "local_50 = this + 0x84;" (assignment_expression "local_50 = this + 0x84" identifier = (binary_expression "this + 0x84" identifier + number_literal)) ;) (expression_statement "*(long **)(auStack_68 + lVar6 + -8) = &local_48;" (assignment_expression "*(long **)(auStack_68 + lVar6 + -8) = &local_48" (pointer_expression "*(long **)(auStack_68 + lVar6 + -8)" * (cast_expression "(long **)(auStack_68 + lVar6 + -8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "*(char **)((long)alStack_80 + lVar6 + 8) = pcVar1 + iVar10 * param_2;" (assignment_expression "*(char **)((long)alStack_80 + lVar6 + 8) = pcVar1 + iVar10 * param_2" (pointer_expression "*(char **)((long)alStack_80 + lVar6 + 8)" * (cast_expression "(char **)((long)alStack_80 + lVar6 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)alStack_80 + lVar6 + 8)" ( (binary_expression "(long)alStack_80 + lVar6 + 8" (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (binary_expression "pcVar1 + iVar10 * param_2" identifier + (binary_expression "iVar10 * param_2" identifier * identifier))) ;) (expression_statement "pcVar4 = *(code **)(lVar3 + 0x10);" (assignment_expression "pcVar4 = *(code **)(lVar3 + 0x10)" identifier = (pointer_expression "*(code **)(lVar3 + 0x10)" * (cast_expression "(code **)(lVar3 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;" (assignment_expression "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793" (pointer_expression "*(undefined8 *)((long)alStack_80 + lVar6)" * (cast_expression "(undefined8 *)((long)alStack_80 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6)" ( (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = (*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1);" (assignment_expression "uVar11 = (*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1)" identifier = (call_expression "(*pcVar4)(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(plVar2,this + 0x84,param_1,param_1 + param_2,local_40,pcVar1)" ( identifier , (binary_expression "this + 0x84" identifier + number_literal) , identifier , (binary_expression "param_1 + param_2" identifier + identifier) , identifier , identifier )))) ;) (expression_statement "puVar13 = auStack_68 + lVar6;" (assignment_expression "puVar13 = auStack_68 + lVar6" identifier = (binary_expression "auStack_68 + lVar6" identifier + identifier)) ;) (if_statement "if (uVar11 < 2) {\n      local_60 = local_48;\n      param_2 = local_48 - (long)pcVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      pwVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }\n      goto LAB_002a17b2;\n    }" if (parenthesized_expression "(uVar11 < 2)" ( (binary_expression "uVar11 < 2" identifier < number_literal) )) (compound_statement "{\n      local_60 = local_48;\n      param_2 = local_48 - (long)pcVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      pwVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }\n      goto LAB_002a17b2;\n    }" { (expression_statement "local_60 = local_48;" (assignment_expression "local_60 = local_48" identifier = identifier) ;) (expression_statement "param_2 = local_48 - (long)pcVar1;" (assignment_expression "param_2 = local_48 - (long)pcVar1" identifier = (binary_expression "local_48 - (long)pcVar1" identifier - (cast_expression "(long)pcVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "local_64 = uVar11;" (assignment_expression "local_64 = uVar11" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);" (assignment_expression "lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2)" identifier = (binary_expression "__basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2)" (binary_expression "__basic_file<char" identifier < identifier) > (ERROR "::" : :) (call_expression "xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2)" identifier (argument_list "((__basic_file<char> *)(this + 0x68),pcVar1,param_2)" ( (call_expression "(__basic_file<char> *)(this + 0x68)" (parenthesized_expression "(__basic_file<char> *)" ( (binary_expression "__basic_file<char> *" (binary_expression "__basic_file<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(this + 0x68)" ( (binary_expression "this + 0x68" identifier + number_literal) ))) , identifier , identifier ))))) ;) (expression_statement "pwVar8 = local_50;" (assignment_expression "pwVar8 = local_50" identifier = identifier) ;) (expression_statement "lVar3 = local_60;" (assignment_expression "lVar3 = local_60" identifier = identifier) ;) (if_statement "if ((param_2 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }" if (parenthesized_expression "((param_2 == lVar12) && ((local_64 & 1) != 0))" ( (binary_expression "(param_2 == lVar12) && ((local_64 & 1) != 0)" (parenthesized_expression "(param_2 == lVar12)" ( (binary_expression "param_2 == lVar12" identifier == identifier) )) && (parenthesized_expression "((local_64 & 1) != 0)" ( (binary_expression "(local_64 & 1) != 0" (parenthesized_expression "(local_64 & 1)" ( (binary_expression "local_64 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        plVar2 = *(long **)(this + 200);\n        uVar5 = *(undefined8 *)(this + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_2 = local_48 - (long)pcVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);\n      }" { (expression_statement "plVar2 = *(long **)(this + 200);" (assignment_expression "plVar2 = *(long **)(this + 200)" identifier = (pointer_expression "*(long **)(this + 200)" * (cast_expression "(long **)(this + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 200)" ( (binary_expression "this + 200" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined8 *)(this + 0x28);" (assignment_expression "uVar5 = *(undefined8 *)(this + 0x28)" identifier = (pointer_expression "*(undefined8 *)(this + 0x28)" * (cast_expression "(undefined8 *)(this + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar12 = *plVar2;" (assignment_expression "lVar12 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (expression_statement "*(long **)(auStack_68 + lVar6 + -8) = &local_48;" (assignment_expression "*(long **)(auStack_68 + lVar6 + -8) = &local_48" (pointer_expression "*(long **)(auStack_68 + lVar6 + -8)" * (cast_expression "(long **)(auStack_68 + lVar6 + -8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "*(long *)((long)alStack_80 + lVar6 + 8) = lVar3;" (assignment_expression "*(long *)((long)alStack_80 + lVar6 + 8) = lVar3" (pointer_expression "*(long *)((long)alStack_80 + lVar6 + 8)" * (cast_expression "(long *)((long)alStack_80 + lVar6 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6 + 8)" ( (binary_expression "(long)alStack_80 + lVar6 + 8" (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "pcVar4 = *(code **)(lVar12 + 0x10);" (assignment_expression "pcVar4 = *(code **)(lVar12 + 0x10)" identifier = (pointer_expression "*(code **)(lVar12 + 0x10)" * (cast_expression "(code **)(lVar12 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar12 + 0x10)" ( (binary_expression "lVar12 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;" (assignment_expression "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828" (pointer_expression "*(undefined8 *)((long)alStack_80 + lVar6)" * (cast_expression "(undefined8 *)((long)alStack_80 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6)" ( (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1);" (assignment_expression "iVar10 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1)" identifier = (call_expression "(*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(plVar2,pwVar8,local_40[0],uVar5,puVar7,pcVar1)" ( identifier , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (if_statement "if (iVar10 == 2) goto LAB_002a1849;" if (parenthesized_expression "(iVar10 == 2)" ( (binary_expression "iVar10 == 2" identifier == number_literal) )) (goto_statement "goto LAB_002a1849;" goto statement_identifier ;)) (expression_statement "param_2 = local_48 - (long)pcVar1;" (assignment_expression "param_2 = local_48 - (long)pcVar1" identifier = (binary_expression "local_48 - (long)pcVar1" identifier - (cast_expression "(long)pcVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2);" (assignment_expression "lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2)" identifier = (binary_expression "__basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2)" (binary_expression "__basic_file<char" identifier < identifier) > (ERROR "::" : :) (call_expression "xsputn((__basic_file<char> *)(this + 0x68),pcVar1,param_2)" identifier (argument_list "((__basic_file<char> *)(this + 0x68),pcVar1,param_2)" ( (call_expression "(__basic_file<char> *)(this + 0x68)" (parenthesized_expression "(__basic_file<char> *)" ( (binary_expression "__basic_file<char> *" (binary_expression "__basic_file<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(this + 0x68)" ( (binary_expression "this + 0x68" identifier + number_literal) ))) , identifier , identifier ))))) ;) })) (goto_statement "goto LAB_002a17b2;" goto statement_identifier ;) })) (if_statement "if (uVar11 != 3) {\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      __throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");\n    }" if (parenthesized_expression "(uVar11 != 3)" ( (binary_expression "uVar11 != 3" identifier != number_literal) )) (compound_statement "{\nLAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      __throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");\n    }" { (labeled_statement "LAB_002a1849:\n                    /* WARNING: Subroutine does not return */\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;" statement_identifier : comment (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;)) (expression_statement "__throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error");" (call_expression "__throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error")" identifier (argument_list "("basic_filebuf::_M_convert_to_external conversion error")" ( (string_literal ""basic_filebuf::_M_convert_to_external conversion error"" " string_content ") ))) ;) })) })) (expression_statement "*(undefined8 *)(puVar13 + -8) = 0x2a17b2;" (assignment_expression "*(undefined8 *)(puVar13 + -8) = 0x2a17b2" (pointer_expression "*(undefined8 *)(puVar13 + -8)" * (cast_expression "(undefined8 *)(puVar13 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -8)" ( (binary_expression "puVar13 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2);" (assignment_expression "lVar12 = __basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2)" identifier = (binary_expression "__basic_file<char>::xsputn((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2)" (binary_expression "__basic_file<char" identifier < identifier) > (ERROR "::" : :) (call_expression "xsputn((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2)" identifier (argument_list "((__basic_file<char> *)(this + 0x68),(char *)param_1,param_2)" ( (call_expression "(__basic_file<char> *)(this + 0x68)" (parenthesized_expression "(__basic_file<char> *)" ( (binary_expression "__basic_file<char> *" (binary_expression "__basic_file<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(this + 0x68)" ( (binary_expression "this + 0x68" identifier + number_literal) ))) , (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (labeled_statement "LAB_002a17b2:\n  return lVar12 == param_2;" statement_identifier : (return_statement "return lVar12 == param_2;" return (binary_expression "lVar12 == param_2" identifier == identifier) ;)) })))
(translation_unit "bool FUN_002a1700(long param_1,long param_2,long param_3)\n\n{\n  long lVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  long local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);\nLAB_002a17b2:\n  return lVar12 == param_3;\n}\n\n" (function_definition "bool FUN_002a1700(long param_1,long param_2,long param_3)\n\n{\n  long lVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  long local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);\nLAB_002a17b2:\n  return lVar12 == param_3;\n}" primitive_type (function_declarator "FUN_002a1700(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  long local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);\nLAB_002a17b2:\n  return lVar12 == param_3;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "long alStack_80 [3];" (sized_type_specifier "long" long) (array_declarator "alStack_80 [3]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_68 [4];" type_identifier (array_declarator "auStack_68 [4]" identifier [ number_literal ]) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_58;" type_identifier (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 "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "puVar13 = auStack_68;" (assignment_expression "puVar13 = auStack_68" identifier = identifier) ;) (if_statement "if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }" if (parenthesized_expression "(*(long **)(param_1 + 200) == (long *)0x0)" ( (binary_expression "*(long **)(param_1 + 200) == (long *)0x0" (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }" { (expression_statement "alStack_80[2] = 0x2a185a;" (assignment_expression "alStack_80[2] = 0x2a185a" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_002b5510();" (call_expression "FUN_002b5510()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "alStack_80[2] = 0x2a1730;" (assignment_expression "alStack_80[2] = 0x2a1730" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();" (assignment_expression "cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 200) + 0x30))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 200) + 0x30))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 200) + 0x30)" * (pointer_expression "*(code **)(**(long **)(param_1 + 200) + 0x30)" * (cast_expression "(code **)(**(long **)(param_1 + 200) + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 200) + 0x30)" ( (binary_expression "**(long **)(param_1 + 200) + 0x30" (pointer_expression "**(long **)(param_1 + 200)" * (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }" { (expression_statement "alStack_80[2] = 0x2a1745;" (assignment_expression "alStack_80[2] = 0x2a1745" (subscript_expression "alStack_80[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();" (assignment_expression "iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 200) + 0x40))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 200) + 0x40))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 200) + 0x40)" * (pointer_expression "*(code **)(**(long **)(param_1 + 200) + 0x40)" * (cast_expression "(code **)(**(long **)(param_1 + 200) + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 200) + 0x40)" ( (binary_expression "**(long **)(param_1 + 200) + 0x40" (pointer_expression "**(long **)(param_1 + 200)" * (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "plVar2 = *(long **)(param_1 + 200);" (assignment_expression "plVar2 = *(long **)(param_1 + 200)" identifier = (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);" (assignment_expression "lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" identifier = (unary_expression "-(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" - (parenthesized_expression "(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" ( (binary_expression "iVar10 * param_3 + 0x17U & 0xfffffffffffffff0" (binary_expression "iVar10 * param_3 + 0x17U" (binary_expression "iVar10 * param_3" identifier * identifier) + number_literal) & number_literal) )))) ;) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (expression_statement "lVar1 = (long)&local_60 + lVar6;" (assignment_expression "lVar1 = (long)&local_60 + lVar6" identifier = (binary_expression "(long)&local_60 + lVar6" (cast_expression "(long)&local_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_60" & identifier)) + identifier)) ;) (expression_statement "local_58 = local_40;" (assignment_expression "local_58 = local_40" identifier = identifier) ;) (expression_statement "local_50 = param_1 + 0x84;" (assignment_expression "local_50 = param_1 + 0x84" identifier = (binary_expression "param_1 + 0x84" identifier + number_literal)) ;) (expression_statement "*(long **)(auStack_68 + lVar6 + -8) = &local_48;" (assignment_expression "*(long **)(auStack_68 + lVar6 + -8) = &local_48" (pointer_expression "*(long **)(auStack_68 + lVar6 + -8)" * (cast_expression "(long **)(auStack_68 + lVar6 + -8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "*(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;" (assignment_expression "*(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1" (pointer_expression "*(long *)((long)alStack_80 + lVar6 + 8)" * (cast_expression "(long *)((long)alStack_80 + lVar6 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6 + 8)" ( (binary_expression "(long)alStack_80 + lVar6 + 8" (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (binary_expression "iVar10 * param_3 + lVar1" (binary_expression "iVar10 * param_3" identifier * identifier) + identifier)) ;) (expression_statement "pcVar4 = *(code **)(lVar3 + 0x10);" (assignment_expression "pcVar4 = *(code **)(lVar3 + 0x10)" identifier = (pointer_expression "*(code **)(lVar3 + 0x10)" * (cast_expression "(code **)(lVar3 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;" (assignment_expression "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793" (pointer_expression "*(undefined8 *)((long)alStack_80 + lVar6)" * (cast_expression "(undefined8 *)((long)alStack_80 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6)" ( (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);" (assignment_expression "uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" identifier = (call_expression "(*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" ( identifier , (binary_expression "param_1 + 0x84" identifier + number_literal) , identifier , (binary_expression "param_2 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) , identifier , identifier )))) ;) (expression_statement "puVar13 = auStack_68 + lVar6;" (assignment_expression "puVar13 = auStack_68 + lVar6" identifier = (binary_expression "auStack_68 + lVar6" identifier + identifier)) ;) (if_statement "if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }" if (parenthesized_expression "(uVar11 < 2)" ( (binary_expression "uVar11 < 2" identifier < number_literal) )) (compound_statement "{\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }" { (expression_statement "local_60 = local_48;" (assignment_expression "local_60 = local_48" identifier = identifier) ;) (expression_statement "param_3 = local_48 - lVar1;" (assignment_expression "param_3 = local_48 - lVar1" identifier = (binary_expression "local_48 - lVar1" identifier - identifier)) ;) (expression_statement "local_64 = uVar11;" (assignment_expression "local_64 = uVar11" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3)" identifier = (call_expression "FUN_00277440(param_1 + 0x68,lVar1,param_3)" identifier (argument_list "(param_1 + 0x68,lVar1,param_3)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) , identifier , identifier )))) ;) (expression_statement "lVar8 = local_50;" (assignment_expression "lVar8 = local_50" identifier = identifier) ;) (expression_statement "lVar3 = local_60;" (assignment_expression "lVar3 = local_60" identifier = identifier) ;) (if_statement "if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }" if (parenthesized_expression "((param_3 == lVar12) && ((local_64 & 1) != 0))" ( (binary_expression "(param_3 == lVar12) && ((local_64 & 1) != 0)" (parenthesized_expression "(param_3 == lVar12)" ( (binary_expression "param_3 == lVar12" identifier == identifier) )) && (parenthesized_expression "((local_64 & 1) != 0)" ( (binary_expression "(local_64 & 1) != 0" (parenthesized_expression "(local_64 & 1)" ( (binary_expression "local_64 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }" { (expression_statement "plVar2 = *(long **)(param_1 + 200);" (assignment_expression "plVar2 = *(long **)(param_1 + 200)" identifier = (pointer_expression "*(long **)(param_1 + 200)" * (cast_expression "(long **)(param_1 + 200)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "uVar5 = *(undefined8 *)(param_1 + 0x28)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar12 = *plVar2;" (assignment_expression "lVar12 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (expression_statement "*(long **)(auStack_68 + lVar6 + -8) = &local_48;" (assignment_expression "*(long **)(auStack_68 + lVar6 + -8) = &local_48" (pointer_expression "*(long **)(auStack_68 + lVar6 + -8)" * (cast_expression "(long **)(auStack_68 + lVar6 + -8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "*(long *)((long)alStack_80 + lVar6 + 8) = lVar3;" (assignment_expression "*(long *)((long)alStack_80 + lVar6 + 8) = lVar3" (pointer_expression "*(long *)((long)alStack_80 + lVar6 + 8)" * (cast_expression "(long *)((long)alStack_80 + lVar6 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6 + 8)" ( (binary_expression "(long)alStack_80 + lVar6 + 8" (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "pcVar4 = *(code **)(lVar12 + 0x10);" (assignment_expression "pcVar4 = *(code **)(lVar12 + 0x10)" identifier = (pointer_expression "*(code **)(lVar12 + 0x10)" * (cast_expression "(code **)(lVar12 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar12 + 0x10)" ( (binary_expression "lVar12 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;" (assignment_expression "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828" (pointer_expression "*(undefined8 *)((long)alStack_80 + lVar6)" * (cast_expression "(undefined8 *)((long)alStack_80 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)alStack_80 + lVar6)" ( (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);" (assignment_expression "iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" identifier = (call_expression "(*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" ( identifier , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (expression_statement "uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);" (assignment_expression "uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8)" identifier = (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) ))))) ;) (if_statement "if (iVar10 == 2) goto LAB_002a1849;" if (parenthesized_expression "(iVar10 == 2)" ( (binary_expression "iVar10 == 2" identifier == number_literal) )) (goto_statement "goto LAB_002a1849;" goto statement_identifier ;)) (expression_statement "param_3 = local_48 - lVar1;" (assignment_expression "param_3 = local_48 - lVar1" identifier = (binary_expression "local_48 - lVar1" identifier - identifier)) ;) (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5)" identifier = (call_expression "FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5)" identifier (argument_list "(param_1 + 0x68,lVar1,param_3,uVar5)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) , identifier , identifier , identifier )))) ;) })) (goto_statement "goto LAB_002a17b2;" goto statement_identifier ;) })) (if_statement "if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }" if (parenthesized_expression "(uVar11 != 3)" ( (binary_expression "uVar11 != 3" identifier != number_literal) )) (compound_statement "{\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }" { (labeled_statement "LAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;" statement_identifier : (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" * (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_68 + lVar6 + -8)" ( (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" identifier + identifier) + number_literal) )))) = number_literal) ;)) (expression_statement "FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");" (call_expression "FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error")" identifier (argument_list "("basic_filebuf::_M_convert_to_external conversion error")" ( (string_literal ""basic_filebuf::_M_convert_to_external conversion error"" " string_content ") ))) ;) })) })) (expression_statement "*(undefined8 *)(puVar13 + -8) = 0x2a17b2;" (assignment_expression "*(undefined8 *)(puVar13 + -8) = 0x2a17b2" (pointer_expression "*(undefined8 *)(puVar13 + -8)" * (cast_expression "(undefined8 *)(puVar13 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -8)" ( (binary_expression "puVar13 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3)" identifier = (call_expression "FUN_00277440(param_1 + 0x68,param_2,param_3)" identifier (argument_list "(param_1 + 0x68,param_2,param_3)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) , identifier , identifier )))) ;) (labeled_statement "LAB_002a17b2:\n  return lVar12 == param_3;" statement_identifier : (return_statement "return lVar12 == param_3;" return (binary_expression "lVar12 == param_3" identifier == identifier) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (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 * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (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 * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( )))) ;) (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 = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * IDENT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + (binary_expression IDENT * LIT)) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;)) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) })) (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 IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (labeled_statement statement_identifier : (return_statement return (binary_expression IDENT == IDENT) ;)) })))
(function_definition "bool FUN_002a1700(long param_1,long param_2,long param_3)\n\n{\n  long lVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  long local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);\nLAB_002a17b2:\n  return lVar12 == param_3;\n}" (primitive_type "bool") (function_declarator "FUN_002a1700(long param_1,long param_2,long param_3)" (identifier "FUN_002a1700") (parameter_list "(long param_1,long param_2,long param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  long lVar1;\n  long *plVar2;\n  long lVar3;\n  code *pcVar4;\n  undefined8 uVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  char cVar9;\n  int iVar10;\n  uint uVar11;\n  long lVar12;\n  undefined1 *puVar13;\n  long alStack_80 [3];\n  undefined1 auStack_68 [4];\n  uint local_64;\n  long local_60;\n  undefined8 *local_58;\n  long local_50;\n  long local_48;\n  undefined8 local_40 [2];\n  \n  puVar13 = auStack_68;\n  if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }\n  alStack_80[2] = 0x2a1730;\n  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();\n  if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }\n  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;\n  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);\nLAB_002a17b2:\n  return lVar12 == param_3;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "char cVar9;" (primitive_type "char") (identifier "cVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "long alStack_80 [3];" (sized_type_specifier "long" (long "long")) (array_declarator "alStack_80 [3]" (identifier "alStack_80") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined1 auStack_68 [4];" (type_identifier "undefined1") (array_declarator "auStack_68 [4]" (identifier "auStack_68") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "long local_60;" (sized_type_specifier "long" (long "long")) (identifier "local_60") (; ";")) (declaration "undefined8 *local_58;" (type_identifier "undefined8") (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 "undefined8 local_40 [2];" (type_identifier "undefined8") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "puVar13 = auStack_68;" (assignment_expression "puVar13 = auStack_68" (identifier "puVar13") (= "=") (identifier "auStack_68")) (; ";")) (if_statement "if (*(long **)(param_1 + 200) == (long *)0x0) {\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }" (if "if") (parenthesized_expression "(*(long **)(param_1 + 200) == (long *)0x0)" (( "(") (binary_expression "*(long **)(param_1 + 200) == (long *)0x0" (pointer_expression "*(long **)(param_1 + 200)" (* "*") (cast_expression "(long **)(param_1 + 200)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")")))) (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    alStack_80[2] = 0x2a185a;\n    FUN_002b5510();\n  }" ({ "{") (expression_statement "alStack_80[2] = 0x2a185a;" (assignment_expression "alStack_80[2] = 0x2a185a" (subscript_expression "alStack_80[2]" (identifier "alStack_80") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x2a185a")) (; ";")) (expression_statement "FUN_002b5510();" (call_expression "FUN_002b5510()" (identifier "FUN_002b5510") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "alStack_80[2] = 0x2a1730;" (assignment_expression "alStack_80[2] = 0x2a1730" (subscript_expression "alStack_80[2]" (identifier "alStack_80") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x2a1730")) (; ";")) (expression_statement "cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();" (assignment_expression "cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))()" (identifier "cVar9") (= "=") (call_expression "(**(code **)(**(long **)(param_1 + 200) + 0x30))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 200) + 0x30))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 200) + 0x30)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 200) + 0x30)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 200) + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 200) + 0x30)" (( "(") (binary_expression "**(long **)(param_1 + 200) + 0x30" (pointer_expression "**(long **)(param_1 + 200)" (* "*") (pointer_expression "*(long **)(param_1 + 200)" (* "*") (cast_expression "(long **)(param_1 + 200)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")"))))) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar9 == '\0') {\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }" (if "if") (parenthesized_expression "(cVar9 == '\0')" (( "(") (binary_expression "cVar9 == '\0'" (identifier "cVar9") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    alStack_80[2] = 0x2a1745;\n    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();\n    plVar2 = *(long **)(param_1 + 200);\n    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);\n    lVar3 = *plVar2;\n    lVar1 = (long)&local_60 + lVar6;\n    local_58 = local_40;\n    local_50 = param_1 + 0x84;\n    *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;\n    pcVar4 = *(code **)(lVar3 + 0x10);\n    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;\n    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);\n    puVar13 = auStack_68 + lVar6;\n    if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }\n    if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }\n  }" ({ "{") (expression_statement "alStack_80[2] = 0x2a1745;" (assignment_expression "alStack_80[2] = 0x2a1745" (subscript_expression "alStack_80[2]" (identifier "alStack_80") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x2a1745")) (; ";")) (expression_statement "iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();" (assignment_expression "iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))()" (identifier "iVar10") (= "=") (call_expression "(**(code **)(**(long **)(param_1 + 200) + 0x40))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 200) + 0x40))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 200) + 0x40)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 200) + 0x40)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 200) + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 200) + 0x40)" (( "(") (binary_expression "**(long **)(param_1 + 200) + 0x40" (pointer_expression "**(long **)(param_1 + 200)" (* "*") (pointer_expression "*(long **)(param_1 + 200)" (* "*") (cast_expression "(long **)(param_1 + 200)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")"))))) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "plVar2 = *(long **)(param_1 + 200);" (assignment_expression "plVar2 = *(long **)(param_1 + 200)" (identifier "plVar2") (= "=") (pointer_expression "*(long **)(param_1 + 200)" (* "*") (cast_expression "(long **)(param_1 + 200)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")"))))) (; ";")) (expression_statement "lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);" (assignment_expression "lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" (identifier "lVar6") (= "=") (unary_expression "-(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" (- "-") (parenthesized_expression "(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0)" (( "(") (binary_expression "iVar10 * param_3 + 0x17U & 0xfffffffffffffff0" (binary_expression "iVar10 * param_3 + 0x17U" (binary_expression "iVar10 * param_3" (identifier "iVar10") (* "*") (identifier "param_3")) (+ "+") (number_literal "0x17U")) (& "&") (number_literal "0xfffffffffffffff0")) () ")")))) (; ";")) (expression_statement "lVar3 = *plVar2;" (assignment_expression "lVar3 = *plVar2" (identifier "lVar3") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (expression_statement "lVar1 = (long)&local_60 + lVar6;" (assignment_expression "lVar1 = (long)&local_60 + lVar6" (identifier "lVar1") (= "=") (binary_expression "(long)&local_60 + lVar6" (cast_expression "(long)&local_60" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_60" (& "&") (identifier "local_60"))) (+ "+") (identifier "lVar6"))) (; ";")) (expression_statement "local_58 = local_40;" (assignment_expression "local_58 = local_40" (identifier "local_58") (= "=") (identifier "local_40")) (; ";")) (expression_statement "local_50 = param_1 + 0x84;" (assignment_expression "local_50 = param_1 + 0x84" (identifier "local_50") (= "=") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84"))) (; ";")) (expression_statement "*(long **)(auStack_68 + lVar6 + -8) = &local_48;" (assignment_expression "*(long **)(auStack_68 + lVar6 + -8) = &local_48" (pointer_expression "*(long **)(auStack_68 + lVar6 + -8)" (* "*") (cast_expression "(long **)(auStack_68 + lVar6 + -8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(auStack_68 + lVar6 + -8)" (( "(") (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" (identifier "auStack_68") (+ "+") (identifier "lVar6")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (expression_statement "*(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;" (assignment_expression "*(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1" (pointer_expression "*(long *)((long)alStack_80 + lVar6 + 8)" (* "*") (cast_expression "(long *)((long)alStack_80 + lVar6 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)alStack_80 + lVar6 + 8)" (( "(") (binary_expression "(long)alStack_80 + lVar6 + 8" (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "alStack_80")) (+ "+") (identifier "lVar6")) (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "iVar10 * param_3 + lVar1" (binary_expression "iVar10 * param_3" (identifier "iVar10") (* "*") (identifier "param_3")) (+ "+") (identifier "lVar1"))) (; ";")) (expression_statement "pcVar4 = *(code **)(lVar3 + 0x10);" (assignment_expression "pcVar4 = *(code **)(lVar3 + 0x10)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(lVar3 + 0x10)" (* "*") (cast_expression "(code **)(lVar3 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar3 + 0x10)" (( "(") (binary_expression "lVar3 + 0x10" (identifier "lVar3") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;" (assignment_expression "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793" (pointer_expression "*(undefined8 *)((long)alStack_80 + lVar6)" (* "*") (cast_expression "(undefined8 *)((long)alStack_80 + lVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)alStack_80 + lVar6)" (( "(") (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "alStack_80")) (+ "+") (identifier "lVar6")) () ")")))) (= "=") (number_literal "0x2a1793")) (; ";")) (expression_statement "uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);" (assignment_expression "uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" (identifier "uVar11") (= "=") (call_expression "(*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1)" (( "(") (identifier "plVar2") (, ",") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) (, ",") (identifier "param_2") (, ",") (binary_expression "param_2 + param_3 * 4" (identifier "param_2") (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) (, ",") (identifier "local_40") (, ",") (identifier "lVar1") () ")")))) (; ";")) (expression_statement "puVar13 = auStack_68 + lVar6;" (assignment_expression "puVar13 = auStack_68 + lVar6" (identifier "puVar13") (= "=") (binary_expression "auStack_68 + lVar6" (identifier "auStack_68") (+ "+") (identifier "lVar6"))) (; ";")) (if_statement "if (uVar11 < 2) {\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }" (if "if") (parenthesized_expression "(uVar11 < 2)" (( "(") (binary_expression "uVar11 < 2" (identifier "uVar11") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      local_60 = local_48;\n      param_3 = local_48 - lVar1;\n      local_64 = uVar11;\n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;\n      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);\n      lVar8 = local_50;\n      lVar3 = local_60;\n      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }\n      goto LAB_002a17b2;\n    }" ({ "{") (expression_statement "local_60 = local_48;" (assignment_expression "local_60 = local_48" (identifier "local_60") (= "=") (identifier "local_48")) (; ";")) (expression_statement "param_3 = local_48 - lVar1;" (assignment_expression "param_3 = local_48 - lVar1" (identifier "param_3") (= "=") (binary_expression "local_48 - lVar1" (identifier "local_48") (- "-") (identifier "lVar1"))) (; ";")) (expression_statement "local_64 = uVar11;" (assignment_expression "local_64 = uVar11" (identifier "local_64") (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_68 + lVar6 + -8)" (( "(") (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" (identifier "auStack_68") (+ "+") (identifier "lVar6")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2a17f3")) (; ";")) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3)" (identifier "lVar12") (= "=") (call_expression "FUN_00277440(param_1 + 0x68,lVar1,param_3)" (identifier "FUN_00277440") (argument_list "(param_1 + 0x68,lVar1,param_3)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) (, ",") (identifier "lVar1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "lVar8 = local_50;" (assignment_expression "lVar8 = local_50" (identifier "lVar8") (= "=") (identifier "local_50")) (; ";")) (expression_statement "lVar3 = local_60;" (assignment_expression "lVar3 = local_60" (identifier "lVar3") (= "=") (identifier "local_60")) (; ";")) (if_statement "if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }" (if "if") (parenthesized_expression "((param_3 == lVar12) && ((local_64 & 1) != 0))" (( "(") (binary_expression "(param_3 == lVar12) && ((local_64 & 1) != 0)" (parenthesized_expression "(param_3 == lVar12)" (( "(") (binary_expression "param_3 == lVar12" (identifier "param_3") (== "==") (identifier "lVar12")) () ")")) (&& "&&") (parenthesized_expression "((local_64 & 1) != 0)" (( "(") (binary_expression "(local_64 & 1) != 0" (parenthesized_expression "(local_64 & 1)" (( "(") (binary_expression "local_64 & 1" (identifier "local_64") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        plVar2 = *(long **)(param_1 + 200);\n        uVar5 = *(undefined8 *)(param_1 + 0x28);\n        lVar12 = *plVar2;\n        *(long **)(auStack_68 + lVar6 + -8) = &local_48;\n        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;\n        puVar7 = local_58;\n        pcVar4 = *(code **)(lVar12 + 0x10);\n        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;\n        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);\n        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);\n        if (iVar10 == 2) goto LAB_002a1849;\n        param_3 = local_48 - lVar1;\n        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;\n        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);\n      }" ({ "{") (expression_statement "plVar2 = *(long **)(param_1 + 200);" (assignment_expression "plVar2 = *(long **)(param_1 + 200)" (identifier "plVar2") (= "=") (pointer_expression "*(long **)(param_1 + 200)" (* "*") (cast_expression "(long **)(param_1 + 200)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "uVar5 = *(undefined8 *)(param_1 + 0x28)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "lVar12 = *plVar2;" (assignment_expression "lVar12 = *plVar2" (identifier "lVar12") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (expression_statement "*(long **)(auStack_68 + lVar6 + -8) = &local_48;" (assignment_expression "*(long **)(auStack_68 + lVar6 + -8) = &local_48" (pointer_expression "*(long **)(auStack_68 + lVar6 + -8)" (* "*") (cast_expression "(long **)(auStack_68 + lVar6 + -8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(auStack_68 + lVar6 + -8)" (( "(") (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" (identifier "auStack_68") (+ "+") (identifier "lVar6")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (expression_statement "*(long *)((long)alStack_80 + lVar6 + 8) = lVar3;" (assignment_expression "*(long *)((long)alStack_80 + lVar6 + 8) = lVar3" (pointer_expression "*(long *)((long)alStack_80 + lVar6 + 8)" (* "*") (cast_expression "(long *)((long)alStack_80 + lVar6 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)alStack_80 + lVar6 + 8)" (( "(") (binary_expression "(long)alStack_80 + lVar6 + 8" (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "alStack_80")) (+ "+") (identifier "lVar6")) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" (identifier "puVar7") (= "=") (identifier "local_58")) (; ";")) (expression_statement "pcVar4 = *(code **)(lVar12 + 0x10);" (assignment_expression "pcVar4 = *(code **)(lVar12 + 0x10)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(lVar12 + 0x10)" (* "*") (cast_expression "(code **)(lVar12 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar12 + 0x10)" (( "(") (binary_expression "lVar12 + 0x10" (identifier "lVar12") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;" (assignment_expression "*(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828" (pointer_expression "*(undefined8 *)((long)alStack_80 + lVar6)" (* "*") (cast_expression "(undefined8 *)((long)alStack_80 + lVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)alStack_80 + lVar6)" (( "(") (binary_expression "(long)alStack_80 + lVar6" (cast_expression "(long)alStack_80" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "alStack_80")) (+ "+") (identifier "lVar6")) () ")")))) (= "=") (number_literal "0x2a1828")) (; ";")) (expression_statement "iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);" (assignment_expression "iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" (identifier "iVar10") (= "=") (call_expression "(*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1)" (( "(") (identifier "plVar2") (, ",") (identifier "lVar8") (, ",") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "uVar5") (, ",") (identifier "puVar7") (, ",") (identifier "lVar1") () ")")))) (; ";")) (expression_statement "uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);" (assignment_expression "uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_68 + lVar6 + -8)" (( "(") (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" (identifier "auStack_68") (+ "+") (identifier "lVar6")) (+ "+") (number_literal "-8")) () ")"))))) (; ";")) (if_statement "if (iVar10 == 2) goto LAB_002a1849;" (if "if") (parenthesized_expression "(iVar10 == 2)" (( "(") (binary_expression "iVar10 == 2" (identifier "iVar10") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_002a1849;" (goto "goto") (statement_identifier "LAB_002a1849") (; ";"))) (expression_statement "param_3 = local_48 - lVar1;" (assignment_expression "param_3 = local_48 - lVar1" (identifier "param_3") (= "=") (binary_expression "local_48 - lVar1" (identifier "local_48") (- "-") (identifier "lVar1"))) (; ";")) (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_68 + lVar6 + -8)" (( "(") (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" (identifier "auStack_68") (+ "+") (identifier "lVar6")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2a1844")) (; ";")) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5)" (identifier "lVar12") (= "=") (call_expression "FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5)" (identifier "FUN_00277440") (argument_list "(param_1 + 0x68,lVar1,param_3,uVar5)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) (, ",") (identifier "lVar1") (, ",") (identifier "param_3") (, ",") (identifier "uVar5") () ")")))) (; ";")) (} "}"))) (goto_statement "goto LAB_002a17b2;" (goto "goto") (statement_identifier "LAB_002a17b2") (; ";")) (} "}"))) (if_statement "if (uVar11 != 3) {\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }" (if "if") (parenthesized_expression "(uVar11 != 3)" (( "(") (binary_expression "uVar11 != 3" (identifier "uVar11") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\nLAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;\n      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");\n    }" ({ "{") (labeled_statement "LAB_002a1849:\n                    \n      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;" (statement_identifier "LAB_002a1849") (: ":") (expression_statement "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;" (assignment_expression "*(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855" (pointer_expression "*(undefined8 *)(auStack_68 + lVar6 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_68 + lVar6 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_68 + lVar6 + -8)" (( "(") (binary_expression "auStack_68 + lVar6 + -8" (binary_expression "auStack_68 + lVar6" (identifier "auStack_68") (+ "+") (identifier "lVar6")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2a1855")) (; ";"))) (expression_statement "FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");" (call_expression "FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error")" (identifier "FUN_002b0560") (argument_list "("basic_filebuf::_M_convert_to_external conversion error")" (( "(") (string_literal ""basic_filebuf::_M_convert_to_external conversion error"" (" """) (string_content "basic_filebuf::_M_convert_to_external conversion error") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined8 *)(puVar13 + -8) = 0x2a17b2;" (assignment_expression "*(undefined8 *)(puVar13 + -8) = 0x2a17b2" (pointer_expression "*(undefined8 *)(puVar13 + -8)" (* "*") (cast_expression "(undefined8 *)(puVar13 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + -8)" (( "(") (binary_expression "puVar13 + -8" (identifier "puVar13") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2a17b2")) (; ";")) (expression_statement "lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);" (assignment_expression "lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3)" (identifier "lVar12") (= "=") (call_expression "FUN_00277440(param_1 + 0x68,param_2,param_3)" (identifier "FUN_00277440") (argument_list "(param_1 + 0x68,param_2,param_3)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (labeled_statement "LAB_002a17b2:\n  return lVar12 == param_3;" (statement_identifier "LAB_002a17b2") (: ":") (return_statement "return lVar12 == param_3;" (return "return") (binary_expression "lVar12 == param_3" (identifier "lVar12") (== "==") (identifier "param_3")) (; ";"))) (} "}")))

/* std::wfilebuf::_M_convert_to_external(wchar_t*, long) */

bool __thiscall std::type_1::function_1(type_1 *var_1,type_2 *var_10,long var_5)

{
  char *var_8;
  long *plVar2;
  long var_9;
  type_3 *pcVar4;
  type_4 uVar5;
  long var_6;
  type_4 *puVar7;
  type_1 *pwVar8;
  char var_3;
  int var_4;
  type_5 var_11;
  long var_16;
  type_6 *var_19;
  long alStack_80 [3];
  type_6 var_7 [4];
  type_5 var_17;
  long local_60;
  type_4 *local_58;
  type_1 *local_50;
  long var_12;
  type_4 local_40 [2];
  
  var_19 = var_7;
  if (*(long **)(var_1 + 200) == (long *)0x0) {
                    /* WARNING: Subroutine does not return */
    alStack_80[2] = 0x2a185a;
    var_2();
  }
  alStack_80[2] = 0x2a1730;
  var_3 = (**(type_3 **)(**(long **)(var_1 + 200) + 0x30))();
  if (var_3 == '\0') {
    alStack_80[2] = 0x2a1745;
    var_4 = (**(type_3 **)(**(long **)(var_1 + 200) + 0x40))();
    plVar2 = *(long **)(var_1 + 200);
    var_6 = -(var_4 * var_5 + 0x17U & 0xfffffffffffffff0);
    var_9 = *plVar2;
    var_8 = (char *)((long)&local_60 + var_6);
    local_58 = local_40;
    local_50 = var_1 + 0x84;
    *(long **)(var_7 + var_6 + -8) = &var_12;
    *(char **)((long)alStack_80 + var_6 + 8) = var_8 + var_4 * var_5;
    pcVar4 = *(type_3 **)(var_9 + 0x10);
    *(type_4 *)((long)alStack_80 + var_6) = 0x2a1793;
    var_11 = (*pcVar4)(plVar2,var_1 + 0x84,var_10,var_10 + var_5,local_40,var_8);
    var_19 = var_7 + var_6;
    if (var_11 < 2) {
      local_60 = var_12;
      var_5 = var_12 - (long)var_8;
      var_17 = var_11;
      *(type_4 *)(var_7 + var_6 + -8) = 0x2a17f3;
      var_16 = var_13<var_14>::var_15((var_13<var_14> *)(var_1 + 0x68),var_8,var_5);
      pwVar8 = local_50;
      var_9 = local_60;
      if ((var_5 == var_16) && ((var_17 & 1) != 0)) {
        plVar2 = *(long **)(var_1 + 200);
        uVar5 = *(type_4 *)(var_1 + 0x28);
        var_16 = *plVar2;
        *(long **)(var_7 + var_6 + -8) = &var_12;
        *(long *)((long)alStack_80 + var_6 + 8) = var_9;
        puVar7 = local_58;
        pcVar4 = *(type_3 **)(var_16 + 0x10);
        *(type_4 *)((long)alStack_80 + var_6) = 0x2a1828;
        var_4 = (*pcVar4)(plVar2,pwVar8,local_40[0],uVar5,puVar7,var_8);
        if (var_4 == 2) goto LAB_002a1849;
        var_5 = var_12 - (long)var_8;
        *(type_4 *)(var_7 + var_6 + -8) = 0x2a1844;
        var_16 = var_13<var_14>::var_15((var_13<var_14> *)(var_1 + 0x68),var_8,var_5);
      }
      goto LAB_002a17b2;
    }
    if (var_11 != 3) {
LAB_002a1849:
                    /* WARNING: Subroutine does not return */
      *(type_4 *)(var_7 + var_6 + -8) = 0x2a1855;
      var_18("basic_filebuf::_M_convert_to_external conversion error");
    }
  }
  *(type_4 *)(var_19 + -8) = 0x2a17b2;
  var_16 = var_13<var_14>::var_15((var_13<var_14> *)(var_1 + 0x68),(char *)var_10,var_5);
LAB_002a17b2:
  return var_16 == var_5;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (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: (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: (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)))))) right: (number_literal))))))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (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: (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: (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)))))) right: (number_literal))))))) arguments: (argument_list)))) (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: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier)) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))))) (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: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier))))) (labeled_statement label: (statement_identifier) (return_statement (binary_expression left: (identifier) right: (identifier)))))))

bool MASKED(long param_1,long param_2,long param_3)

{
  long lVar1;
  long *plVar2;
  long lVar3;
  code *pcVar4;
  undefined8 uVar5;
  long lVar6;
  undefined8 *puVar7;
  long lVar8;
  char cVar9;
  int iVar10;
  uint uVar11;
  long lVar12;
  undefined1 *puVar13;
  long alStack_80 [3];
  undefined1 auStack_68 [4];
  uint local_64;
  long local_60;
  undefined8 *local_58;
  long local_50;
  long local_48;
  undefined8 local_40 [2];
  
  puVar13 = auStack_68;
  if (*(long **)(param_1 + 200) == (long *)0x0) {
                    /* WARNING: Subroutine does not return */
    alStack_80[2] = 0x2a185a;
    FUN_002b5510();
  }
  alStack_80[2] = 0x2a1730;
  cVar9 = (**(code **)(**(long **)(param_1 + 200) + 0x30))();
  if (cVar9 == '\0') {
    alStack_80[2] = 0x2a1745;
    iVar10 = (**(code **)(**(long **)(param_1 + 200) + 0x40))();
    plVar2 = *(long **)(param_1 + 200);
    lVar6 = -(iVar10 * param_3 + 0x17U & 0xfffffffffffffff0);
    lVar3 = *plVar2;
    lVar1 = (long)&local_60 + lVar6;
    local_58 = local_40;
    local_50 = param_1 + 0x84;
    *(long **)(auStack_68 + lVar6 + -8) = &local_48;
    *(long *)((long)alStack_80 + lVar6 + 8) = iVar10 * param_3 + lVar1;
    pcVar4 = *(code **)(lVar3 + 0x10);
    *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1793;
    uVar11 = (*pcVar4)(plVar2,param_1 + 0x84,param_2,param_2 + param_3 * 4,local_40,lVar1);
    puVar13 = auStack_68 + lVar6;
    if (uVar11 < 2) {
      local_60 = local_48;
      param_3 = local_48 - lVar1;
      local_64 = uVar11;
      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a17f3;
      lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3);
      lVar8 = local_50;
      lVar3 = local_60;
      if ((param_3 == lVar12) && ((local_64 & 1) != 0)) {
        plVar2 = *(long **)(param_1 + 200);
        uVar5 = *(undefined8 *)(param_1 + 0x28);
        lVar12 = *plVar2;
        *(long **)(auStack_68 + lVar6 + -8) = &local_48;
        *(long *)((long)alStack_80 + lVar6 + 8) = lVar3;
        puVar7 = local_58;
        pcVar4 = *(code **)(lVar12 + 0x10);
        *(undefined8 *)((long)alStack_80 + lVar6) = 0x2a1828;
        iVar10 = (*pcVar4)(plVar2,lVar8,local_40[0],uVar5,puVar7,lVar1);
        uVar5 = *(undefined8 *)(auStack_68 + lVar6 + -8);
        if (iVar10 == 2) goto LAB_002a1849;
        param_3 = local_48 - lVar1;
        *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1844;
        lVar12 = FUN_00277440(param_1 + 0x68,lVar1,param_3,uVar5);
      }
      goto LAB_002a17b2;
    }
    if (uVar11 != 3) {
LAB_002a1849:
                    /* WARNING: Subroutine does not return */
      *(undefined8 *)(auStack_68 + lVar6 + -8) = 0x2a1855;
      FUN_002b0560("basic_filebuf::_M_convert_to_external conversion error");
    }
  }
  *(undefined8 *)(puVar13 + -8) = 0x2a17b2;
  lVar12 = FUN_00277440(param_1 + 0x68,param_2,param_3);
LAB_002a17b2:
  return lVar12 == param_3;
}

