
/* WARNING: Enum "DT": Some values do not have unique names */

Status __regparm3
anon_unknown.dwarf_d7d43e::Mips_relocate_functions<64,_false>::do_relhi16
          (uchar *view,Mips_relobj<64,_false> *object,Symbol_value<64> *psymval,
          Mips_address addend_hi,Mips_address address,bool is_gp_disp,uint r_type,
          bool extract_addend,Valtype32 addend_lo,Target_mips<64,_false> *target,bool calculate_only
          ,Valtype *calculated_value)

{
  uint uVar1;
  Sized_symbol<64> *pSVar2;
  int iVar3;
  uint uVar4;
  Value VVar5;
  
  uVar1 = *(uint *)view;
  if (extract_addend) {
    addend_hi = (Mips_address)(addend_lo + uVar1 * 0x10000);
  }
  if (is_gp_disp) {
    pSVar2 = target->gp_;
    if (r_type == 0x68) {
      if (pSVar2 == (Sized_symbol<64> *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = (int)pSVar2->value_;
        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&
            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&
           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {
          iVar3 = iVar3 + object->got_info_->offset_;
        }
      }
      iVar3 = iVar3 - ((uint)address + 4 & 0xfffffffc);
    }
    else if (r_type == 0x86) {
      if (pSVar2 == (Sized_symbol<64> *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = (int)pSVar2->value_;
        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&
            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&
           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {
          iVar3 = iVar3 + object->got_info_->offset_;
        }
      }
      iVar3 = iVar3 + ~(uint)address;
    }
    else {
      if (pSVar2 == (Sized_symbol<64> *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = (int)pSVar2->value_;
        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&
            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&
           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {
          iVar3 = iVar3 + object->got_info_->offset_;
        }
      }
      iVar3 = iVar3 - (uint)address;
    }
    uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10;
    if (!calculate_only) {
      *(uint *)view = uVar4 | uVar1 & 0xffff0000;
      return (uint)(0xffff7fff < uVar4 != 0 ||
                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));
    }
  }
  else {
    VVar5 = gold::Symbol_value<64>::value<false>
                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi);
    uVar4 = (int)VVar5 + 0x8000U >> 0x10;
    if (!calculate_only) {
      *(uint *)view = uVar1 & 0xffff0000 | uVar4;
      return STATUS_OKAY;
    }
  }
  *(uint *)calculated_value = uVar4;
  *(undefined4 *)((int)calculated_value + 4) = 0;
  return STATUS_OKAY;
}



bool __regparm3
FUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,
            int param_12,char param_13,uint *param_14)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  uVar1 = *param_1;
  if (param_10 != '\0') {
    param_4 = param_11 + uVar1 * 0x10000;
    param_5 = 0;
  }
  if (param_8 == '\0') {
    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);
    uVar3 = iVar2 + 0x8000U >> 0x10;
    if (param_13 == '\0') {
      *param_1 = uVar1 & 0xffff0000 | uVar3;
      return false;
    }
  }
  else {
    iVar2 = *(int *)(param_12 + 0x18);
    if (param_9 == 0x68) {
      if (iVar2 == 0) {
        iVar2 = 0;
      }
      else {
        iVar2 = *(int *)(iVar2 + 0x30);
        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))
           && (*(int *)(param_2 + 0x1ec) != 0)) {
          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);
        }
      }
      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);
    }
    else if (param_9 == 0x86) {
      if (iVar2 == 0) {
        iVar2 = 0;
      }
      else {
        iVar2 = *(int *)(iVar2 + 0x30);
        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))
           && (*(int *)(param_2 + 0x1ec) != 0)) {
          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);
        }
      }
      iVar2 = iVar2 + ~param_6;
    }
    else {
      if (iVar2 == 0) {
        iVar2 = 0;
      }
      else {
        iVar2 = *(int *)(iVar2 + 0x30);
        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))
           && (*(int *)(param_2 + 0x1ec) != 0)) {
          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);
        }
      }
      iVar2 = iVar2 - param_6;
    }
    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;
    if (param_13 == '\0') {
      *param_1 = uVar3 | uVar1 & 0xffff0000;
      return 0xffff7fff < uVar3 != 0 ||
             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);
    }
  }
  *param_14 = uVar3;
  param_14[1] = 0;
  return false;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
CMP byte ptr [ESP + 0x48],0x0
MOV EDI,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x38]
MOV EBP,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
JZ 0x00191341
MOV EBP,dword ptr [ESP + 0x4c]
SHL EAX,0x10
ADD EBP,EAX
MOV EDI,EBP
XOR EBP,EBP
TEST BL,BL
JZ 0x00191410
MOV EAX,dword ptr [ESP + 0x50]
CMP dword ptr [ESP + 0x44],0x68
MOV EBX,dword ptr [EAX + 0x18]
JZ 0x001913d0
CMP dword ptr [ESP + 0x44],0x86
JZ 0x00191488
TEST EBX,EBX
JZ 0x001914b8
MOV EAX,dword ptr [ESP + 0x50]
MOV ECX,dword ptr [EBX + 0x30]
MOV EAX,dword ptr [EAX + 0x14]
TEST EAX,EAX
JZ 0x00191397
MOV EAX,dword ptr [EAX + 0x80]
TEST EAX,EAX
JZ 0x00191397
MOV EDX,dword ptr [EDX + 0x1ec]
TEST EDX,EDX
JZ 0x00191397
MOV EAX,dword ptr [EDX + 0x98]
ADD ECX,EAX
MOV EDX,ECX
SUB EDX,dword ptr [ESP + 0x8]
LEA EBP,[EDI + 0x8000]
XOR EBX,EBX
ADD EBP,EDX
MOV EDX,ESI
SHR EBP,0x10
MOV ECX,EBP
TEST DL,DL
JZ 0x00191450
MOV EAX,dword ptr [ESP + 0x58]
MOV dword ptr [EAX],ECX
MOV dword ptr [EAX + 0x4],EBX
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EBX,EBX
JZ 0x001914d8
MOV EAX,dword ptr [EAX + 0x14]
MOV ECX,dword ptr [EBX + 0x30]
TEST EAX,EAX
JZ 0x00191400
MOV EBP,dword ptr [EAX + 0x80]
TEST EBP,EBP
JZ 0x00191400
MOV EDX,dword ptr [EDX + 0x1ec]
TEST EDX,EDX
JZ 0x00191400
MOV EAX,dword ptr [EDX + 0x98]
ADD ECX,EAX
NOP
MOV EDX,dword ptr [ESP + 0x8]
ADD EDX,0x4
AND EDX,0xfffffffc
SUB ECX,EDX
MOV EDX,ECX
JMP 0x0019139d
MOV EBX,dword ptr [ESP + 0x4]
PUSH EBP
PUSH EDI
PUSH EDX
PUSH ECX
CALL 0x000934b0
MOV EDI,dword ptr [ESP + 0x1c]
ADD ESP,0x10
LEA ECX,[EAX + 0x8000]
MOV EAX,ECX
XOR DI,DI
MOV ECX,ESI
SHR EAX,0x10
OR EDI,EAX
TEST CL,CL
JNZ 0x001914e4
MOV dword ptr [EBX],EDI
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x4]
XOR DI,DI
OR EBP,EDI
ADD ECX,0x8000
MOV dword ptr [EAX],EBP
MOV EAX,0xffff
ADC EBX,0x0
CMP EAX,ECX
MOV EAX,0x0
SBB EAX,EBX
SETC AL
ADD ESP,0x1c
POP EBX
MOVZX EAX,AL
POP ESI
POP EDI
POP EBP
RET
TEST EBX,EBX
JZ 0x001914e0
MOV EAX,dword ptr [ESP + 0x50]
MOV ECX,dword ptr [EBX + 0x30]
MOV EAX,dword ptr [EAX + 0x14]
TEST EAX,EAX
JZ 0x001914a4
MOV EBX,dword ptr [EAX + 0x80]
TEST EBX,EBX
JNZ 0x001914c0
MOV EDX,ECX
MOV ECX,dword ptr [ESP + 0x8]
NOT ECX
ADD EDX,ECX
JMP 0x0019139d
XOR EDX,EDX
JMP 0x00191399
MOV EDX,dword ptr [EDX + 0x1ec]
TEST EDX,EDX
JZ 0x001914a4
MOV EAX,dword ptr [EDX + 0x98]
ADD ECX,EAX
JMP 0x001914a4
XOR ECX,ECX
JMP 0x00191400
XOR EDX,EDX
JMP 0x001914a6
MOV ECX,EAX
XOR EBX,EBX
JMP 0x001913b6
(translation_unit "bool __regparm3\nFUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  uVar1 = *param_1;\n  if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }\n  if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }\n  *param_14 = uVar3;\n  param_14[1] = 0;\n  return false;\n}\n\n" (function_definition "bool __regparm3\nFUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  uVar1 = *param_1;\n  if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }\n  if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }\n  *param_14 = uVar3;\n  param_14[1] = 0;\n  return false;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)" identifier (parameter_list "(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "char param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "char param_10" primitive_type identifier) , (parameter_declaration "int param_11" primitive_type identifier) , (parameter_declaration "int param_12" primitive_type identifier) , (parameter_declaration "char param_13" primitive_type identifier) , (parameter_declaration "uint *param_14" type_identifier (pointer_declarator "*param_14" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  uVar1 = *param_1;\n  if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }\n  if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }\n  *param_14 = uVar3;\n  param_14[1] = 0;\n  return false;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }" if (parenthesized_expression "(param_10 != '\0')" ( (binary_expression "param_10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }" { (expression_statement "param_4 = param_11 + uVar1 * 0x10000;" (assignment_expression "param_4 = param_11 + uVar1 * 0x10000" identifier = (binary_expression "param_11 + uVar1 * 0x10000" identifier + (binary_expression "uVar1 * 0x10000" identifier * number_literal))) ;) (expression_statement "param_5 = 0;" (assignment_expression "param_5 = 0" identifier = number_literal) ;) })) (if_statement "if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" if (parenthesized_expression "(param_8 == '\0')" ( (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }" { (expression_statement "iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);" (assignment_expression "iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5)" identifier = (call_expression "FUN_000934b0(param_3,param_2,param_4,param_5)" identifier (argument_list "(param_3,param_2,param_4,param_5)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar3 = iVar2 + 0x8000U >> 0x10;" (assignment_expression "uVar3 = iVar2 + 0x8000U >> 0x10" identifier = (binary_expression "iVar2 + 0x8000U >> 0x10" (binary_expression "iVar2 + 0x8000U" identifier + number_literal) >> number_literal)) ;) (if_statement "if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }" if (parenthesized_expression "(param_13 == '\0')" ( (binary_expression "param_13 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }" { (expression_statement "*param_1 = uVar1 & 0xffff0000 | uVar3;" (assignment_expression "*param_1 = uVar1 & 0xffff0000 | uVar3" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 & 0xffff0000 | uVar3" (binary_expression "uVar1 & 0xffff0000" identifier & number_literal) | identifier)) ;) (return_statement "return false;" return false ;) })) }) (else_clause "else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" else (compound_statement "{\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" { (expression_statement "iVar2 = *(int *)(param_12 + 0x18);" (assignment_expression "iVar2 = *(int *)(param_12 + 0x18)" identifier = (pointer_expression "*(int *)(param_12 + 0x18)" * (cast_expression "(int *)(param_12 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x18)" ( (binary_expression "param_12 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" if (parenthesized_expression "(param_9 == 0x68)" ( (binary_expression "param_9 == 0x68" identifier == number_literal) )) (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }" { (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" else (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" { (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" identifier = (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" if (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" ( (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" ( (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" ( (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" ( (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" * (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" ( (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" ( (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" { (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier = (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier + (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" * (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" ( (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) + number_literal) )))))) ;) })) }))) (expression_statement "iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);" (assignment_expression "iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc)" identifier = (binary_expression "iVar2 - (param_6 + 4 & 0xfffffffc)" identifier - (parenthesized_expression "(param_6 + 4 & 0xfffffffc)" ( (binary_expression "param_6 + 4 & 0xfffffffc" (binary_expression "param_6 + 4" identifier + number_literal) & number_literal) )))) ;) }) (else_clause "else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" else (if_statement "if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" if (parenthesized_expression "(param_9 == 0x86)" ( (binary_expression "param_9 == 0x86" identifier == number_literal) )) (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }" { (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" else (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" { (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" identifier = (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" if (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" ( (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" ( (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" ( (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" ( (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" * (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" ( (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" ( (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" { (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier = (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier + (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" * (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" ( (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) + number_literal) )))))) ;) })) }))) (expression_statement "iVar2 = iVar2 + ~param_6;" (assignment_expression "iVar2 = iVar2 + ~param_6" identifier = (binary_expression "iVar2 + ~param_6" identifier + (unary_expression "~param_6" ~ identifier))) ;) }) (else_clause "else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" else (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" { (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" else (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" { (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" identifier = (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" if (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" ( (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" ( (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" ( (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" ( (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" * (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" ( (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" ( (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" { (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier = (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier + (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" * (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" ( (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) + number_literal) )))))) ;) })) }))) (expression_statement "iVar2 = iVar2 - param_6;" (assignment_expression "iVar2 = iVar2 - param_6" identifier = (binary_expression "iVar2 - param_6" identifier - identifier)) ;) }))))) (expression_statement "uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;" (assignment_expression "uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10" identifier = (binary_expression "(uint)(param_4 + 0x8000 + iVar2) >> 0x10" (call_expression "(uint)(param_4 + 0x8000 + iVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 + 0x8000 + iVar2)" ( (binary_expression "param_4 + 0x8000 + iVar2" (binary_expression "param_4 + 0x8000" identifier + number_literal) + identifier) ))) >> number_literal)) ;) (if_statement "if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }" if (parenthesized_expression "(param_13 == '\0')" ( (binary_expression "param_13 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }" { (expression_statement "*param_1 = uVar3 | uVar1 & 0xffff0000;" (assignment_expression "*param_1 = uVar3 | uVar1 & 0xffff0000" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar3 | uVar1 & 0xffff0000" identifier | (binary_expression "uVar1 & 0xffff0000" identifier & number_literal))) ;) (return_statement "return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);" return (binary_expression "0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000)" (binary_expression "0xffff7fff < uVar3 != 0" (binary_expression "0xffff7fff < uVar3" number_literal < identifier) != number_literal) || (binary_expression "-(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000)" (unary_expression "-(uint)(0xffff7fff < uVar3)" - (call_expression "(uint)(0xffff7fff < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff7fff < uVar3)" ( (binary_expression "0xffff7fff < uVar3" number_literal < identifier) )))) < (call_expression "(uint)(0xffff < uVar3 + 0x8000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff < uVar3 + 0x8000)" ( (binary_expression "0xffff < uVar3 + 0x8000" number_literal < (binary_expression "uVar3 + 0x8000" identifier + number_literal)) ))))) ;) })) }))) (expression_statement "*param_14 = uVar3;" (assignment_expression "*param_14 = uVar3" (pointer_expression "*param_14" * identifier) = identifier) ;) (expression_statement "param_14[1] = 0;" (assignment_expression "param_14[1] = 0" (subscript_expression "param_14[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return false;" return false ;) })))
(ERROR "/* WARNING: Enum "DT": Some values do not have unique names */\n\nStatus __regparm3\nanon_unknown.dwarf_d7d43e::Mips_relocate_functions<64,_false>::do_relhi16\n          (uchar *view,Mips_relobj<64,_false> *object,Symbol_value<64> *psymval,\n          Mips_address addend_hi,Mips_address address,bool is_gp_disp,uint r_type,\n          bool extract_addend,Valtype32 addend_lo,Target_mips<64,_false> *target,bool calculate_only\n          ,Valtype *calculated_value)\n\n{\n  uint uVar1;\n  Sized_symbol<64> *pSVar2;\n  int iVar3;\n  uint uVar4;\n  Value VVar5;\n  \n  uVar1 = *(uint *)view;\n  if (extract_addend) {\n    addend_hi = (Mips_address)(addend_lo + uVar1 * 0x10000);\n  }\n  if (is_gp_disp) {\n    pSVar2 = target->gp_;\n    if (r_type == 0x68) {\n      if (pSVar2 == (Sized_symbol<64> *)0x0) {\n        iVar3 = 0;\n      }\n      else {\n        iVar3 = (int)pSVar2->value_;\n        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 - ((uint)address + 4 & 0xfffffffc);\n    }\n    else if (r_type == 0x86) {\n      if (pSVar2 == (Sized_symbol<64> *)0x0) {\n        iVar3 = 0;\n      }\n      else {\n        iVar3 = (int)pSVar2->value_;\n        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 + ~(uint)address;\n    }\n    else {\n      if (pSVar2 == (Sized_symbol<64> *)0x0) {\n        iVar3 = 0;\n      }\n      else {\n        iVar3 = (int)pSVar2->value_;\n        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 - (uint)address;\n    }\n    uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar4 | uVar1 & 0xffff0000;\n      return (uint)(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));\n    }\n  }\n  else {\n    VVar5 = gold::Symbol_value<64>::value<false>\n                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi);\n    uVar4 = (int)VVar5 + 0x8000U >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar1 & 0xffff0000 | uVar4;\n      return STATUS_OKAY;\n    }\n  }\n  *(uint *)calculated_value = uVar4;\n  *(undefined4 *)((int)calculated_value + 4) = 0;\n  return STATUS_OKAY;\n}\n\n" comment (declaration "Status __regparm3" type_identifier identifier ;) (ERROR "anon_unknown.dwarf_d7d43e::Mips_relocate_functions<64,_false>::do_relhi16\n          (uchar *view,Mips_relobj<64,_false> *object,Symbol_value<64> *psymval,\n          Mips_address addend_hi,Mips_address address,bool is_gp_disp,uint r_type,\n          bool extract_addend,Valtype32 addend_lo,Target_mips<64,_false> *target,bool calculate_only\n          ,Valtype *calculated_value)" (binary_expression "anon_unknown.dwarf_d7d43e::Mips_relocate_functions<64,_false>::do_relhi16\n          (uchar *view,Mips_relobj<64,_false> *object,Symbol_value<64> *psymval,\n          Mips_address addend_hi,Mips_address address,bool is_gp_disp,uint r_type,\n          bool extract_addend,Valtype32 addend_lo,Target_mips<64,_false> *target,bool calculate_only\n          ,Valtype *calculated_value)" (binary_expression "anon_unknown.dwarf_d7d43e::Mips_relocate_functions<64" (field_expression "anon_unknown.dwarf_d7d43e" identifier . field_identifier) (ERROR "::Mips_relocate_functions" : : identifier) < number_literal) (ERROR ",_false" , identifier) > (ERROR "::" : :) (call_expression "do_relhi16\n          (uchar *view,Mips_relobj<64,_false> *object,Symbol_value<64> *psymval,\n          Mips_address addend_hi,Mips_address address,bool is_gp_disp,uint r_type,\n          bool extract_addend,Valtype32 addend_lo,Target_mips<64,_false> *target,bool calculate_only\n          ,Valtype *calculated_value)" identifier (argument_list "(uchar *view,Mips_relobj<64,_false> *object,Symbol_value<64> *psymval,\n          Mips_address addend_hi,Mips_address address,bool is_gp_disp,uint r_type,\n          bool extract_addend,Valtype32 addend_lo,Target_mips<64,_false> *target,bool calculate_only\n          ,Valtype *calculated_value)" ( (binary_expression "uchar *view" identifier * identifier) , (binary_expression "Mips_relobj<64" identifier < number_literal) , (binary_expression "_false> *object" identifier > (pointer_expression "*object" * identifier)) , (binary_expression "Symbol_value<64> *psymval" (binary_expression "Symbol_value<64" identifier < number_literal) > (pointer_expression "*psymval" * identifier)) , identifier (ERROR "addend_hi" identifier) , identifier (ERROR "address" identifier) , (ERROR "bool" identifier) identifier , (ERROR "uint" identifier) identifier , (ERROR "bool" identifier) identifier , identifier (ERROR "addend_lo" identifier) , (binary_expression "Target_mips<64" identifier < number_literal) , (binary_expression "_false> *target" identifier > (pointer_expression "*target" * identifier)) , (ERROR "bool" identifier) identifier , (binary_expression "Valtype *calculated_value" identifier * identifier) ))))) { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "Sized_symbol<64> *pSVar2;" (binary_expression "Sized_symbol<64> *pSVar2" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*pSVar2" * identifier)) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "Value VVar5;" type_identifier identifier ;) (expression_statement "uVar1 = *(uint *)view;" (assignment_expression "uVar1 = *(uint *)view" identifier = (pointer_expression "*(uint *)view" * (cast_expression "(uint *)view" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (extract_addend) {\n    addend_hi = (Mips_address)(addend_lo + uVar1 * 0x10000);\n  }" if (parenthesized_expression "(extract_addend)" ( identifier )) (compound_statement "{\n    addend_hi = (Mips_address)(addend_lo + uVar1 * 0x10000);\n  }" { (expression_statement "addend_hi = (Mips_address)(addend_lo + uVar1 * 0x10000);" (assignment_expression "addend_hi = (Mips_address)(addend_lo + uVar1 * 0x10000)" identifier = (call_expression "(Mips_address)(addend_lo + uVar1 * 0x10000)" (parenthesized_expression "(Mips_address)" ( identifier )) (argument_list "(addend_lo + uVar1 * 0x10000)" ( (binary_expression "addend_lo + uVar1 * 0x10000" identifier + (binary_expression "uVar1 * 0x10000" identifier * number_literal)) )))) ;) })) if (parenthesized_expression "(is_gp_disp)" ( identifier )) { (expression_statement "pSVar2 = target->gp_;" (assignment_expression "pSVar2 = target->gp_" identifier = (field_expression "target->gp_" identifier -> field_identifier)) ;) if (parenthesized_expression "(r_type == 0x68)" ( (binary_expression "r_type == 0x68" identifier == number_literal) )) { if (parenthesized_expression "(pSVar2 == (Sized_symbol<64> *)0x0)" ( (binary_expression "pSVar2 == (Sized_symbol<64> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<64> *)0x0)" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n        iVar3 = 0;\n      }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) else { (expression_statement "iVar3 = (int)pSVar2->value_;" (assignment_expression "iVar3 = (int)pSVar2->value_" identifier = (cast_expression "(int)pSVar2->value_" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar2->value_" identifier -> field_identifier))) ;) if ( ( ( (ERROR "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 - ((uint)address + 4 & 0xfffffffc);\n    }\n    else if (r_type == 0x86)" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0))" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0))" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0)" (field_expression "target->got_" identifier -> field_identifier) != (parenthesized_expression "(Mips_output_data_got<64,_false> *)0x0)" ( (comma_expression "Mips_output_data_got<64,_false> *)0x0" (binary_expression "Mips_output_data_got<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) && (parenthesized_expression "(target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0))" ( (binary_expression "target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)" (field_expression "target->got_->primary_got_" (field_expression "target->got_" identifier -> field_identifier) -> field_identifier) != (parenthesized_expression "(Mips_got_info<64,_false> *)0x0)" ( (comma_expression "Mips_got_info<64,_false> *)0x0" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) ))) && (parenthesized_expression "(object->got_info_ != (Mips_got_info<64,_false> *)0x0))" ( (binary_expression "object->got_info_ != (Mips_got_info<64,_false> *)0x0)" (field_expression "object->got_info_" identifier -> field_identifier) != (parenthesized_expression "(Mips_got_info<64,_false> *)0x0)" ( (comma_expression "Mips_got_info<64,_false> *)0x0" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) ))) (compound_statement "{\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }" { (expression_statement "iVar3 = iVar3 + object->got_info_->offset_;" (assignment_expression "iVar3 = iVar3 + object->got_info_->offset_" identifier = (binary_expression "iVar3 + object->got_info_->offset_" identifier + (field_expression "object->got_info_->offset_" (field_expression "object->got_info_" identifier -> field_identifier) -> field_identifier))) ;) }) } (call_expression "iVar3 = iVar3 - ((uint)address + 4 & 0xfffffffc);\n    }\n    else if (r_type == 0x86)" (assignment_expression "iVar3 = iVar3 - ((uint)address + 4 & 0xfffffffc)" identifier = (binary_expression "iVar3 - ((uint)address + 4 & 0xfffffffc)" identifier - (parenthesized_expression "((uint)address + 4 & 0xfffffffc)" ( (binary_expression "(uint)address + 4 & 0xfffffffc" (binary_expression "(uint)address + 4" (cast_expression "(uint)address" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal) & number_literal) )))) (ERROR ";\n    }\n    else if" ; } else if) (argument_list "(r_type == 0x86)" ( (binary_expression "r_type == 0x86" identifier == number_literal) )))) { if (parenthesized_expression "(pSVar2 == (Sized_symbol<64> *)0x0)" ( (binary_expression "pSVar2 == (Sized_symbol<64> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<64> *)0x0)" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n        iVar3 = 0;\n      }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) else { (expression_statement "iVar3 = (int)pSVar2->value_;" (assignment_expression "iVar3 = (int)pSVar2->value_" identifier = (cast_expression "(int)pSVar2->value_" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar2->value_" identifier -> field_identifier))) ;) if ( ( ( (ERROR "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 + ~(uint)address;\n    }\n    else" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0))" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0))" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0)" (field_expression "target->got_" identifier -> field_identifier) != (parenthesized_expression "(Mips_output_data_got<64,_false> *)0x0)" ( (comma_expression "Mips_output_data_got<64,_false> *)0x0" (binary_expression "Mips_output_data_got<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) && (parenthesized_expression "(target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0))" ( (binary_expression "target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)" (field_expression "target->got_->primary_got_" (field_expression "target->got_" identifier -> field_identifier) -> field_identifier) != (parenthesized_expression "(Mips_got_info<64,_false> *)0x0)" ( (comma_expression "Mips_got_info<64,_false> *)0x0" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) ))) && (parenthesized_expression "(object->got_info_ != (Mips_got_info<64,_false> *)0x0))" ( (binary_expression "object->got_info_ != (Mips_got_info<64,_false> *)0x0)" (field_expression "object->got_info_" identifier -> field_identifier) != (parenthesized_expression "(Mips_got_info<64,_false> *)0x0)" ( (comma_expression "Mips_got_info<64,_false> *)0x0" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) ))) (compound_statement "{\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }" { (expression_statement "iVar3 = iVar3 + object->got_info_->offset_;" (assignment_expression "iVar3 = iVar3 + object->got_info_->offset_" identifier = (binary_expression "iVar3 + object->got_info_->offset_" identifier + (field_expression "object->got_info_->offset_" (field_expression "object->got_info_" identifier -> field_identifier) -> field_identifier))) ;) }) } (assignment_expression "iVar3 = iVar3 + ~(uint)address" identifier = (binary_expression "iVar3 + ~(uint)address" identifier + (unary_expression "~(uint)address" ~ (cast_expression "(uint)address" ( (type_descriptor "uint" type_identifier) ) identifier)))) ; } else) { if (parenthesized_expression "(pSVar2 == (Sized_symbol<64> *)0x0)" ( (binary_expression "pSVar2 == (Sized_symbol<64> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<64> *)0x0)" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n        iVar3 = 0;\n      }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) else { (expression_statement "iVar3 = (int)pSVar2->value_;" (assignment_expression "iVar3 = (int)pSVar2->value_" identifier = (cast_expression "(int)pSVar2->value_" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar2->value_" identifier -> field_identifier))) ;) if ( ( (binary_expression "(target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 - (uint)address;\n    }\n    uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar4 | uVar1 & 0xffff0000;\n      return (uint)(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));\n    }\n  }\n  else {\n    VVar5 = gold::Symbol_value<64>::value<false>\n                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi);\n    uVar4 = (int)VVar5 + 0x8000U >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar1 & 0xffff0000 | uVar4;\n      return STATUS_OKAY;\n    }\n  }\n  *(uint *)calculated_value = uVar4;\n  *(undefined4 *)((int)calculated_value + 4) = 0" (binary_expression "(target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 - (uint)address;\n    }\n    uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar4 | uVar1 & 0xffff0000;\n      return (uint)(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));\n    }\n  }\n  else {\n    VVar5 = gold::Symbol_value<64>::value<false>\n                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi);\n    uVar4 = (int)VVar5 + 0x8000U >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar1 & 0xffff0000 | uVar4;\n      return STATUS_OKAY;\n    }\n  }\n  *(uint *)calculated_value = uVar4" (parenthesized_expression "(target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 - (uint)address;\n    }\n    uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar4 | uVar1 & 0xffff0000;\n      return (uint)(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));\n    }\n  }\n  else {\n    VVar5 = gold::Symbol_value<64>::value<false>\n                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi);\n    uVar4 = (int)VVar5 + 0x8000U >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar1 & 0xffff0000 | uVar4;\n      return STATUS_OKAY;\n    }\n  }" ( (ERROR "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }\n      }\n      iVar3 = iVar3 - (uint)address;\n    }\n    uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar4 | uVar1 & 0xffff0000;\n      return (uint)(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));\n    }\n  }\n  else" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&\n           (object->got_info_ != (Mips_got_info<64,_false> *)0x0))" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&\n            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0))" (binary_expression "target->got_ != (Mips_output_data_got<64,_false> *)0x0)" (field_expression "target->got_" identifier -> field_identifier) != (parenthesized_expression "(Mips_output_data_got<64,_false> *)0x0)" ( (comma_expression "Mips_output_data_got<64,_false> *)0x0" (binary_expression "Mips_output_data_got<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) && (parenthesized_expression "(target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0))" ( (binary_expression "target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)" (field_expression "target->got_->primary_got_" (field_expression "target->got_" identifier -> field_identifier) -> field_identifier) != (parenthesized_expression "(Mips_got_info<64,_false> *)0x0)" ( (comma_expression "Mips_got_info<64,_false> *)0x0" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) ))) && (parenthesized_expression "(object->got_info_ != (Mips_got_info<64,_false> *)0x0))" ( (binary_expression "object->got_info_ != (Mips_got_info<64,_false> *)0x0)" (field_expression "object->got_info_" identifier -> field_identifier) != (parenthesized_expression "(Mips_got_info<64,_false> *)0x0)" ( (comma_expression "Mips_got_info<64,_false> *)0x0" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) ))) (compound_statement "{\n          iVar3 = iVar3 + object->got_info_->offset_;\n        }" { (expression_statement "iVar3 = iVar3 + object->got_info_->offset_;" (assignment_expression "iVar3 = iVar3 + object->got_info_->offset_" identifier = (binary_expression "iVar3 + object->got_info_->offset_" identifier + (field_expression "object->got_info_->offset_" (field_expression "object->got_info_" identifier -> field_identifier) -> field_identifier))) ;) }) } (assignment_expression "iVar3 = iVar3 - (uint)address" identifier = (binary_expression "iVar3 - (uint)address" identifier - (cast_expression "(uint)address" ( (type_descriptor "uint" type_identifier) ) identifier))) ; } (call_expression "uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10;\n    if (!calculate_only)" (assignment_expression "uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10" identifier = (binary_expression "(uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10" (call_expression "(uint)((int)addend_hi + 0x8000 + iVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)addend_hi + 0x8000 + iVar3)" ( (binary_expression "(int)addend_hi + 0x8000 + iVar3" (binary_expression "(int)addend_hi + 0x8000" (cast_expression "(int)addend_hi" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) + identifier) ))) >> number_literal)) (ERROR ";\n    if" ; if) (argument_list "(!calculate_only)" ( (unary_expression "!calculate_only" ! identifier) ))) (compound_statement "{\n      *(uint *)view = uVar4 | uVar1 & 0xffff0000;\n      return (uint)(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));\n    }" { (expression_statement "*(uint *)view = uVar4 | uVar1 & 0xffff0000;" (assignment_expression "*(uint *)view = uVar4 | uVar1 & 0xffff0000" (pointer_expression "*(uint *)view" * (cast_expression "(uint *)view" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar4 | uVar1 & 0xffff0000" identifier | (binary_expression "uVar1 & 0xffff0000" identifier & number_literal))) ;) (return_statement "return (uint)(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));" return (call_expression "(uint)(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000))" ( (binary_expression "0xffff7fff < uVar4 != 0 ||\n                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000)" (binary_expression "0xffff7fff < uVar4 != 0" (binary_expression "0xffff7fff < uVar4" number_literal < identifier) != number_literal) || (binary_expression "-(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000)" (unary_expression "-(uint)(0xffff7fff < uVar4)" - (call_expression "(uint)(0xffff7fff < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff7fff < uVar4)" ( (binary_expression "0xffff7fff < uVar4" number_literal < identifier) )))) < (call_expression "(uint)(0xffff < uVar4 + 0x8000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff < uVar4 + 0x8000)" ( (binary_expression "0xffff < uVar4 + 0x8000" number_literal < (binary_expression "uVar4 + 0x8000" identifier + number_literal)) ))))) ))) ;) }) } else) (compound_statement "{\n    VVar5 = gold::Symbol_value<64>::value<false>\n                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi);\n    uVar4 = (int)VVar5 + 0x8000U >> 0x10;\n    if (!calculate_only) {\n      *(uint *)view = uVar1 & 0xffff0000 | uVar4;\n      return STATUS_OKAY;\n    }\n  }" { (ERROR "VVar5 = gold::" (assignment_expression "VVar5 = gold" identifier = identifier) : :) (expression_statement "Symbol_value<64>::value<false>\n                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi);" (binary_expression "Symbol_value<64>::value<false>\n                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi)" (binary_expression "Symbol_value<64>::value<false" (binary_expression "Symbol_value<64>::value" (binary_expression "Symbol_value<64" identifier < number_literal) > (ERROR "::" : :) identifier) < false) > (parenthesized_expression "(psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi)" ( (comma_expression "psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi" identifier , (comma_expression "&object->super_Sized_relobj_file<64,_false>,addend_hi" (binary_expression "&object->super_Sized_relobj_file<64" (pointer_expression "&object->super_Sized_relobj_file" & (field_expression "object->super_Sized_relobj_file" identifier -> field_identifier)) < number_literal) , (binary_expression "_false>,addend_hi" identifier > (ERROR "," ,) identifier))) ))) ;) (expression_statement "uVar4 = (int)VVar5 + 0x8000U >> 0x10;" (assignment_expression "uVar4 = (int)VVar5 + 0x8000U >> 0x10" identifier = (binary_expression "(int)VVar5 + 0x8000U >> 0x10" (binary_expression "(int)VVar5 + 0x8000U" (cast_expression "(int)VVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal)) ;) (if_statement "if (!calculate_only) {\n      *(uint *)view = uVar1 & 0xffff0000 | uVar4;\n      return STATUS_OKAY;\n    }" if (parenthesized_expression "(!calculate_only)" ( (unary_expression "!calculate_only" ! identifier) )) (compound_statement "{\n      *(uint *)view = uVar1 & 0xffff0000 | uVar4;\n      return STATUS_OKAY;\n    }" { (expression_statement "*(uint *)view = uVar1 & 0xffff0000 | uVar4;" (assignment_expression "*(uint *)view = uVar1 & 0xffff0000 | uVar4" (pointer_expression "*(uint *)view" * (cast_expression "(uint *)view" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar1 & 0xffff0000 | uVar4" (binary_expression "uVar1 & 0xffff0000" identifier & number_literal) | identifier)) ;) (return_statement "return STATUS_OKAY;" return identifier ;) })) }) )) * (cast_expression "(uint *)calculated_value = uVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (assignment_expression "calculated_value = uVar4" identifier = identifier))) (ERROR ";" ;) * (cast_expression "(undefined4 *)((int)calculated_value + 4) = 0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (assignment_expression "((int)calculated_value + 4) = 0" (parenthesized_expression "((int)calculated_value + 4)" ( (binary_expression "(int)calculated_value + 4" (cast_expression "(int)calculated_value" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) = number_literal))) ; return identifier ; })
(translation_unit "bool __regparm3\nFUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  uVar1 = *param_1;\n  if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }\n  if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }\n  *param_14 = uVar3;\n  param_14[1] = 0;\n  return false;\n}\n\n" (function_definition "bool __regparm3\nFUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  uVar1 = *param_1;\n  if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }\n  if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }\n  *param_14 = uVar3;\n  param_14[1] = 0;\n  return false;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)" identifier (parameter_list "(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "char param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "char param_10" primitive_type identifier) , (parameter_declaration "int param_11" primitive_type identifier) , (parameter_declaration "int param_12" primitive_type identifier) , (parameter_declaration "char param_13" primitive_type identifier) , (parameter_declaration "uint *param_14" type_identifier (pointer_declarator "*param_14" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  uVar1 = *param_1;\n  if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }\n  if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }\n  *param_14 = uVar3;\n  param_14[1] = 0;\n  return false;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }" if (parenthesized_expression "(param_10 != '\0')" ( (binary_expression "param_10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }" { (expression_statement "param_4 = param_11 + uVar1 * 0x10000;" (assignment_expression "param_4 = param_11 + uVar1 * 0x10000" identifier = (binary_expression "param_11 + uVar1 * 0x10000" identifier + (binary_expression "uVar1 * 0x10000" identifier * number_literal))) ;) (expression_statement "param_5 = 0;" (assignment_expression "param_5 = 0" identifier = number_literal) ;) })) (if_statement "if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" if (parenthesized_expression "(param_8 == '\0')" ( (binary_expression "param_8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }" { (expression_statement "iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);" (assignment_expression "iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5)" identifier = (call_expression "FUN_000934b0(param_3,param_2,param_4,param_5)" identifier (argument_list "(param_3,param_2,param_4,param_5)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar3 = iVar2 + 0x8000U >> 0x10;" (assignment_expression "uVar3 = iVar2 + 0x8000U >> 0x10" identifier = (binary_expression "iVar2 + 0x8000U >> 0x10" (binary_expression "iVar2 + 0x8000U" identifier + number_literal) >> number_literal)) ;) (if_statement "if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }" if (parenthesized_expression "(param_13 == '\0')" ( (binary_expression "param_13 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }" { (expression_statement "*param_1 = uVar1 & 0xffff0000 | uVar3;" (assignment_expression "*param_1 = uVar1 & 0xffff0000 | uVar3" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 & 0xffff0000 | uVar3" (binary_expression "uVar1 & 0xffff0000" identifier & number_literal) | identifier)) ;) (return_statement "return false;" return false ;) })) }) (else_clause "else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" else (compound_statement "{\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" { (expression_statement "iVar2 = *(int *)(param_12 + 0x18);" (assignment_expression "iVar2 = *(int *)(param_12 + 0x18)" identifier = (pointer_expression "*(int *)(param_12 + 0x18)" * (cast_expression "(int *)(param_12 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x18)" ( (binary_expression "param_12 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" if (parenthesized_expression "(param_9 == 0x68)" ( (binary_expression "param_9 == 0x68" identifier == number_literal) )) (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }" { (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" else (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" { (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" identifier = (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" if (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" ( (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" ( (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" ( (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" ( (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" * (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" ( (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" ( (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" { (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier = (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier + (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" * (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" ( (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) + number_literal) )))))) ;) })) }))) (expression_statement "iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);" (assignment_expression "iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc)" identifier = (binary_expression "iVar2 - (param_6 + 4 & 0xfffffffc)" identifier - (parenthesized_expression "(param_6 + 4 & 0xfffffffc)" ( (binary_expression "param_6 + 4 & 0xfffffffc" (binary_expression "param_6 + 4" identifier + number_literal) & number_literal) )))) ;) }) (else_clause "else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" else (if_statement "if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" if (parenthesized_expression "(param_9 == 0x86)" ( (binary_expression "param_9 == 0x86" identifier == number_literal) )) (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }" { (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" else (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" { (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" identifier = (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" if (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" ( (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" ( (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" ( (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" ( (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" * (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" ( (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" ( (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" { (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier = (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier + (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" * (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" ( (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) + number_literal) )))))) ;) })) }))) (expression_statement "iVar2 = iVar2 + ~param_6;" (assignment_expression "iVar2 = iVar2 + ~param_6" identifier = (binary_expression "iVar2 + ~param_6" identifier + (unary_expression "~param_6" ~ identifier))) ;) }) (else_clause "else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" else (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" { (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" else (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" { (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" identifier = (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" if (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" ( (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" ( (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" ( (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" ( (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" * (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" ( (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" * (cast_expression "(int *)(param_12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + 0x14)" ( (binary_expression "param_12 + 0x14" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" ( (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" { (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier = (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" identifier + (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" * (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" ( (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" * (cast_expression "(int *)(param_2 + 0x1ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1ec)" ( (binary_expression "param_2 + 0x1ec" identifier + number_literal) )))) + number_literal) )))))) ;) })) }))) (expression_statement "iVar2 = iVar2 - param_6;" (assignment_expression "iVar2 = iVar2 - param_6" identifier = (binary_expression "iVar2 - param_6" identifier - identifier)) ;) }))))) (expression_statement "uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;" (assignment_expression "uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10" identifier = (binary_expression "(uint)(param_4 + 0x8000 + iVar2) >> 0x10" (call_expression "(uint)(param_4 + 0x8000 + iVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 + 0x8000 + iVar2)" ( (binary_expression "param_4 + 0x8000 + iVar2" (binary_expression "param_4 + 0x8000" identifier + number_literal) + identifier) ))) >> number_literal)) ;) (if_statement "if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }" if (parenthesized_expression "(param_13 == '\0')" ( (binary_expression "param_13 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }" { (expression_statement "*param_1 = uVar3 | uVar1 & 0xffff0000;" (assignment_expression "*param_1 = uVar3 | uVar1 & 0xffff0000" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar3 | uVar1 & 0xffff0000" identifier | (binary_expression "uVar1 & 0xffff0000" identifier & number_literal))) ;) (return_statement "return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);" return (binary_expression "0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000)" (binary_expression "0xffff7fff < uVar3 != 0" (binary_expression "0xffff7fff < uVar3" number_literal < identifier) != number_literal) || (binary_expression "-(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000)" (unary_expression "-(uint)(0xffff7fff < uVar3)" - (call_expression "(uint)(0xffff7fff < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff7fff < uVar3)" ( (binary_expression "0xffff7fff < uVar3" number_literal < identifier) )))) < (call_expression "(uint)(0xffff < uVar3 + 0x8000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff < uVar3 + 0x8000)" ( (binary_expression "0xffff < uVar3 + 0x8000" number_literal < (binary_expression "uVar3 + 0x8000" identifier + number_literal)) ))))) ;) })) }))) (expression_statement "*param_14 = uVar3;" (assignment_expression "*param_14 = uVar3" (pointer_expression "*param_14" * identifier) = identifier) ;) (expression_statement "param_14[1] = 0;" (assignment_expression "param_14[1] = 0" (subscript_expression "param_14[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return false;" return false ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT & LIT) | IDENT)) ;) (return_statement return BOOL ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression ~ IDENT))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | (binary_expression IDENT & LIT))) ;) (return_statement return (binary_expression (binary_expression (binary_expression LIT < IDENT) != LIT) || (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) )))) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < (binary_expression IDENT + LIT)) ))))) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return BOOL ;) })))
(function_definition "bool __regparm3\nFUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  uVar1 = *param_1;\n  if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }\n  if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }\n  *param_14 = uVar3;\n  param_14[1] = 0;\n  return false;\n}" (primitive_type "bool") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00191300(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)" (identifier "FUN_00191300") (parameter_list "(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,\n            int param_12,char param_13,uint *param_14)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "char param_8" (primitive_type "char") (identifier "param_8")) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) (, ",") (parameter_declaration "char param_10" (primitive_type "char") (identifier "param_10")) (, ",") (parameter_declaration "int param_11" (primitive_type "int") (identifier "param_11")) (, ",") (parameter_declaration "int param_12" (primitive_type "int") (identifier "param_12")) (, ",") (parameter_declaration "char param_13" (primitive_type "char") (identifier "param_13")) (, ",") (parameter_declaration "uint *param_14" (type_identifier "uint") (pointer_declarator "*param_14" (* "*") (identifier "param_14"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  \n  uVar1 = *param_1;\n  if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }\n  if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }\n  *param_14 = uVar3;\n  param_14[1] = 0;\n  return false;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (param_10 != '\0') {\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }" (if "if") (parenthesized_expression "(param_10 != '\0')" (( "(") (binary_expression "param_10 != '\0'" (identifier "param_10") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    param_4 = param_11 + uVar1 * 0x10000;\n    param_5 = 0;\n  }" ({ "{") (expression_statement "param_4 = param_11 + uVar1 * 0x10000;" (assignment_expression "param_4 = param_11 + uVar1 * 0x10000" (identifier "param_4") (= "=") (binary_expression "param_11 + uVar1 * 0x10000" (identifier "param_11") (+ "+") (binary_expression "uVar1 * 0x10000" (identifier "uVar1") (* "*") (number_literal "0x10000")))) (; ";")) (expression_statement "param_5 = 0;" (assignment_expression "param_5 = 0" (identifier "param_5") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (param_8 == '\0') {\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }\n  else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" (if "if") (parenthesized_expression "(param_8 == '\0')" (( "(") (binary_expression "param_8 == '\0'" (identifier "param_8") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);\n    uVar3 = iVar2 + 0x8000U >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }\n  }" ({ "{") (expression_statement "iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);" (assignment_expression "iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5)" (identifier "iVar2") (= "=") (call_expression "FUN_000934b0(param_3,param_2,param_4,param_5)" (identifier "FUN_000934b0") (argument_list "(param_3,param_2,param_4,param_5)" (( "(") (identifier "param_3") (, ",") (identifier "param_2") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar3 = iVar2 + 0x8000U >> 0x10;" (assignment_expression "uVar3 = iVar2 + 0x8000U >> 0x10" (identifier "uVar3") (= "=") (binary_expression "iVar2 + 0x8000U >> 0x10" (binary_expression "iVar2 + 0x8000U" (identifier "iVar2") (+ "+") (number_literal "0x8000U")) (>> ">>") (number_literal "0x10"))) (; ";")) (if_statement "if (param_13 == '\0') {\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }" (if "if") (parenthesized_expression "(param_13 == '\0')" (( "(") (binary_expression "param_13 == '\0'" (identifier "param_13") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *param_1 = uVar1 & 0xffff0000 | uVar3;\n      return false;\n    }" ({ "{") (expression_statement "*param_1 = uVar1 & 0xffff0000 | uVar3;" (assignment_expression "*param_1 = uVar1 & 0xffff0000 | uVar3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 & 0xffff0000 | uVar3" (binary_expression "uVar1 & 0xffff0000" (identifier "uVar1") (& "&") (number_literal "0xffff0000")) (| "|") (identifier "uVar3"))) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" (else "else") (compound_statement "{\n    iVar2 = *(int *)(param_12 + 0x18);\n    if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }\n    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;\n    if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }\n  }" ({ "{") (expression_statement "iVar2 = *(int *)(param_12 + 0x18);" (assignment_expression "iVar2 = *(int *)(param_12 + 0x18)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_12 + 0x18)" (* "*") (cast_expression "(int *)(param_12 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + 0x18)" (( "(") (binary_expression "param_12 + 0x18" (identifier "param_12") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (param_9 == 0x68) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }\n    else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" (if "if") (parenthesized_expression "(param_9 == 0x68)" (( "(") (binary_expression "param_9 == 0x68" (identifier "param_9") (== "==") (number_literal "0x68")) () ")")) (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);\n    }" ({ "{") (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar2 = 0;\n      }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" (else "else") (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" ({ "{") (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar2 + 0x30)" (* "*") (cast_expression "(int *)(iVar2 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x30)" (( "(") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" (if "if") (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" (( "(") (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" (( "(") (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" (( "(") (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" (* "*") (cast_expression "(int *)(param_12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + 0x14)" (( "(") (binary_expression "param_12 + 0x14" (identifier "param_12") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" (* "*") (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" (( "(") (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" (* "*") (cast_expression "(int *)(param_12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + 0x14)" (( "(") (binary_expression "param_12 + 0x14" (identifier "param_12") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x80")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" (* "*") (cast_expression "(int *)(param_2 + 0x1ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1ec)" (( "(") (binary_expression "param_2 + 0x1ec" (identifier "param_2") (+ "+") (number_literal "0x1ec")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" ({ "{") (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (identifier "iVar2") (= "=") (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (identifier "iVar2") (+ "+") (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (* "*") (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" (( "(") (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" (* "*") (cast_expression "(int *)(param_2 + 0x1ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1ec)" (( "(") (binary_expression "param_2 + 0x1ec" (identifier "param_2") (+ "+") (number_literal "0x1ec")) () ")")))) (+ "+") (number_literal "0x98")) () ")")))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);" (assignment_expression "iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc)" (identifier "iVar2") (= "=") (binary_expression "iVar2 - (param_6 + 4 & 0xfffffffc)" (identifier "iVar2") (- "-") (parenthesized_expression "(param_6 + 4 & 0xfffffffc)" (( "(") (binary_expression "param_6 + 4 & 0xfffffffc" (binary_expression "param_6 + 4" (identifier "param_6") (+ "+") (number_literal "4")) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (} "}")) (else_clause "else if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" (else "else") (if_statement "if (param_9 == 0x86) {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }\n    else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" (if "if") (parenthesized_expression "(param_9 == 0x86)" (( "(") (binary_expression "param_9 == 0x86" (identifier "param_9") (== "==") (number_literal "0x86")) () ")")) (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 + ~param_6;\n    }" ({ "{") (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar2 = 0;\n      }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" (else "else") (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" ({ "{") (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar2 + 0x30)" (* "*") (cast_expression "(int *)(iVar2 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x30)" (( "(") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" (if "if") (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" (( "(") (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" (( "(") (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" (( "(") (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" (* "*") (cast_expression "(int *)(param_12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + 0x14)" (( "(") (binary_expression "param_12 + 0x14" (identifier "param_12") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" (* "*") (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" (( "(") (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" (* "*") (cast_expression "(int *)(param_12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + 0x14)" (( "(") (binary_expression "param_12 + 0x14" (identifier "param_12") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x80")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" (* "*") (cast_expression "(int *)(param_2 + 0x1ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1ec)" (( "(") (binary_expression "param_2 + 0x1ec" (identifier "param_2") (+ "+") (number_literal "0x1ec")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" ({ "{") (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (identifier "iVar2") (= "=") (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (identifier "iVar2") (+ "+") (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (* "*") (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" (( "(") (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" (* "*") (cast_expression "(int *)(param_2 + 0x1ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1ec)" (( "(") (binary_expression "param_2 + 0x1ec" (identifier "param_2") (+ "+") (number_literal "0x1ec")) () ")")))) (+ "+") (number_literal "0x98")) () ")")))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar2 = iVar2 + ~param_6;" (assignment_expression "iVar2 = iVar2 + ~param_6" (identifier "iVar2") (= "=") (binary_expression "iVar2 + ~param_6" (identifier "iVar2") (+ "+") (unary_expression "~param_6" (~ "~") (identifier "param_6")))) (; ";")) (} "}")) (else_clause "else {\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" (else "else") (compound_statement "{\n      if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }\n      iVar2 = iVar2 - param_6;\n    }" ({ "{") (if_statement "if (iVar2 == 0) {\n        iVar2 = 0;\n      }\n      else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar2 = 0;\n      }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" (else "else") (compound_statement "{\n        iVar2 = *(int *)(iVar2 + 0x30);\n        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }\n      }" ({ "{") (expression_statement "iVar2 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x30)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar2 + 0x30)" (* "*") (cast_expression "(int *)(iVar2 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x30)" (( "(") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)) {\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" (if "if") (parenthesized_expression "(((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0))" (( "(") (binary_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))\n           && (*(int *)(param_2 + 0x1ec) != 0)" (parenthesized_expression "((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))" (( "(") (binary_expression "(*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (parenthesized_expression "(*(int *)(param_12 + 0x14) != 0)" (( "(") (binary_expression "*(int *)(param_12 + 0x14) != 0" (pointer_expression "*(int *)(param_12 + 0x14)" (* "*") (cast_expression "(int *)(param_12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + 0x14)" (( "(") (binary_expression "param_12 + 0x14" (identifier "param_12") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0" (pointer_expression "*(int *)(*(int *)(param_12 + 0x14) + 0x80)" (* "*") (cast_expression "(int *)(*(int *)(param_12 + 0x14) + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_12 + 0x14) + 0x80)" (( "(") (binary_expression "*(int *)(param_12 + 0x14) + 0x80" (pointer_expression "*(int *)(param_12 + 0x14)" (* "*") (cast_expression "(int *)(param_12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + 0x14)" (( "(") (binary_expression "param_12 + 0x14" (identifier "param_12") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x80")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_2 + 0x1ec) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x1ec) != 0" (pointer_expression "*(int *)(param_2 + 0x1ec)" (* "*") (cast_expression "(int *)(param_2 + 0x1ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1ec)" (( "(") (binary_expression "param_2 + 0x1ec" (identifier "param_2") (+ "+") (number_literal "0x1ec")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);\n        }" ({ "{") (expression_statement "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);" (assignment_expression "iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (identifier "iVar2") (= "=") (binary_expression "iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (identifier "iVar2") (+ "+") (pointer_expression "*(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (* "*") (cast_expression "(int *)(*(int *)(param_2 + 0x1ec) + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x1ec) + 0x98)" (( "(") (binary_expression "*(int *)(param_2 + 0x1ec) + 0x98" (pointer_expression "*(int *)(param_2 + 0x1ec)" (* "*") (cast_expression "(int *)(param_2 + 0x1ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1ec)" (( "(") (binary_expression "param_2 + 0x1ec" (identifier "param_2") (+ "+") (number_literal "0x1ec")) () ")")))) (+ "+") (number_literal "0x98")) () ")")))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar2 = iVar2 - param_6;" (assignment_expression "iVar2 = iVar2 - param_6" (identifier "iVar2") (= "=") (binary_expression "iVar2 - param_6" (identifier "iVar2") (- "-") (identifier "param_6"))) (; ";")) (} "}")))))) (expression_statement "uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;" (assignment_expression "uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10" (identifier "uVar3") (= "=") (binary_expression "(uint)(param_4 + 0x8000 + iVar2) >> 0x10" (call_expression "(uint)(param_4 + 0x8000 + iVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 + 0x8000 + iVar2)" (( "(") (binary_expression "param_4 + 0x8000 + iVar2" (binary_expression "param_4 + 0x8000" (identifier "param_4") (+ "+") (number_literal "0x8000")) (+ "+") (identifier "iVar2")) () ")"))) (>> ">>") (number_literal "0x10"))) (; ";")) (if_statement "if (param_13 == '\0') {\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }" (if "if") (parenthesized_expression "(param_13 == '\0')" (( "(") (binary_expression "param_13 == '\0'" (identifier "param_13") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *param_1 = uVar3 | uVar1 & 0xffff0000;\n      return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);\n    }" ({ "{") (expression_statement "*param_1 = uVar3 | uVar1 & 0xffff0000;" (assignment_expression "*param_1 = uVar3 | uVar1 & 0xffff0000" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar3 | uVar1 & 0xffff0000" (identifier "uVar3") (| "|") (binary_expression "uVar1 & 0xffff0000" (identifier "uVar1") (& "&") (number_literal "0xffff0000")))) (; ";")) (return_statement "return 0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);" (return "return") (binary_expression "0xffff7fff < uVar3 != 0 ||\n             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000)" (binary_expression "0xffff7fff < uVar3 != 0" (binary_expression "0xffff7fff < uVar3" (number_literal "0xffff7fff") (< "<") (identifier "uVar3")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "-(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000)" (unary_expression "-(uint)(0xffff7fff < uVar3)" (- "-") (call_expression "(uint)(0xffff7fff < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xffff7fff < uVar3)" (( "(") (binary_expression "0xffff7fff < uVar3" (number_literal "0xffff7fff") (< "<") (identifier "uVar3")) () ")")))) (< "<") (call_expression "(uint)(0xffff < uVar3 + 0x8000)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xffff < uVar3 + 0x8000)" (( "(") (binary_expression "0xffff < uVar3 + 0x8000" (number_literal "0xffff") (< "<") (binary_expression "uVar3 + 0x8000" (identifier "uVar3") (+ "+") (number_literal "0x8000"))) () ")"))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "*param_14 = uVar3;" (assignment_expression "*param_14 = uVar3" (pointer_expression "*param_14" (* "*") (identifier "param_14")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_14[1] = 0;" (assignment_expression "param_14[1] = 0" (subscript_expression "param_14[1]" (identifier "param_14") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */

Status __regparm3
anon_unknown.dwarf_d7d43e::Mips_relocate_functions<64,_false>::do_relhi16
          (uchar *view,Mips_relobj<64,_false> *object,Symbol_value<64> *psymval,
          Mips_address addend_hi,Mips_address address,bool is_gp_disp,uint r_type,
          bool extract_addend,Valtype32 addend_lo,Target_mips<64,_false> *target,bool calculate_only
          ,Valtype *calculated_value)

{
  uint uVar1;
  Sized_symbol<64> *pSVar2;
  int iVar3;
  uint uVar4;
  Value VVar5;
  
  uVar1 = *(uint *)view;
  if (extract_addend) {
    addend_hi = (Mips_address)(addend_lo + uVar1 * 0x10000);
  }
  if (is_gp_disp) {
    pSVar2 = target->gp_;
    if (r_type == 0x68) {
      if (pSVar2 == (Sized_symbol<64> *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = (int)pSVar2->value_;
        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&
            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&
           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {
          iVar3 = iVar3 + object->got_info_->offset_;
        }
      }
      iVar3 = iVar3 - ((uint)address + 4 & 0xfffffffc);
    }
    else if (r_type == 0x86) {
      if (pSVar2 == (Sized_symbol<64> *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = (int)pSVar2->value_;
        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&
            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&
           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {
          iVar3 = iVar3 + object->got_info_->offset_;
        }
      }
      iVar3 = iVar3 + ~(uint)address;
    }
    else {
      if (pSVar2 == (Sized_symbol<64> *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = (int)pSVar2->value_;
        if (((target->got_ != (Mips_output_data_got<64,_false> *)0x0) &&
            (target->got_->primary_got_ != (Mips_got_info<64,_false> *)0x0)) &&
           (object->got_info_ != (Mips_got_info<64,_false> *)0x0)) {
          iVar3 = iVar3 + object->got_info_->offset_;
        }
      }
      iVar3 = iVar3 - (uint)address;
    }
    uVar4 = (uint)((int)addend_hi + 0x8000 + iVar3) >> 0x10;
    if (!calculate_only) {
      *(uint *)view = uVar4 | uVar1 & 0xffff0000;
      return (uint)(0xffff7fff < uVar4 != 0 ||
                   -(uint)(0xffff7fff < uVar4) < (uint)(0xffff < uVar4 + 0x8000));
    }
  }
  else {
    VVar5 = gold::Symbol_value<64>::value<false>
                      (psymval,&object->super_Sized_relobj_file<64,_false>,addend_hi);
    uVar4 = (int)VVar5 + 0x8000U >> 0x10;
    if (!calculate_only) {
      *(uint *)view = uVar1 & 0xffff0000 | uVar4;
      return STATUS_OKAY;
    }
  }
  *(uint *)calculated_value = uVar4;
  *(undefined4 *)((int)calculated_value + 4) = 0;
  return STATUS_OKAY;
}


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

bool __regparm3
MASKED(uint *param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
            uint param_6,undefined4 param_7,char param_8,int param_9,char param_10,int param_11,
            int param_12,char param_13,uint *param_14)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  uVar1 = *param_1;
  if (param_10 != '\0') {
    param_4 = param_11 + uVar1 * 0x10000;
    param_5 = 0;
  }
  if (param_8 == '\0') {
    iVar2 = FUN_000934b0(param_3,param_2,param_4,param_5);
    uVar3 = iVar2 + 0x8000U >> 0x10;
    if (param_13 == '\0') {
      *param_1 = uVar1 & 0xffff0000 | uVar3;
      return false;
    }
  }
  else {
    iVar2 = *(int *)(param_12 + 0x18);
    if (param_9 == 0x68) {
      if (iVar2 == 0) {
        iVar2 = 0;
      }
      else {
        iVar2 = *(int *)(iVar2 + 0x30);
        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))
           && (*(int *)(param_2 + 0x1ec) != 0)) {
          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);
        }
      }
      iVar2 = iVar2 - (param_6 + 4 & 0xfffffffc);
    }
    else if (param_9 == 0x86) {
      if (iVar2 == 0) {
        iVar2 = 0;
      }
      else {
        iVar2 = *(int *)(iVar2 + 0x30);
        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))
           && (*(int *)(param_2 + 0x1ec) != 0)) {
          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);
        }
      }
      iVar2 = iVar2 + ~param_6;
    }
    else {
      if (iVar2 == 0) {
        iVar2 = 0;
      }
      else {
        iVar2 = *(int *)(iVar2 + 0x30);
        if (((*(int *)(param_12 + 0x14) != 0) && (*(int *)(*(int *)(param_12 + 0x14) + 0x80) != 0))
           && (*(int *)(param_2 + 0x1ec) != 0)) {
          iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 0x1ec) + 0x98);
        }
      }
      iVar2 = iVar2 - param_6;
    }
    uVar3 = (uint)(param_4 + 0x8000 + iVar2) >> 0x10;
    if (param_13 == '\0') {
      *param_1 = uVar3 | uVar1 & 0xffff0000;
      return 0xffff7fff < uVar3 != 0 ||
             -(uint)(0xffff7fff < uVar3) < (uint)(0xffff < uVar3 + 0x8000);
    }
  }
  *param_14 = uVar3;
  param_14[1] = 0;
  return false;
}

