
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "STT": Some values do not have unique names */
/* DWARF original prototype: uint64_t value(Symbol_expression * this, Expression_eval_info * eei) */

uint64_t __thiscall
gold::Symbol_expression::value(Symbol_expression *this,Expression_eval_info *eei)

{
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

ulonglong FUN_00389bd0(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  byte bVar7;
  
  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);
  if (iVar4 != 0) {
    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {
      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {
        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));
        bVar7 = bVar7 ^ 1;
      }
      else {
        bVar7 = *(int *)(iVar4 + 0xc) != 0;
      }
    }
    else {
      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;
    }
    if (bVar7 != 0) {
      puVar1 = (undefined4 *)param_2[6];
      if (puVar1 != (undefined4 *)0x0) {
        uVar5 = FUN_0034caf0(iVar4);
        *puVar1 = uVar5;
      }
      if ((uint *)param_2[8] != (uint *)0x0) {
        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;
      }
      if ((uint *)param_2[9] != (uint *)0x0) {
        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;
      }
      pbVar2 = (byte *)param_2[10];
      if (pbVar2 != (byte *)0x0) {
        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;
      }
      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);
      }
      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);
      if (iVar3 == 0x20) {
        return (ulonglong)*(uint *)(iVar4 + 0x30);
      }
      if (iVar3 == 0x40) {
        return *(ulonglong *)(iVar4 + 0x30);
      }
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);
    }
  }
  uVar5 = *(undefined4 *)(param_1 + 4);
  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");
  FUN_0023b810(uVar6,uVar5);
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x260427
SUB ESP,0x10
MOV EBP,dword ptr [ESP + 0x24]
MOV EDI,dword ptr [ESP + 0x28]
PUSH 0x0
PUSH dword ptr [EBP + 0x4]
PUSH dword ptr [EDI]
CALL 0x0034ef60
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00389ca0
MOV ESI,EAX
MOVZX EAX,byte ptr [EAX + 0x2a]
AND EAX,0x7
JNZ 0x00389cd0
MOV EAX,dword ptr [ESI + 0xc]
TEST byte ptr [ESI + 0x2b],0x20
JZ 0x00389ce0
TEST EAX,EAX
SETNZ AL
TEST AL,AL
JZ 0x00389ca0
MOV EBP,dword ptr [EDI + 0x18]
TEST EBP,EBP
JZ 0x00389c3c
SUB ESP,0xc
PUSH ESI
CALL 0x0034caf0
ADD ESP,0x10
MOV dword ptr [EBP],EAX
MOV EDX,dword ptr [EDI + 0x20]
TEST EDX,EDX
JZ 0x00389c4c
MOVZX EAX,byte ptr [ESI + 0x28]
AND EAX,0xf
MOV dword ptr [EDX],EAX
MOV EDX,dword ptr [EDI + 0x24]
TEST EDX,EDX
JZ 0x00389c5c
MOVZX EAX,byte ptr [ESI + 0x29]
AND EAX,0x3
MOV dword ptr [EDX],EAX
MOV EDX,dword ptr [EDI + 0x28]
TEST EDX,EDX
JZ 0x00389c6c
MOVZX EAX,byte ptr [ESI + 0x29]
SHR AL,0x2
MOV byte ptr [EDX],AL
LEA EAX,[EBX + 0x7c8]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x00389d1e
MOV EAX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX]
CMP EAX,0x20
JZ 0x00389cf8
CMP EAX,0x40
JNZ 0x00389d05
MOV EAX,dword ptr [ESI + 0x30]
MOV EDX,dword ptr [ESI + 0x34]
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
LEA EAX,[EBX + 0xffeb46b0]
MOV ESI,dword ptr [EBP + 0x4]
PUSH EAX
CALL 0x00039440
POP ECX
POP EDI
PUSH ESI
PUSH EAX
CALL 0x0023b810
ADD ESP,0x10
XOR EAX,EAX
XOR EDX,EDX
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP AL,0x4
SETNZ AL
JMP 0x00389c22
SUB ESP,0xc
PUSH EAX
CALL 0x0034c920
ADD ESP,0x10
XOR EAX,0x1
JMP 0x00389c22
MOV EAX,dword ptr [ESI + 0x30]
ADD ESP,0xc
XOR EDX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
LEA EAX,[EBX + 0xffeb4bf0]
PUSH EAX
LEA EAX,[EBX + 0xffeb46fa]
PUSH 0xf9
PUSH EAX
CALL 0x002446e0
LEA EAX,[EBX + 0xffeb4be8]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffe5e26d]
PUSH 0x69
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nulonglong FUN_00389bd0(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  byte bVar7;\n  \n  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);\n  if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");\n  FUN_0023b810(uVar6,uVar5);\n  return 0;\n}\n\n" comment (function_definition "ulonglong FUN_00389bd0(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  byte bVar7;\n  \n  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);\n  if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");\n  FUN_0023b810(uVar6,uVar5);\n  return 0;\n}" type_identifier (function_declarator "FUN_00389bd0(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  byte bVar7;\n  \n  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);\n  if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");\n  FUN_0023b810(uVar6,uVar5);\n  return 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (expression_statement "iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);" (assignment_expression "iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0)" identifier = (call_expression "FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0)" identifier (argument_list "(*param_2,*(undefined4 *)(param_1 + 4),0)" ( (pointer_expression "*param_2" * identifier) , (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }" { (if_statement "if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x2a) & 7)" ( (binary_expression "*(byte *)(iVar4 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar4 + 0x2a)" * (cast_expression "(byte *)(iVar4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2a)" ( (binary_expression "iVar4 + 0x2a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }" { (if_statement "if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x2b) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x2b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)(iVar4 + 0x2b) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x2b)" * (cast_expression "(byte *)(iVar4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2b)" ( (binary_expression "iVar4 + 0x2b" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }" { (expression_statement "bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));" (assignment_expression "bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc))" identifier = (call_expression "FUN_0034c920(*(int *)(iVar4 + 0xc))" identifier (argument_list "(*(int *)(iVar4 + 0xc))" ( (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "bVar7 = bVar7 ^ 1;" (assignment_expression "bVar7 = bVar7 ^ 1" identifier = (binary_expression "bVar7 ^ 1" identifier ^ number_literal)) ;) }) (else_clause "else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" else (compound_statement "{\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" { (expression_statement "bVar7 = *(int *)(iVar4 + 0xc) != 0;" (assignment_expression "bVar7 = *(int *)(iVar4 + 0xc) != 0" identifier = (binary_expression "*(int *)(iVar4 + 0xc) != 0" (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) != number_literal)) ;) }))) }) (else_clause "else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" else (compound_statement "{\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" { (expression_statement "bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;" (assignment_expression "bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4" identifier = (binary_expression "(*(byte *)(iVar4 + 0x2a) & 7) != 4" (parenthesized_expression "(*(byte *)(iVar4 + 0x2a) & 7)" ( (binary_expression "*(byte *)(iVar4 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar4 + 0x2a)" * (cast_expression "(byte *)(iVar4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2a)" ( (binary_expression "iVar4 + 0x2a" identifier + number_literal) )))) & number_literal) )) != number_literal)) ;) }))) (if_statement "if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }" { (expression_statement "puVar1 = (undefined4 *)param_2[6];" (assignment_expression "puVar1 = (undefined4 *)param_2[6]" identifier = (cast_expression "(undefined4 *)param_2[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[6]" identifier [ number_literal ]))) ;) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }" if (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" ( (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }" { (expression_statement "uVar5 = FUN_0034caf0(iVar4);" (assignment_expression "uVar5 = FUN_0034caf0(iVar4)" identifier = (call_expression "FUN_0034caf0(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "*puVar1 = uVar5;" (assignment_expression "*puVar1 = uVar5" (pointer_expression "*puVar1" * identifier) = identifier) ;) })) (if_statement "if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }" if (parenthesized_expression "((uint *)param_2[8] != (uint *)0x0)" ( (binary_expression "(uint *)param_2[8] != (uint *)0x0" (cast_expression "(uint *)param_2[8]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[8]" identifier [ number_literal ])) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }" { (expression_statement "*(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;" (assignment_expression "*(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf" (pointer_expression "*(uint *)param_2[8]" * (cast_expression "(uint *)param_2[8]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[8]" identifier [ number_literal ]))) = (binary_expression "*(byte *)(iVar4 + 0x28) & 0xf" (pointer_expression "*(byte *)(iVar4 + 0x28)" * (cast_expression "(byte *)(iVar4 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) )))) & number_literal)) ;) })) (if_statement "if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }" if (parenthesized_expression "((uint *)param_2[9] != (uint *)0x0)" ( (binary_expression "(uint *)param_2[9] != (uint *)0x0" (cast_expression "(uint *)param_2[9]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[9]" identifier [ number_literal ])) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }" { (expression_statement "*(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;" (assignment_expression "*(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3" (pointer_expression "*(uint *)param_2[9]" * (cast_expression "(uint *)param_2[9]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[9]" identifier [ number_literal ]))) = (binary_expression "*(byte *)(iVar4 + 0x29) & 3" (pointer_expression "*(byte *)(iVar4 + 0x29)" * (cast_expression "(byte *)(iVar4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x29)" ( (binary_expression "iVar4 + 0x29" identifier + number_literal) )))) & number_literal)) ;) })) (expression_statement "pbVar2 = (byte *)param_2[10];" (assignment_expression "pbVar2 = (byte *)param_2[10]" identifier = (cast_expression "(byte *)param_2[10]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }" if (parenthesized_expression "(pbVar2 != (byte *)0x0)" ( (binary_expression "pbVar2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }" { (expression_statement "*pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;" (assignment_expression "*pbVar2 = *(byte *)(iVar4 + 0x29) >> 2" (pointer_expression "*pbVar2" * identifier) = (binary_expression "*(byte *)(iVar4 + 0x29) >> 2" (pointer_expression "*(byte *)(iVar4 + 0x29)" * (cast_expression "(byte *)(iVar4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x29)" ( (binary_expression "iVar4 + 0x29" identifier + number_literal) )))) >> number_literal)) ;) })) (if_statement "if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }" if (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 0xc) == 0)" ( (binary_expression "*(int *)(DAT_005ea7c8 + 0xc) == 0" (pointer_expression "*(int *)(DAT_005ea7c8 + 0xc)" * (cast_expression "(int *)(DAT_005ea7c8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_005ea7c8 + 0xc)" ( (binary_expression "DAT_005ea7c8 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }" { comment (expression_statement "FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2)" identifier (argument_list "("../../gold/parameters.h",0x69,"target",pbVar2)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);" (assignment_expression "iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" identifier = (pointer_expression "**(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" * (pointer_expression "*(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" * (cast_expression "(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 0xc) + 4)" ( (binary_expression "*(int *)(DAT_005ea7c8 + 0xc) + 4" (pointer_expression "*(int *)(DAT_005ea7c8 + 0xc)" * (cast_expression "(int *)(DAT_005ea7c8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_005ea7c8 + 0xc)" ( (binary_expression "DAT_005ea7c8 + 0xc" identifier + number_literal) )))) + number_literal) )))))) ;) (if_statement "if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }" if (parenthesized_expression "(iVar3 == 0x20)" ( (binary_expression "iVar3 == 0x20" identifier == number_literal) )) (compound_statement "{\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }" { (return_statement "return (ulonglong)*(uint *)(iVar4 + 0x30);" return (binary_expression "(ulonglong)*(uint *)(iVar4 + 0x30)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(iVar4 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x30)" ( (binary_expression "iVar4 + 0x30" identifier + number_literal) )))) ;) })) (if_statement "if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }" if (parenthesized_expression "(iVar3 == 0x40)" ( (binary_expression "iVar3 == 0x40" identifier == number_literal) )) (compound_statement "{\n        return *(ulonglong *)(iVar4 + 0x30);\n      }" { (return_statement "return *(ulonglong *)(iVar4 + 0x30);" return (pointer_expression "*(ulonglong *)(iVar4 + 0x30)" * (cast_expression "(ulonglong *)(iVar4 + 0x30)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x30)" ( (binary_expression "iVar4 + 0x30" identifier + number_literal) )))) ;) })) comment (expression_statement "FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);" (call_expression "FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3)" identifier (argument_list "("../../gold/expression.cc",0xf9,"value",iVar3)" ( (string_literal ""../../gold/expression.cc"" " string_content ") , number_literal , (string_literal ""value"" " string_content ") , identifier ))) ;) })) })) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = gettext("undefined symbol \'%s\' referenced in expression");" (assignment_expression "uVar6 = gettext("undefined symbol \'%s\' referenced in expression")" identifier = (call_expression "gettext("undefined symbol \'%s\' referenced in expression")" identifier (argument_list "("undefined symbol \'%s\' referenced in expression")" ( (string_literal ""undefined symbol \'%s\' referenced in expression"" " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_0023b810(uVar6,uVar5);" (call_expression "FUN_0023b810(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "STT": Some values do not have unique names */\n/* DWARF original prototype: uint64_t value(Symbol_expression * this, Expression_eval_info * eei) */\n\nuint64_t __thiscall\ngold::Symbol_expression::value(Symbol_expression *this,Expression_eval_info *eei)\n\n{\n}\n\n" comment comment comment comment (function_definition "uint64_t __thiscall\ngold::Symbol_expression::value(Symbol_expression *this,Expression_eval_info *eei)\n\n{\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol_expression::" identifier : : identifier : :) (function_declarator "value(Symbol_expression *this,Expression_eval_info *eei)" identifier (parameter_list "(Symbol_expression *this,Expression_eval_info *eei)" ( (parameter_declaration "Symbol_expression *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Expression_eval_info *eei" type_identifier (pointer_declarator "*eei" * identifier)) ))) (compound_statement "{\n}" { })))
(translation_unit "ulonglong FUN_00389bd0(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  byte bVar7;\n  \n  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);\n  if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");\n  FUN_0023b810(uVar6,uVar5);\n  return 0;\n}\n\n" (function_definition "ulonglong FUN_00389bd0(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  byte bVar7;\n  \n  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);\n  if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");\n  FUN_0023b810(uVar6,uVar5);\n  return 0;\n}" type_identifier (function_declarator "FUN_00389bd0(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  byte bVar7;\n  \n  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);\n  if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");\n  FUN_0023b810(uVar6,uVar5);\n  return 0;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (expression_statement "iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);" (assignment_expression "iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0)" identifier = (call_expression "FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0)" identifier (argument_list "(*param_2,*(undefined4 *)(param_1 + 4),0)" ( (pointer_expression "*param_2" * identifier) , (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }" { (if_statement "if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x2a) & 7)" ( (binary_expression "*(byte *)(iVar4 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar4 + 0x2a)" * (cast_expression "(byte *)(iVar4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2a)" ( (binary_expression "iVar4 + 0x2a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }" { (if_statement "if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x2b) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x2b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)(iVar4 + 0x2b) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x2b)" * (cast_expression "(byte *)(iVar4 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2b)" ( (binary_expression "iVar4 + 0x2b" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }" { (expression_statement "bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));" (assignment_expression "bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc))" identifier = (call_expression "FUN_0034c920(*(int *)(iVar4 + 0xc))" identifier (argument_list "(*(int *)(iVar4 + 0xc))" ( (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "bVar7 = bVar7 ^ 1;" (assignment_expression "bVar7 = bVar7 ^ 1" identifier = (binary_expression "bVar7 ^ 1" identifier ^ number_literal)) ;) }) (else_clause "else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" else (compound_statement "{\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" { (expression_statement "bVar7 = *(int *)(iVar4 + 0xc) != 0;" (assignment_expression "bVar7 = *(int *)(iVar4 + 0xc) != 0" identifier = (binary_expression "*(int *)(iVar4 + 0xc) != 0" (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) != number_literal)) ;) }))) }) (else_clause "else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" else (compound_statement "{\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" { (expression_statement "bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;" (assignment_expression "bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4" identifier = (binary_expression "(*(byte *)(iVar4 + 0x2a) & 7) != 4" (parenthesized_expression "(*(byte *)(iVar4 + 0x2a) & 7)" ( (binary_expression "*(byte *)(iVar4 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar4 + 0x2a)" * (cast_expression "(byte *)(iVar4 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2a)" ( (binary_expression "iVar4 + 0x2a" identifier + number_literal) )))) & number_literal) )) != number_literal)) ;) }))) (if_statement "if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }" { (expression_statement "puVar1 = (undefined4 *)param_2[6];" (assignment_expression "puVar1 = (undefined4 *)param_2[6]" identifier = (cast_expression "(undefined4 *)param_2[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[6]" identifier [ number_literal ]))) ;) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }" if (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" ( (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }" { (expression_statement "uVar5 = FUN_0034caf0(iVar4);" (assignment_expression "uVar5 = FUN_0034caf0(iVar4)" identifier = (call_expression "FUN_0034caf0(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "*puVar1 = uVar5;" (assignment_expression "*puVar1 = uVar5" (pointer_expression "*puVar1" * identifier) = identifier) ;) })) (if_statement "if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }" if (parenthesized_expression "((uint *)param_2[8] != (uint *)0x0)" ( (binary_expression "(uint *)param_2[8] != (uint *)0x0" (cast_expression "(uint *)param_2[8]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[8]" identifier [ number_literal ])) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }" { (expression_statement "*(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;" (assignment_expression "*(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf" (pointer_expression "*(uint *)param_2[8]" * (cast_expression "(uint *)param_2[8]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[8]" identifier [ number_literal ]))) = (binary_expression "*(byte *)(iVar4 + 0x28) & 0xf" (pointer_expression "*(byte *)(iVar4 + 0x28)" * (cast_expression "(byte *)(iVar4 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) )))) & number_literal)) ;) })) (if_statement "if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }" if (parenthesized_expression "((uint *)param_2[9] != (uint *)0x0)" ( (binary_expression "(uint *)param_2[9] != (uint *)0x0" (cast_expression "(uint *)param_2[9]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[9]" identifier [ number_literal ])) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }" { (expression_statement "*(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;" (assignment_expression "*(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3" (pointer_expression "*(uint *)param_2[9]" * (cast_expression "(uint *)param_2[9]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[9]" identifier [ number_literal ]))) = (binary_expression "*(byte *)(iVar4 + 0x29) & 3" (pointer_expression "*(byte *)(iVar4 + 0x29)" * (cast_expression "(byte *)(iVar4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x29)" ( (binary_expression "iVar4 + 0x29" identifier + number_literal) )))) & number_literal)) ;) })) (expression_statement "pbVar2 = (byte *)param_2[10];" (assignment_expression "pbVar2 = (byte *)param_2[10]" identifier = (cast_expression "(byte *)param_2[10]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }" if (parenthesized_expression "(pbVar2 != (byte *)0x0)" ( (binary_expression "pbVar2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }" { (expression_statement "*pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;" (assignment_expression "*pbVar2 = *(byte *)(iVar4 + 0x29) >> 2" (pointer_expression "*pbVar2" * identifier) = (binary_expression "*(byte *)(iVar4 + 0x29) >> 2" (pointer_expression "*(byte *)(iVar4 + 0x29)" * (cast_expression "(byte *)(iVar4 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x29)" ( (binary_expression "iVar4 + 0x29" identifier + number_literal) )))) >> number_literal)) ;) })) (if_statement "if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }" if (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 0xc) == 0)" ( (binary_expression "*(int *)(DAT_005ea7c8 + 0xc) == 0" (pointer_expression "*(int *)(DAT_005ea7c8 + 0xc)" * (cast_expression "(int *)(DAT_005ea7c8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_005ea7c8 + 0xc)" ( (binary_expression "DAT_005ea7c8 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }" { (expression_statement "FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2)" identifier (argument_list "("../../gold/parameters.h",0x69,"target",pbVar2)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);" (assignment_expression "iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" identifier = (pointer_expression "**(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" * (pointer_expression "*(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" * (cast_expression "(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 0xc) + 4)" ( (binary_expression "*(int *)(DAT_005ea7c8 + 0xc) + 4" (pointer_expression "*(int *)(DAT_005ea7c8 + 0xc)" * (cast_expression "(int *)(DAT_005ea7c8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_005ea7c8 + 0xc)" ( (binary_expression "DAT_005ea7c8 + 0xc" identifier + number_literal) )))) + number_literal) )))))) ;) (if_statement "if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }" if (parenthesized_expression "(iVar3 == 0x20)" ( (binary_expression "iVar3 == 0x20" identifier == number_literal) )) (compound_statement "{\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }" { (return_statement "return (ulonglong)*(uint *)(iVar4 + 0x30);" return (binary_expression "(ulonglong)*(uint *)(iVar4 + 0x30)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(iVar4 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x30)" ( (binary_expression "iVar4 + 0x30" identifier + number_literal) )))) ;) })) (if_statement "if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }" if (parenthesized_expression "(iVar3 == 0x40)" ( (binary_expression "iVar3 == 0x40" identifier == number_literal) )) (compound_statement "{\n        return *(ulonglong *)(iVar4 + 0x30);\n      }" { (return_statement "return *(ulonglong *)(iVar4 + 0x30);" return (pointer_expression "*(ulonglong *)(iVar4 + 0x30)" * (cast_expression "(ulonglong *)(iVar4 + 0x30)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x30)" ( (binary_expression "iVar4 + 0x30" identifier + number_literal) )))) ;) })) (expression_statement "FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);" (call_expression "FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3)" identifier (argument_list "("../../gold/expression.cc",0xf9,"value",iVar3)" ( (string_literal ""../../gold/expression.cc"" " string_content ") , number_literal , (string_literal ""value"" " string_content ") , identifier ))) ;) })) })) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = gettext("undefined symbol \'%s\' referenced in expression");" (assignment_expression "uVar6 = gettext("undefined symbol \'%s\' referenced in expression")" identifier = (call_expression "gettext("undefined symbol \'%s\' referenced in expression")" identifier (argument_list "("undefined symbol \'%s\' referenced in expression")" ( (string_literal ""undefined symbol \'%s\' referenced in expression"" " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_0023b810(uVar6,uVar5);" (call_expression "FUN_0023b810(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (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) )) == LIT) )) (compound_statement { (if_statement if (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) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) })) (if_statement if (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 (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (binary_expression (parenthesized_expression ( IDENT )) * (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 { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "ulonglong FUN_00389bd0(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  byte bVar7;\n  \n  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);\n  if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");\n  FUN_0023b810(uVar6,uVar5);\n  return 0;\n}" (type_identifier "ulonglong") (function_declarator "FUN_00389bd0(int param_1,undefined4 *param_2)" (identifier "FUN_00389bd0") (parameter_list "(int param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  byte *pbVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  byte bVar7;\n  \n  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);\n  if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");\n  FUN_0023b810(uVar6,uVar5);\n  return 0;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (expression_statement "iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);" (assignment_expression "iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0)" (identifier "iVar4") (= "=") (call_expression "FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0)" (identifier "FUN_0034ef60") (argument_list "(*param_2,*(undefined4 *)(param_1 + 4),0)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }\n    if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }\n  }" ({ "{") (if_statement "if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }\n    else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar4 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar4 + 0x2a)" (* "*") (cast_expression "(byte *)(iVar4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x2a)" (( "(") (binary_expression "iVar4 + 0x2a" (identifier "iVar4") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }\n    }" ({ "{") (if_statement "if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }\n      else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" (if "if") (parenthesized_expression "((*(byte *)(iVar4 + 0x2b) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x2b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x2b) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x2b) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x2b)" (* "*") (cast_expression "(byte *)(iVar4 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x2b)" (( "(") (binary_expression "iVar4 + 0x2b" (identifier "iVar4") (+ "+") (number_literal "0x2b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));\n        bVar7 = bVar7 ^ 1;\n      }" ({ "{") (expression_statement "bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));" (assignment_expression "bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc))" (identifier "bVar7") (= "=") (call_expression "FUN_0034c920(*(int *)(iVar4 + 0xc))" (identifier "FUN_0034c920") (argument_list "(*(int *)(iVar4 + 0xc))" (( "(") (pointer_expression "*(int *)(iVar4 + 0xc)" (* "*") (cast_expression "(int *)(iVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (expression_statement "bVar7 = bVar7 ^ 1;" (assignment_expression "bVar7 = bVar7 ^ 1" (identifier "bVar7") (= "=") (binary_expression "bVar7 ^ 1" (identifier "bVar7") (^ "^") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" (else "else") (compound_statement "{\n        bVar7 = *(int *)(iVar4 + 0xc) != 0;\n      }" ({ "{") (expression_statement "bVar7 = *(int *)(iVar4 + 0xc) != 0;" (assignment_expression "bVar7 = *(int *)(iVar4 + 0xc) != 0" (identifier "bVar7") (= "=") (binary_expression "*(int *)(iVar4 + 0xc) != 0" (pointer_expression "*(int *)(iVar4 + 0xc)" (* "*") (cast_expression "(int *)(iVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" (else "else") (compound_statement "{\n      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;\n    }" ({ "{") (expression_statement "bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;" (assignment_expression "bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4" (identifier "bVar7") (= "=") (binary_expression "(*(byte *)(iVar4 + 0x2a) & 7) != 4" (parenthesized_expression "(*(byte *)(iVar4 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar4 + 0x2a)" (* "*") (cast_expression "(byte *)(iVar4 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x2a)" (( "(") (binary_expression "iVar4 + 0x2a" (identifier "iVar4") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "4"))) (; ";")) (} "}")))) (if_statement "if (bVar7 != 0) {\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }" (if "if") (parenthesized_expression "(bVar7 != 0)" (( "(") (binary_expression "bVar7 != 0" (identifier "bVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar1 = (undefined4 *)param_2[6];\n      if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }\n      if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }\n      if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }\n      pbVar2 = (byte *)param_2[10];\n      if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }\n      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }\n      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);\n      if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }\n      if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }\n                    \n      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);\n    }" ({ "{") (expression_statement "puVar1 = (undefined4 *)param_2[6];" (assignment_expression "puVar1 = (undefined4 *)param_2[6]" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)param_2[6]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")))) (; ";")) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }" (if "if") (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar1 != (undefined4 *)0x0" (identifier "puVar1") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        uVar5 = FUN_0034caf0(iVar4);\n        *puVar1 = uVar5;\n      }" ({ "{") (expression_statement "uVar5 = FUN_0034caf0(iVar4);" (assignment_expression "uVar5 = FUN_0034caf0(iVar4)" (identifier "uVar5") (= "=") (call_expression "FUN_0034caf0(iVar4)" (identifier "FUN_0034caf0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "*puVar1 = uVar5;" (assignment_expression "*puVar1 = uVar5" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (if_statement "if ((uint *)param_2[8] != (uint *)0x0) {\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }" (if "if") (parenthesized_expression "((uint *)param_2[8] != (uint *)0x0)" (( "(") (binary_expression "(uint *)param_2[8] != (uint *)0x0" (cast_expression "(uint *)param_2[8]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]"))) (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;\n      }" ({ "{") (expression_statement "*(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;" (assignment_expression "*(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf" (pointer_expression "*(uint *)param_2[8]" (* "*") (cast_expression "(uint *)param_2[8]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")))) (= "=") (binary_expression "*(byte *)(iVar4 + 0x28) & 0xf" (pointer_expression "*(byte *)(iVar4 + 0x28)" (* "*") (cast_expression "(byte *)(iVar4 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x28)" (( "(") (binary_expression "iVar4 + 0x28" (identifier "iVar4") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (number_literal "0xf"))) (; ";")) (} "}"))) (if_statement "if ((uint *)param_2[9] != (uint *)0x0) {\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }" (if "if") (parenthesized_expression "((uint *)param_2[9] != (uint *)0x0)" (( "(") (binary_expression "(uint *)param_2[9] != (uint *)0x0" (cast_expression "(uint *)param_2[9]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;\n      }" ({ "{") (expression_statement "*(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;" (assignment_expression "*(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3" (pointer_expression "*(uint *)param_2[9]" (* "*") (cast_expression "(uint *)param_2[9]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")))) (= "=") (binary_expression "*(byte *)(iVar4 + 0x29) & 3" (pointer_expression "*(byte *)(iVar4 + 0x29)" (* "*") (cast_expression "(byte *)(iVar4 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x29)" (( "(") (binary_expression "iVar4 + 0x29" (identifier "iVar4") (+ "+") (number_literal "0x29")) () ")")))) (& "&") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "pbVar2 = (byte *)param_2[10];" (assignment_expression "pbVar2 = (byte *)param_2[10]" (identifier "pbVar2") (= "=") (cast_expression "(byte *)param_2[10]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")))) (; ";")) (if_statement "if (pbVar2 != (byte *)0x0) {\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }" (if "if") (parenthesized_expression "(pbVar2 != (byte *)0x0)" (( "(") (binary_expression "pbVar2 != (byte *)0x0" (identifier "pbVar2") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;\n      }" ({ "{") (expression_statement "*pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;" (assignment_expression "*pbVar2 = *(byte *)(iVar4 + 0x29) >> 2" (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")) (= "=") (binary_expression "*(byte *)(iVar4 + 0x29) >> 2" (pointer_expression "*(byte *)(iVar4 + 0x29)" (* "*") (cast_expression "(byte *)(iVar4 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x29)" (( "(") (binary_expression "iVar4 + 0x29" (identifier "iVar4") (+ "+") (number_literal "0x29")) () ")")))) (>> ">>") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }" (if "if") (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(DAT_005ea7c8 + 0xc) == 0" (pointer_expression "*(int *)(DAT_005ea7c8 + 0xc)" (* "*") (cast_expression "(int *)(DAT_005ea7c8 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_005ea7c8 + 0xc)" (( "(") (binary_expression "DAT_005ea7c8 + 0xc" (identifier "DAT_005ea7c8") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);\n      }" ({ "{") (expression_statement "FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2)" (identifier "FUN_002446e0") (argument_list "("../../gold/parameters.h",0x69,"target",pbVar2)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) (, ",") (identifier "pbVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);" (assignment_expression "iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" (identifier "iVar3") (= "=") (pointer_expression "**(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" (* "*") (pointer_expression "*(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" (* "*") (cast_expression "(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(DAT_005ea7c8 + 0xc) + 4" (pointer_expression "*(int *)(DAT_005ea7c8 + 0xc)" (* "*") (cast_expression "(int *)(DAT_005ea7c8 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_005ea7c8 + 0xc)" (( "(") (binary_expression "DAT_005ea7c8 + 0xc" (identifier "DAT_005ea7c8") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")")))))) (; ";")) (if_statement "if (iVar3 == 0x20) {\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }" (if "if") (parenthesized_expression "(iVar3 == 0x20)" (( "(") (binary_expression "iVar3 == 0x20" (identifier "iVar3") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n        return (ulonglong)*(uint *)(iVar4 + 0x30);\n      }" ({ "{") (return_statement "return (ulonglong)*(uint *)(iVar4 + 0x30);" (return "return") (binary_expression "(ulonglong)*(uint *)(iVar4 + 0x30)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (* "*") (cast_expression "(uint *)(iVar4 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x30)" (( "(") (binary_expression "iVar4 + 0x30" (identifier "iVar4") (+ "+") (number_literal "0x30")) () ")")))) (; ";")) (} "}"))) (if_statement "if (iVar3 == 0x40) {\n        return *(ulonglong *)(iVar4 + 0x30);\n      }" (if "if") (parenthesized_expression "(iVar3 == 0x40)" (( "(") (binary_expression "iVar3 == 0x40" (identifier "iVar3") (== "==") (number_literal "0x40")) () ")")) (compound_statement "{\n        return *(ulonglong *)(iVar4 + 0x30);\n      }" ({ "{") (return_statement "return *(ulonglong *)(iVar4 + 0x30);" (return "return") (pointer_expression "*(ulonglong *)(iVar4 + 0x30)" (* "*") (cast_expression "(ulonglong *)(iVar4 + 0x30)" (( "(") (type_descriptor "ulonglong *" (type_identifier "ulonglong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x30)" (( "(") (binary_expression "iVar4 + 0x30" (identifier "iVar4") (+ "+") (number_literal "0x30")) () ")")))) (; ";")) (} "}"))) (expression_statement "FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);" (call_expression "FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3)" (identifier "FUN_002446e0") (argument_list "("../../gold/expression.cc",0xf9,"value",iVar3)" (( "(") (string_literal ""../../gold/expression.cc"" (" """) (string_content "../../gold/expression.cc") (" """)) (, ",") (number_literal "0xf9") (, ",") (string_literal ""value"" (" """) (string_content "value") (" """)) (, ",") (identifier "iVar3") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 4)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar6 = gettext("undefined symbol \'%s\' referenced in expression");" (assignment_expression "uVar6 = gettext("undefined symbol \'%s\' referenced in expression")" (identifier "uVar6") (= "=") (call_expression "gettext("undefined symbol \'%s\' referenced in expression")" (identifier "gettext") (argument_list "("undefined symbol \'%s\' referenced in expression")" (( "(") (string_literal ""undefined symbol \'%s\' referenced in expression"" (" """) (string_content "undefined symbol ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " referenced in expression") (" """)) () ")")))) (; ";")) (expression_statement "FUN_0023b810(uVar6,uVar5);" (call_expression "FUN_0023b810(uVar6,uVar5)" (identifier "FUN_0023b810") (argument_list "(uVar6,uVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar5") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "STT": Some values do not have unique names */
/* DWARF original prototype: uint64_t value(Symbol_expression * this, Expression_eval_info * eei) */

uint64_t __thiscall
gold::type_1::function_1(type_1 *this,type_2 *eei)

{
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (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: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (if_statement condition: (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 (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) 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 (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (return_statement (number_literal)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

ulonglong MASKED(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  byte bVar7;
  
  iVar4 = FUN_0034ef60(*param_2,*(undefined4 *)(param_1 + 4),0);
  if (iVar4 != 0) {
    if ((*(byte *)(iVar4 + 0x2a) & 7) == 0) {
      if ((*(byte *)(iVar4 + 0x2b) & 0x20) == 0) {
        bVar7 = FUN_0034c920(*(int *)(iVar4 + 0xc));
        bVar7 = bVar7 ^ 1;
      }
      else {
        bVar7 = *(int *)(iVar4 + 0xc) != 0;
      }
    }
    else {
      bVar7 = (*(byte *)(iVar4 + 0x2a) & 7) != 4;
    }
    if (bVar7 != 0) {
      puVar1 = (undefined4 *)param_2[6];
      if (puVar1 != (undefined4 *)0x0) {
        uVar5 = FUN_0034caf0(iVar4);
        *puVar1 = uVar5;
      }
      if ((uint *)param_2[8] != (uint *)0x0) {
        *(uint *)param_2[8] = *(byte *)(iVar4 + 0x28) & 0xf;
      }
      if ((uint *)param_2[9] != (uint *)0x0) {
        *(uint *)param_2[9] = *(byte *)(iVar4 + 0x29) & 3;
      }
      pbVar2 = (byte *)param_2[10];
      if (pbVar2 != (byte *)0x0) {
        *pbVar2 = *(byte *)(iVar4 + 0x29) >> 2;
      }
      if (*(int *)(DAT_005ea7c8 + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_002446e0("../../gold/parameters.h",0x69,"target",pbVar2);
      }
      iVar3 = **(int **)(*(int *)(DAT_005ea7c8 + 0xc) + 4);
      if (iVar3 == 0x20) {
        return (ulonglong)*(uint *)(iVar4 + 0x30);
      }
      if (iVar3 == 0x40) {
        return *(ulonglong *)(iVar4 + 0x30);
      }
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/expression.cc",0xf9,"value",iVar3);
    }
  }
  uVar5 = *(undefined4 *)(param_1 + 4);
  uVar6 = gettext("undefined symbol \'%s\' referenced in expression");
  FUN_0023b810(uVar6,uVar5);
  return 0;
}

