
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void Constant_expression(Constant_expression * this, char * name,
   size_t length) */

void __thiscall
gold::Constant_expression::Constant_expression(Constant_expression *this,char *name,size_t length)

{
  _Alloc_hider _Var1;
  char *format;
  int iVar2;
  byte *pbVar3;
  byte *pbVar4;
  bool bVar5;
  bool bVar6;
  string s;
  
  (this->super_Expression)._vptr_Expression =
       (_func_int_varargs **)&PTR__Constant_expression_00386260;
  bVar5 = length < 0xb;
  bVar6 = length == 0xb;
  if (bVar6) {
    iVar2 = 0xb;
    pbVar3 = (byte *)name;
    pbVar4 = (byte *)"MAXPAGESIZE";
    do {
      if (iVar2 == 0) break;
      iVar2 = iVar2 + -1;
      bVar5 = *pbVar3 < *pbVar4;
      bVar6 = *pbVar3 == *pbVar4;
      pbVar3 = pbVar3 + 1;
      pbVar4 = pbVar4 + 1;
    } while (bVar6);
    if ((!bVar5 && !bVar6) == bVar5) {
      this->function_ = CONSTANT_MAXPAGESIZE;
      return;
    }
  }
  else {
    bVar5 = length < 0xe;
    bVar6 = length == 0xe;
    if (bVar6) {
      iVar2 = 0xe;
      pbVar3 = (byte *)name;
      pbVar4 = (byte *)"COMMONPAGESIZE";
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar5 = *pbVar3 < *pbVar4;
        bVar6 = *pbVar3 == *pbVar4;
        pbVar3 = pbVar3 + 1;
        pbVar4 = pbVar4 + 1;
      } while (bVar6);
      if ((!bVar5 && !bVar6) == bVar5) {
        this->function_ = CONSTANT_COMMONPAGESIZE;
        return;
      }
    }
  }
  s._M_dataplus._M_p = (pointer)&s.field_2;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&s,name,name + length,0);
  _Var1._M_p = s._M_dataplus._M_p;
  format = (char *)gettext("unknown constant %s");
                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */
  gold_error(format,_Var1._M_p);
  this->function_ = CONSTANT_MAXPAGESIZE;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)s._M_dataplus._M_p == &s.field_2) {
    return;
  }
  operator_delete(s._M_dataplus._M_p);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)

{
  undefined1 *puVar1;
  undefined4 uVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  *param_1 = &PTR_FUN_00386260;
  bVar6 = param_3 < 0xb;
  bVar7 = param_3 == 0xb;
  if (bVar7) {
    iVar3 = 0xb;
    pbVar4 = param_2;
    pbVar5 = (byte *)"MAXPAGESIZE";
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar6 = *pbVar4 < *pbVar5;
      bVar7 = *pbVar4 == *pbVar5;
      pbVar4 = pbVar4 + 1;
      pbVar5 = pbVar5 + 1;
    } while (bVar7);
    if ((!bVar6 && !bVar7) == bVar6) {
      param_1[1] = 0;
      return;
    }
  }
  else {
    bVar6 = param_3 < 0xe;
    bVar7 = param_3 == 0xe;
    if (bVar7) {
      iVar3 = 0xe;
      pbVar4 = param_2;
      pbVar5 = (byte *)"COMMONPAGESIZE";
      do {
        if (iVar3 == 0) break;
        iVar3 = iVar3 + -1;
        bVar6 = *pbVar4 < *pbVar5;
        bVar7 = *pbVar4 == *pbVar5;
        pbVar4 = pbVar4 + 1;
        pbVar5 = pbVar5 + 1;
      } while (bVar7);
      if ((!bVar6 && !bVar7) == bVar6) {
        param_1[1] = 1;
        return;
      }
    }
  }
  local_34[0] = local_2c;
  FUN_00050e40(local_34,param_2,param_2 + param_3,0);
  puVar1 = local_34[0];
  uVar2 = gettext("unknown constant %s");
                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */
  FUN_000654b0(uVar2,puVar1);
  param_1[1] = 0;
  if (local_34[0] == local_2c) {
    return;
  }
  FUN_001e6db0(local_34[0]);
  return;
}


CALL 0x000559e6
ADD EAX,0x1d3b4b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EAX
LEA ECX,[EBX + 0xffff7260]
SUB ESP,0x3c
MOV ESI,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x3c],EAX
MOV EAX,dword ptr [EBP + 0x10]
MOV dword ptr [ESI],ECX
CMP EAX,0xb
JZ 0x001bb518
CMP EAX,0xe
JNZ 0x001bb531
MOV EDI,dword ptr [EBP + -0x3c]
MOV ECX,0xe
MOV ESI,EDX
LEA EDI,[EDI + 0xfff10003]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x001bb531
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x4],0x1
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,0xb
LEA EDI,[EBX + 0xfff0fff7]
MOV ESI,EDX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x001bb598
LEA ECX,[EBP + -0x30]
ADD EAX,EDX
PUSH 0x0
LEA ESI,[EBP + -0x28]
PUSH EAX
PUSH EDX
PUSH ECX
MOV dword ptr [EBP + -0x30],ESI
CALL 0x00050e40
MOV EDX,dword ptr [EBP + -0x3c]
MOV EDI,dword ptr [EBP + -0x30]
LEA EAX,[EDX + 0xfff10038]
MOV EBX,EDX
MOV dword ptr [ESP],EAX
CALL 0x000293b0
POP EDX
POP ECX
PUSH EDI
MOV EDI,dword ptr [EBP + -0x3c]
PUSH EAX
MOV EBX,EDI
CALL 0x000654b0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV dword ptr [EAX + 0x4],0x0
MOV EAX,dword ptr [EBP + -0x30]
CMP EAX,ESI
JZ 0x001bb509
SUB ESP,0xc
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x4],0x0
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  *param_1 = &PTR_FUN_00386260;\n  bVar6 = param_3 < 0xb;\n  bVar7 = param_3 == 0xb;\n  if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }\n  local_34[0] = local_2c;\n  FUN_00050e40(local_34,param_2,param_2 + param_3,0);\n  puVar1 = local_34[0];\n  uVar2 = gettext("unknown constant %s");\n                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */\n  FUN_000654b0(uVar2,puVar1);\n  param_1[1] = 0;\n  if (local_34[0] == local_2c) {\n    return;\n  }\n  FUN_001e6db0(local_34[0]);\n  return;\n}\n\n" comment (function_definition "void FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  *param_1 = &PTR_FUN_00386260;\n  bVar6 = param_3 < 0xb;\n  bVar7 = param_3 == 0xb;\n  if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }\n  local_34[0] = local_2c;\n  FUN_00050e40(local_34,param_2,param_2 + param_3,0);\n  puVar1 = local_34[0];\n  uVar2 = gettext("unknown constant %s");\n                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */\n  FUN_000654b0(uVar2,puVar1);\n  param_1[1] = 0;\n  if (local_34[0] == local_2c) {\n    return;\n  }\n  FUN_001e6db0(local_34[0]);\n  return;\n}" primitive_type (function_declarator "FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)" identifier (parameter_list "(undefined4 *param_1,byte *param_2,uint param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  *param_1 = &PTR_FUN_00386260;\n  bVar6 = param_3 < 0xb;\n  bVar7 = param_3 == 0xb;\n  if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }\n  local_34[0] = local_2c;\n  FUN_00050e40(local_34,param_2,param_2 + param_3,0);\n  puVar1 = local_34[0];\n  uVar2 = gettext("unknown constant %s");\n                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */\n  FUN_000654b0(uVar2,puVar1);\n  param_1[1] = 0;\n  if (local_34[0] == local_2c) {\n    return;\n  }\n  FUN_001e6db0(local_34[0]);\n  return;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "*param_1 = &PTR_FUN_00386260;" (assignment_expression "*param_1 = &PTR_FUN_00386260" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_00386260" & identifier)) ;) (expression_statement "bVar6 = param_3 < 0xb;" (assignment_expression "bVar6 = param_3 < 0xb" identifier = (binary_expression "param_3 < 0xb" identifier < number_literal)) ;) (expression_statement "bVar7 = param_3 == 0xb;" (assignment_expression "bVar7 = param_3 == 0xb" identifier = (binary_expression "param_3 == 0xb" identifier == number_literal)) ;) (if_statement "if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }" { (expression_statement "iVar3 = 0xb;" (assignment_expression "iVar3 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"MAXPAGESIZE";" (assignment_expression "pbVar5 = (byte *)"MAXPAGESIZE"" identifier = (cast_expression "(byte *)"MAXPAGESIZE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""MAXPAGESIZE"" " string_content "))) ;) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);" do (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (if_statement "if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }" if (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" ( (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) == identifier) )) (compound_statement "{\n      param_1[1] = 0;\n      return;\n    }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" else (compound_statement "{\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" { (expression_statement "bVar6 = param_3 < 0xe;" (assignment_expression "bVar6 = param_3 < 0xe" identifier = (binary_expression "param_3 < 0xe" identifier < number_literal)) ;) (expression_statement "bVar7 = param_3 == 0xe;" (assignment_expression "bVar7 = param_3 == 0xe" identifier = (binary_expression "param_3 == 0xe" identifier == number_literal)) ;) (if_statement "if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }" { (expression_statement "iVar3 = 0xe;" (assignment_expression "iVar3 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"COMMONPAGESIZE";" (assignment_expression "pbVar5 = (byte *)"COMMONPAGESIZE"" identifier = (cast_expression "(byte *)"COMMONPAGESIZE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""COMMONPAGESIZE"" " string_content "))) ;) (do_statement "do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" do (compound_statement "{\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (if_statement "if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }" if (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" ( (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) == identifier) )) (compound_statement "{\n        param_1[1] = 1;\n        return;\n      }" { (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) })) }))) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00050e40(local_34,param_2,param_2 + param_3,0);" (call_expression "FUN_00050e40(local_34,param_2,param_2 + param_3,0)" identifier (argument_list "(local_34,param_2,param_2 + param_3,0)" ( identifier , identifier , (binary_expression "param_2 + param_3" identifier + identifier) , number_literal ))) ;) (expression_statement "puVar1 = local_34[0];" (assignment_expression "puVar1 = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = gettext("unknown constant %s");" (assignment_expression "uVar2 = gettext("unknown constant %s")" identifier = (call_expression "gettext("unknown constant %s")" identifier (argument_list "("unknown constant %s")" ( (string_literal ""unknown constant %s"" " string_content ") )))) ;) comment (expression_statement "FUN_000654b0(uVar2,puVar1);" (call_expression "FUN_000654b0(uVar2,puVar1)" identifier (argument_list "(uVar2,puVar1)" ( identifier , identifier ))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_34[0] == local_2c) {\n    return;\n  }" if (parenthesized_expression "(local_34[0] == local_2c)" ( (binary_expression "local_34[0] == local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_001e6db0(local_34[0]);" (call_expression "FUN_001e6db0(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: void Constant_expression(Constant_expression * this, char * name,\n   size_t length) */\n\nvoid __thiscall\ngold::Constant_expression::Constant_expression(Constant_expression *this,char *name,size_t length)\n\n{\n  _Alloc_hider _Var1;\n  char *format;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  string s;\n  \n  (this->super_Expression)._vptr_Expression =\n       (_func_int_varargs **)&PTR__Constant_expression_00386260;\n  bVar5 = length < 0xb;\n  bVar6 = length == 0xb;\n  if (bVar6) {\n    iVar2 = 0xb;\n    pbVar3 = (byte *)name;\n    pbVar4 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar2 == 0) break;\n      iVar2 = iVar2 + -1;\n      bVar5 = *pbVar3 < *pbVar4;\n      bVar6 = *pbVar3 == *pbVar4;\n      pbVar3 = pbVar3 + 1;\n      pbVar4 = pbVar4 + 1;\n    } while (bVar6);\n    if ((!bVar5 && !bVar6) == bVar5) {\n      this->function_ = CONSTANT_MAXPAGESIZE;\n      return;\n    }\n  }\n  else {\n    bVar5 = length < 0xe;\n    bVar6 = length == 0xe;\n    if (bVar6) {\n      iVar2 = 0xe;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }\n    }\n  }\n  s._M_dataplus._M_p = (pointer)&s.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&s,name,name + length,0);\n  _Var1._M_p = s._M_dataplus._M_p;\n  format = (char *)gettext("unknown constant %s");\n                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */\n  gold_error(format,_Var1._M_p);\n  this->function_ = CONSTANT_MAXPAGESIZE;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p == &s.field_2) {\n    return;\n  }\n  operator_delete(s._M_dataplus._M_p);\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Constant_expression::Constant_expression(Constant_expression *this,char *name,size_t length)\n\n{\n  _Alloc_hider _Var1;\n  char *format;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  string s;\n  \n  (this->super_Expression)._vptr_Expression =\n       (_func_int_varargs **)&PTR__Constant_expression_00386260;\n  bVar5 = length < 0xb;\n  bVar6 = length == 0xb;\n  if (bVar6) {\n    iVar2 = 0xb;\n    pbVar3 = (byte *)name;\n    pbVar4 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar2 == 0) break;\n      iVar2 = iVar2 + -1;\n      bVar5 = *pbVar3 < *pbVar4;\n      bVar6 = *pbVar3 == *pbVar4;\n      pbVar3 = pbVar3 + 1;\n      pbVar4 = pbVar4 + 1;\n    } while (bVar6);\n    if ((!bVar5 && !bVar6) == bVar5) {\n      this->function_ = CONSTANT_MAXPAGESIZE;\n      return;\n    }\n  }\n  else {\n    bVar5 = length < 0xe;\n    bVar6 = length == 0xe;\n    if (bVar6) {\n      iVar2 = 0xe;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }\n    }\n  }\n  s._M_dataplus._M_p = (pointer)&s.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&s,name,name + length,0);\n  _Var1._M_p = s._M_dataplus._M_p;\n  format = (char *)gettext("unknown constant %s");\n                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */\n  gold_error(format,_Var1._M_p);\n  this->function_ = CONSTANT_MAXPAGESIZE;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p == &s.field_2) {\n    return;\n  }\n  operator_delete(s._M_dataplus._M_p);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Constant_expression::" identifier : : identifier : :) (function_declarator "Constant_expression(Constant_expression *this,char *name,size_t length)" identifier (parameter_list "(Constant_expression *this,char *name,size_t length)" ( (parameter_declaration "Constant_expression *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "size_t length" primitive_type identifier) ))) (compound_statement "{\n  _Alloc_hider _Var1;\n  char *format;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  string s;\n  \n  (this->super_Expression)._vptr_Expression =\n       (_func_int_varargs **)&PTR__Constant_expression_00386260;\n  bVar5 = length < 0xb;\n  bVar6 = length == 0xb;\n  if (bVar6) {\n    iVar2 = 0xb;\n    pbVar3 = (byte *)name;\n    pbVar4 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar2 == 0) break;\n      iVar2 = iVar2 + -1;\n      bVar5 = *pbVar3 < *pbVar4;\n      bVar6 = *pbVar3 == *pbVar4;\n      pbVar3 = pbVar3 + 1;\n      pbVar4 = pbVar4 + 1;\n    } while (bVar6);\n    if ((!bVar5 && !bVar6) == bVar5) {\n      this->function_ = CONSTANT_MAXPAGESIZE;\n      return;\n    }\n  }\n  else {\n    bVar5 = length < 0xe;\n    bVar6 = length == 0xe;\n    if (bVar6) {\n      iVar2 = 0xe;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }\n    }\n  }\n  s._M_dataplus._M_p = (pointer)&s.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&s,name,name + length,0);\n  _Var1._M_p = s._M_dataplus._M_p;\n  format = (char *)gettext("unknown constant %s");\n                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */\n  gold_error(format,_Var1._M_p);\n  this->function_ = CONSTANT_MAXPAGESIZE;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p == &s.field_2) {\n    return;\n  }\n  operator_delete(s._M_dataplus._M_p);\n  return;\n}" { (declaration "_Alloc_hider _Var1;" type_identifier identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "string s;" type_identifier identifier ;) (expression_statement "(this->super_Expression)._vptr_Expression =\n       (_func_int_varargs **)&PTR__Constant_expression_00386260;" (assignment_expression "(this->super_Expression)._vptr_Expression =\n       (_func_int_varargs **)&PTR__Constant_expression_00386260" (field_expression "(this->super_Expression)._vptr_Expression" (parenthesized_expression "(this->super_Expression)" ( (field_expression "this->super_Expression" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Constant_expression_00386260" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Constant_expression_00386260" & identifier))) ;) (expression_statement "bVar5 = length < 0xb;" (assignment_expression "bVar5 = length < 0xb" identifier = (binary_expression "length < 0xb" identifier < number_literal)) ;) (expression_statement "bVar6 = length == 0xb;" (assignment_expression "bVar6 = length == 0xb" identifier = (binary_expression "length == 0xb" identifier == number_literal)) ;) (if_statement "if (bVar6) {\n    iVar2 = 0xb;\n    pbVar3 = (byte *)name;\n    pbVar4 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar2 == 0) break;\n      iVar2 = iVar2 + -1;\n      bVar5 = *pbVar3 < *pbVar4;\n      bVar6 = *pbVar3 == *pbVar4;\n      pbVar3 = pbVar3 + 1;\n      pbVar4 = pbVar4 + 1;\n    } while (bVar6);\n    if ((!bVar5 && !bVar6) == bVar5) {\n      this->function_ = CONSTANT_MAXPAGESIZE;\n      return;\n    }\n  }\n  else {\n    bVar5 = length < 0xe;\n    bVar6 = length == 0xe;\n    if (bVar6) {\n      iVar2 = 0xe;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n    iVar2 = 0xb;\n    pbVar3 = (byte *)name;\n    pbVar4 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar2 == 0) break;\n      iVar2 = iVar2 + -1;\n      bVar5 = *pbVar3 < *pbVar4;\n      bVar6 = *pbVar3 == *pbVar4;\n      pbVar3 = pbVar3 + 1;\n      pbVar4 = pbVar4 + 1;\n    } while (bVar6);\n    if ((!bVar5 && !bVar6) == bVar5) {\n      this->function_ = CONSTANT_MAXPAGESIZE;\n      return;\n    }\n  }" { (expression_statement "iVar2 = 0xb;" (assignment_expression "iVar2 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar3 = (byte *)name;" (assignment_expression "pbVar3 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar4 = (byte *)"MAXPAGESIZE";" (assignment_expression "pbVar4 = (byte *)"MAXPAGESIZE"" identifier = (cast_expression "(byte *)"MAXPAGESIZE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""MAXPAGESIZE"" " string_content "))) ;) (do_statement "do {\n      if (iVar2 == 0) break;\n      iVar2 = iVar2 + -1;\n      bVar5 = *pbVar3 < *pbVar4;\n      bVar6 = *pbVar3 == *pbVar4;\n      pbVar3 = pbVar3 + 1;\n      pbVar4 = pbVar4 + 1;\n    } while (bVar6);" do (compound_statement "{\n      if (iVar2 == 0) break;\n      iVar2 = iVar2 + -1;\n      bVar5 = *pbVar3 < *pbVar4;\n      bVar6 = *pbVar3 == *pbVar4;\n      pbVar3 = pbVar3 + 1;\n      pbVar4 = pbVar4 + 1;\n    }" { (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "bVar5 = *pbVar3 < *pbVar4;" (assignment_expression "bVar5 = *pbVar3 < *pbVar4" identifier = (binary_expression "*pbVar3 < *pbVar4" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "bVar6 = *pbVar3 == *pbVar4;" (assignment_expression "bVar6 = *pbVar3 == *pbVar4" identifier = (binary_expression "*pbVar3 == *pbVar4" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar6)" ( identifier )) ;) (if_statement "if ((!bVar5 && !bVar6) == bVar5) {\n      this->function_ = CONSTANT_MAXPAGESIZE;\n      return;\n    }" if (parenthesized_expression "((!bVar5 && !bVar6) == bVar5)" ( (binary_expression "(!bVar5 && !bVar6) == bVar5" (parenthesized_expression "(!bVar5 && !bVar6)" ( (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" ! identifier) && (unary_expression "!bVar6" ! identifier)) )) == identifier) )) (compound_statement "{\n      this->function_ = CONSTANT_MAXPAGESIZE;\n      return;\n    }" { (expression_statement "this->function_ = CONSTANT_MAXPAGESIZE;" (assignment_expression "this->function_ = CONSTANT_MAXPAGESIZE" (field_expression "this->function_" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    bVar5 = length < 0xe;\n    bVar6 = length == 0xe;\n    if (bVar6) {\n      iVar2 = 0xe;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }\n    }\n  }" else (compound_statement "{\n    bVar5 = length < 0xe;\n    bVar6 = length == 0xe;\n    if (bVar6) {\n      iVar2 = 0xe;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }\n    }\n  }" { (expression_statement "bVar5 = length < 0xe;" (assignment_expression "bVar5 = length < 0xe" identifier = (binary_expression "length < 0xe" identifier < number_literal)) ;) (expression_statement "bVar6 = length == 0xe;" (assignment_expression "bVar6 = length == 0xe" identifier = (binary_expression "length == 0xe" identifier == number_literal)) ;) (if_statement "if (bVar6) {\n      iVar2 = 0xe;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }\n    }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n      iVar2 = 0xe;\n      pbVar3 = (byte *)name;\n      pbVar4 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }\n    }" { (expression_statement "iVar2 = 0xe;" (assignment_expression "iVar2 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar3 = (byte *)name;" (assignment_expression "pbVar3 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar4 = (byte *)"COMMONPAGESIZE";" (assignment_expression "pbVar4 = (byte *)"COMMONPAGESIZE"" identifier = (cast_expression "(byte *)"COMMONPAGESIZE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""COMMONPAGESIZE"" " string_content "))) ;) (do_statement "do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (bVar6);" do (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + 1;\n        pbVar4 = pbVar4 + 1;\n      }" { (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "bVar5 = *pbVar3 < *pbVar4;" (assignment_expression "bVar5 = *pbVar3 < *pbVar4" identifier = (binary_expression "*pbVar3 < *pbVar4" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "bVar6 = *pbVar3 == *pbVar4;" (assignment_expression "bVar6 = *pbVar3 == *pbVar4" identifier = (binary_expression "*pbVar3 == *pbVar4" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar6)" ( identifier )) ;) (if_statement "if ((!bVar5 && !bVar6) == bVar5) {\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }" if (parenthesized_expression "((!bVar5 && !bVar6) == bVar5)" ( (binary_expression "(!bVar5 && !bVar6) == bVar5" (parenthesized_expression "(!bVar5 && !bVar6)" ( (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" ! identifier) && (unary_expression "!bVar6" ! identifier)) )) == identifier) )) (compound_statement "{\n        this->function_ = CONSTANT_COMMONPAGESIZE;\n        return;\n      }" { (expression_statement "this->function_ = CONSTANT_COMMONPAGESIZE;" (assignment_expression "this->function_ = CONSTANT_COMMONPAGESIZE" (field_expression "this->function_" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) })) }))) (expression_statement "s._M_dataplus._M_p = (pointer)&s.field_2;" (assignment_expression "s._M_dataplus._M_p = (pointer)&s.field_2" (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&s.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "s.field_2" identifier . field_identifier))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&s,name,name + length,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&s,name,name + length,0);" (binary_expression "_M_construct<char_const*>(&s,name,name + length,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&s,name,name + length,0)" ( (comma_expression "&s,name,name + length,0" (pointer_expression "&s" & identifier) , (comma_expression "name,name + length,0" identifier , (comma_expression "name + length,0" (binary_expression "name + length" identifier + identifier) , number_literal))) ))) ;)) (expression_statement "_Var1._M_p = s._M_dataplus._M_p;" (assignment_expression "_Var1._M_p = s._M_dataplus._M_p" (field_expression "_Var1._M_p" identifier . field_identifier) = (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "format = (char *)gettext("unknown constant %s");" (assignment_expression "format = (char *)gettext("unknown constant %s")" identifier = (cast_expression "(char *)gettext("unknown constant %s")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("unknown constant %s")" identifier (argument_list "("unknown constant %s")" ( (string_literal ""unknown constant %s"" " string_content ") ))))) ;) comment (expression_statement "gold_error(format,_Var1._M_p);" (call_expression "gold_error(format,_Var1._M_p)" identifier (argument_list "(format,_Var1._M_p)" ( identifier , (field_expression "_Var1._M_p" identifier . field_identifier) ))) ;) (expression_statement "this->function_ = CONSTANT_MAXPAGESIZE;" (assignment_expression "this->function_ = CONSTANT_MAXPAGESIZE" (field_expression "this->function_" identifier -> field_identifier) = identifier) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p == &s.field_2) {\n    return;\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p == &s.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)s._M_dataplus._M_p == &s.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)s._M_dataplus._M_p == &s.field_2" (binary_expression "allocator<char>_>_9\n       *)s._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)s._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier))) == (pointer_expression "&s.field_2" & (field_expression "s.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "operator_delete(s._M_dataplus._M_p);" (call_expression "operator_delete(s._M_dataplus._M_p)" identifier (argument_list "(s._M_dataplus._M_p)" ( (field_expression "s._M_dataplus._M_p" (field_expression "s._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  *param_1 = &PTR_FUN_00386260;\n  bVar6 = param_3 < 0xb;\n  bVar7 = param_3 == 0xb;\n  if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }\n  local_34[0] = local_2c;\n  FUN_00050e40(local_34,param_2,param_2 + param_3,0);\n  puVar1 = local_34[0];\n  uVar2 = gettext("unknown constant %s");\n                    \n  FUN_000654b0(uVar2,puVar1);\n  param_1[1] = 0;\n  if (local_34[0] == local_2c) {\n    return;\n  }\n  FUN_001e6db0(local_34[0]);\n  return;\n}\n\n" (function_definition "void FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  *param_1 = &PTR_FUN_00386260;\n  bVar6 = param_3 < 0xb;\n  bVar7 = param_3 == 0xb;\n  if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }\n  local_34[0] = local_2c;\n  FUN_00050e40(local_34,param_2,param_2 + param_3,0);\n  puVar1 = local_34[0];\n  uVar2 = gettext("unknown constant %s");\n                    \n  FUN_000654b0(uVar2,puVar1);\n  param_1[1] = 0;\n  if (local_34[0] == local_2c) {\n    return;\n  }\n  FUN_001e6db0(local_34[0]);\n  return;\n}" primitive_type (function_declarator "FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)" identifier (parameter_list "(undefined4 *param_1,byte *param_2,uint param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  *param_1 = &PTR_FUN_00386260;\n  bVar6 = param_3 < 0xb;\n  bVar7 = param_3 == 0xb;\n  if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }\n  local_34[0] = local_2c;\n  FUN_00050e40(local_34,param_2,param_2 + param_3,0);\n  puVar1 = local_34[0];\n  uVar2 = gettext("unknown constant %s");\n                    \n  FUN_000654b0(uVar2,puVar1);\n  param_1[1] = 0;\n  if (local_34[0] == local_2c) {\n    return;\n  }\n  FUN_001e6db0(local_34[0]);\n  return;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "*param_1 = &PTR_FUN_00386260;" (assignment_expression "*param_1 = &PTR_FUN_00386260" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_00386260" & identifier)) ;) (expression_statement "bVar6 = param_3 < 0xb;" (assignment_expression "bVar6 = param_3 < 0xb" identifier = (binary_expression "param_3 < 0xb" identifier < number_literal)) ;) (expression_statement "bVar7 = param_3 == 0xb;" (assignment_expression "bVar7 = param_3 == 0xb" identifier = (binary_expression "param_3 == 0xb" identifier == number_literal)) ;) (if_statement "if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }" { (expression_statement "iVar3 = 0xb;" (assignment_expression "iVar3 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"MAXPAGESIZE";" (assignment_expression "pbVar5 = (byte *)"MAXPAGESIZE"" identifier = (cast_expression "(byte *)"MAXPAGESIZE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""MAXPAGESIZE"" " string_content "))) ;) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);" do (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (if_statement "if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }" if (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" ( (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) == identifier) )) (compound_statement "{\n      param_1[1] = 0;\n      return;\n    }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" else (compound_statement "{\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" { (expression_statement "bVar6 = param_3 < 0xe;" (assignment_expression "bVar6 = param_3 < 0xe" identifier = (binary_expression "param_3 < 0xe" identifier < number_literal)) ;) (expression_statement "bVar7 = param_3 == 0xe;" (assignment_expression "bVar7 = param_3 == 0xe" identifier = (binary_expression "param_3 == 0xe" identifier == number_literal)) ;) (if_statement "if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }" { (expression_statement "iVar3 = 0xe;" (assignment_expression "iVar3 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)"COMMONPAGESIZE";" (assignment_expression "pbVar5 = (byte *)"COMMONPAGESIZE"" identifier = (cast_expression "(byte *)"COMMONPAGESIZE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""COMMONPAGESIZE"" " string_content "))) ;) (do_statement "do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" do (compound_statement "{\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (if_statement "if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }" if (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" ( (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) == identifier) )) (compound_statement "{\n        param_1[1] = 1;\n        return;\n      }" { (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) })) }))) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00050e40(local_34,param_2,param_2 + param_3,0);" (call_expression "FUN_00050e40(local_34,param_2,param_2 + param_3,0)" identifier (argument_list "(local_34,param_2,param_2 + param_3,0)" ( identifier , identifier , (binary_expression "param_2 + param_3" identifier + identifier) , number_literal ))) ;) (expression_statement "puVar1 = local_34[0];" (assignment_expression "puVar1 = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = gettext("unknown constant %s");" (assignment_expression "uVar2 = gettext("unknown constant %s")" identifier = (call_expression "gettext("unknown constant %s")" identifier (argument_list "("unknown constant %s")" ( (string_literal ""unknown constant %s"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar2,puVar1);" (call_expression "FUN_000654b0(uVar2,puVar1)" identifier (argument_list "(uVar2,puVar1)" ( identifier , identifier ))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_34[0] == local_2c) {\n    return;\n  }" if (parenthesized_expression "(local_34[0] == local_2c)" ( (binary_expression "local_34[0] == local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_001e6db0(local_34[0]);" (call_expression "FUN_001e6db0(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)\n\n{\n  undefined1 *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  *param_1 = &PTR_FUN_00386260;\n  bVar6 = param_3 < 0xb;\n  bVar7 = param_3 == 0xb;\n  if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }\n  local_34[0] = local_2c;\n  FUN_00050e40(local_34,param_2,param_2 + param_3,0);\n  puVar1 = local_34[0];\n  uVar2 = gettext("unknown constant %s");\n                    \n  FUN_000654b0(uVar2,puVar1);\n  param_1[1] = 0;\n  if (local_34[0] == local_2c) {\n    return;\n  }\n  FUN_001e6db0(local_34[0]);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001bb4b0(undefined4 *param_1,byte *param_2,uint param_3)" (identifier "FUN_001bb4b0") (parameter_list "(undefined4 *param_1,byte *param_2,uint param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  *param_1 = &PTR_FUN_00386260;\n  bVar6 = param_3 < 0xb;\n  bVar7 = param_3 == 0xb;\n  if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }\n  local_34[0] = local_2c;\n  FUN_00050e40(local_34,param_2,param_2 + param_3,0);\n  puVar1 = local_34[0];\n  uVar2 = gettext("unknown constant %s");\n                    \n  FUN_000654b0(uVar2,puVar1);\n  param_1[1] = 0;\n  if (local_34[0] == local_2c) {\n    return;\n  }\n  FUN_001e6db0(local_34[0]);\n  return;\n}" ({ "{") (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "undefined1 *local_34 [2];" (type_identifier "undefined1") (pointer_declarator "*local_34 [2]" (* "*") (array_declarator "local_34 [2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "*param_1 = &PTR_FUN_00386260;" (assignment_expression "*param_1 = &PTR_FUN_00386260" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&PTR_FUN_00386260" (& "&") (identifier "PTR_FUN_00386260"))) (; ";")) (expression_statement "bVar6 = param_3 < 0xb;" (assignment_expression "bVar6 = param_3 < 0xb" (identifier "bVar6") (= "=") (binary_expression "param_3 < 0xb" (identifier "param_3") (< "<") (number_literal "0xb"))) (; ";")) (expression_statement "bVar7 = param_3 == 0xb;" (assignment_expression "bVar7 = param_3 == 0xb" (identifier "bVar7") (= "=") (binary_expression "param_3 == 0xb" (identifier "param_3") (== "==") (number_literal "0xb"))) (; ";")) (if_statement "if (bVar7) {\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }\n  else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n    iVar3 = 0xb;\n    pbVar4 = param_2;\n    pbVar5 = (byte *)"MAXPAGESIZE";\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);\n    if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }\n  }" ({ "{") (expression_statement "iVar3 = 0xb;" (assignment_expression "iVar3 = 0xb" (identifier "iVar3") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" (identifier "pbVar4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar5 = (byte *)"MAXPAGESIZE";" (assignment_expression "pbVar5 = (byte *)"MAXPAGESIZE"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"MAXPAGESIZE"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""MAXPAGESIZE"" (" """) (string_content "MAXPAGESIZE") (" """)))) (; ";")) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    } while (bVar7);" (do "do") (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + 1;\n      pbVar5 = pbVar5 + 1;\n    }" ({ "{") (if_statement "if (iVar3 == 0) break;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" (identifier "bVar6") (= "=") (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" (identifier "bVar7") (= "=") (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (; ";")) (if_statement "if ((!bVar6 && !bVar7) == bVar6) {\n      param_1[1] = 0;\n      return;\n    }" (if "if") (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" (( "(") (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" (( "(") (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" (! "!") (identifier "bVar6")) (&& "&&") (unary_expression "!bVar7" (! "!") (identifier "bVar7"))) () ")")) (== "==") (identifier "bVar6")) () ")")) (compound_statement "{\n      param_1[1] = 0;\n      return;\n    }" ({ "{") (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" (else "else") (compound_statement "{\n    bVar6 = param_3 < 0xe;\n    bVar7 = param_3 == 0xe;\n    if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }\n  }" ({ "{") (expression_statement "bVar6 = param_3 < 0xe;" (assignment_expression "bVar6 = param_3 < 0xe" (identifier "bVar6") (= "=") (binary_expression "param_3 < 0xe" (identifier "param_3") (< "<") (number_literal "0xe"))) (; ";")) (expression_statement "bVar7 = param_3 == 0xe;" (assignment_expression "bVar7 = param_3 == 0xe" (identifier "bVar7") (= "=") (binary_expression "param_3 == 0xe" (identifier "param_3") (== "==") (number_literal "0xe"))) (; ";")) (if_statement "if (bVar7) {\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n      iVar3 = 0xe;\n      pbVar4 = param_2;\n      pbVar5 = (byte *)"COMMONPAGESIZE";\n      do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);\n      if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }\n    }" ({ "{") (expression_statement "iVar3 = 0xe;" (assignment_expression "iVar3 = 0xe" (identifier "iVar3") (= "=") (number_literal "0xe")) (; ";")) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" (identifier "pbVar4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar5 = (byte *)"COMMONPAGESIZE";" (assignment_expression "pbVar5 = (byte *)"COMMONPAGESIZE"" (identifier "pbVar5") (= "=") (cast_expression "(byte *)"COMMONPAGESIZE"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""COMMONPAGESIZE"" (" """) (string_content "COMMONPAGESIZE") (" """)))) (; ";")) (do_statement "do {\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      } while (bVar7);" (do "do") (compound_statement "{\n        if (iVar3 == 0) break;\n        iVar3 = iVar3 + -1;\n        bVar6 = *pbVar4 < *pbVar5;\n        bVar7 = *pbVar4 == *pbVar5;\n        pbVar4 = pbVar4 + 1;\n        pbVar5 = pbVar5 + 1;\n      }" ({ "{") (if_statement "if (iVar3 == 0) break;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" (identifier "bVar6") (= "=") (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" (identifier "bVar7") (= "=") (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (; ";")) (if_statement "if ((!bVar6 && !bVar7) == bVar6) {\n        param_1[1] = 1;\n        return;\n      }" (if "if") (parenthesized_expression "((!bVar6 && !bVar7) == bVar6)" (( "(") (binary_expression "(!bVar6 && !bVar7) == bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" (( "(") (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" (! "!") (identifier "bVar6")) (&& "&&") (unary_expression "!bVar7" (! "!") (identifier "bVar7"))) () ")")) (== "==") (identifier "bVar6")) () ")")) (compound_statement "{\n        param_1[1] = 1;\n        return;\n      }" ({ "{") (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "FUN_00050e40(local_34,param_2,param_2 + param_3,0);" (call_expression "FUN_00050e40(local_34,param_2,param_2 + param_3,0)" (identifier "FUN_00050e40") (argument_list "(local_34,param_2,param_2 + param_3,0)" (( "(") (identifier "local_34") (, ",") (identifier "param_2") (, ",") (binary_expression "param_2 + param_3" (identifier "param_2") (+ "+") (identifier "param_3")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar1 = local_34[0];" (assignment_expression "puVar1 = local_34[0]" (identifier "puVar1") (= "=") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uVar2 = gettext("unknown constant %s");" (assignment_expression "uVar2 = gettext("unknown constant %s")" (identifier "uVar2") (= "=") (call_expression "gettext("unknown constant %s")" (identifier "gettext") (argument_list "("unknown constant %s")" (( "(") (string_literal ""unknown constant %s"" (" """) (string_content "unknown constant %s") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654b0(uVar2,puVar1);" (call_expression "FUN_000654b0(uVar2,puVar1)" (identifier "FUN_000654b0") (argument_list "(uVar2,puVar1)" (( "(") (identifier "uVar2") (, ",") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_34[0] == local_2c) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_34[0] == local_2c)" (( "(") (binary_expression "local_34[0] == local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (identifier "local_2c")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_001e6db0(local_34[0]);" (call_expression "FUN_001e6db0(local_34[0])" (identifier "FUN_001e6db0") (argument_list "(local_34[0])" (( "(") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void Constant_expression(Constant_expression * this, char * name,
   size_t length) */

void __thiscall
gold::function_1::function_1(function_1 *this,char *var_8,size_t var_1)

{
  type_1 _Var1;
  char *format;
  int var_2;
  type_2 *var_3;
  type_2 *var_4;
  bool var_5;
  bool bVar6;
  type_3 s;
  
  (this->super_Expression)._vptr_Expression =
       (type_4 **)&PTR__Constant_expression_00386260;
  var_5 = var_1 < 0xb;
  bVar6 = var_1 == 0xb;
  if (bVar6) {
    var_2 = 0xb;
    var_3 = (type_2 *)var_8;
    var_4 = (type_2 *)"MAXPAGESIZE";
    do {
      if (var_2 == 0) break;
      var_2 = var_2 + -1;
      var_5 = *var_3 < *var_4;
      bVar6 = *var_3 == *var_4;
      var_3 = var_3 + 1;
      var_4 = var_4 + 1;
    } while (bVar6);
    if ((!var_5 && !bVar6) == var_5) {
      this->function_ = CONSTANT_MAXPAGESIZE;
      return;
    }
  }
  else {
    var_5 = var_1 < 0xe;
    bVar6 = var_1 == 0xe;
    if (bVar6) {
      var_2 = 0xe;
      var_3 = (type_2 *)var_8;
      var_4 = (type_2 *)"COMMONPAGESIZE";
      do {
        if (var_2 == 0) break;
        var_2 = var_2 + -1;
        var_5 = *var_3 < *var_4;
        bVar6 = *var_3 == *var_4;
        var_3 = var_3 + 1;
        var_4 = var_4 + 1;
      } while (bVar6);
      if ((!var_5 && !bVar6) == var_5) {
        this->function_ = CONSTANT_COMMONPAGESIZE;
        return;
      }
    }
  }
  s._M_dataplus._M_p = (pointer)&s.field_2;
  std::__cxx11::basic_string<var_12,_std::char_traits<var_12>,_std::var_11<var_12>var_13>::
  var_6<var_7*>(&s,var_8,var_8 + var_1,0);
  _Var1._M_p = s._M_dataplus._M_p;
  format = (char *)var_9("unknown constant %s");
                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */
  var_10(format,_Var1._M_p);
  this->function_ = CONSTANT_MAXPAGESIZE;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_12,_std::char_traits<var_12>,_std::var_11<var_12>var_13>var_14
       *)s._M_dataplus._M_p == &s.field_2) {
    return;
  }
  var_15(s._M_dataplus._M_p);
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(undefined4 *param_1,byte *param_2,uint param_3)

{
  undefined1 *puVar1;
  undefined4 uVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  *param_1 = &PTR_FUN_00386260;
  bVar6 = param_3 < 0xb;
  bVar7 = param_3 == 0xb;
  if (bVar7) {
    iVar3 = 0xb;
    pbVar4 = param_2;
    pbVar5 = (byte *)"MAXPAGESIZE";
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar6 = *pbVar4 < *pbVar5;
      bVar7 = *pbVar4 == *pbVar5;
      pbVar4 = pbVar4 + 1;
      pbVar5 = pbVar5 + 1;
    } while (bVar7);
    if ((!bVar6 && !bVar7) == bVar6) {
      param_1[1] = 0;
      return;
    }
  }
  else {
    bVar6 = param_3 < 0xe;
    bVar7 = param_3 == 0xe;
    if (bVar7) {
      iVar3 = 0xe;
      pbVar4 = param_2;
      pbVar5 = (byte *)"COMMONPAGESIZE";
      do {
        if (iVar3 == 0) break;
        iVar3 = iVar3 + -1;
        bVar6 = *pbVar4 < *pbVar5;
        bVar7 = *pbVar4 == *pbVar5;
        pbVar4 = pbVar4 + 1;
        pbVar5 = pbVar5 + 1;
      } while (bVar7);
      if ((!bVar6 && !bVar7) == bVar6) {
        param_1[1] = 1;
        return;
      }
    }
  }
  local_34[0] = local_2c;
  FUN_00050e40(local_34,param_2,param_2 + param_3,0);
  puVar1 = local_34[0];
  uVar2 = gettext("unknown constant %s");
                    /* try { // try from 001bb565 to 001bb569 has its CatchHandler @ 001bb5aa */
  FUN_000654b0(uVar2,puVar1);
  param_1[1] = 0;
  if (local_34[0] == local_2c) {
    return;
  }
  FUN_001e6db0(local_34[0]);
  return;
}

