
/* 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(Constant_expression * this, Expression_eval_info *
   param_1) */

uint64_t __thiscall
gold::Constant_expression::value(Constant_expression *this,Expression_eval_info *param_2)

{
  Target *pTVar1;
  General_options *pGVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  Target *unaff_EBX;
  uint uVar7;
  
  if (this->function_ == CONSTANT_MAXPAGESIZE) {
    if (parameters->target_ == (Target *)0x0) goto LAB_001ba658;
    pGVar2 = parameters->options_;
    if (pGVar2 == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
      Target::abi_pagesize(unaff_EBX);
    }
    uVar4 = (uint)(pGVar2->max_page_size_).value;
    uVar6 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);
    if (uVar6 == 0 && uVar4 == 0) {
      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);
    }
  }
  else {
    if (this->function_ != CONSTANT_COMMONPAGESIZE) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");
    }
    pTVar1 = parameters->target_;
    if (pTVar1 == (Target *)0x0) {
LAB_001ba658:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x69,"target");
    }
    pGVar2 = parameters->options_;
    if (pGVar2 == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
    }
    uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4);
    uVar4 = (uint)(pGVar2->common_page_size_).value;
    uVar7 = (uint)(pGVar2->max_page_size_).value;
    uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);
    if (uVar6 == 0 && uVar4 == 0) {
      iVar3 = *(int *)(pTVar1 + 4);
      if (uVar5 == 0 && uVar7 == 0) {
        uVar7 = *(uint *)(iVar3 + 0x20);
        uVar5 = *(uint *)(iVar3 + 0x24);
      }
      uVar4 = *(uint *)(iVar3 + 0x28);
      uVar6 = *(uint *)(iVar3 + 0x2c);
    }
    else if (uVar5 == 0 && uVar7 == 0) {
      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);
      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);
    }
    if (uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)) {
      uVar4 = uVar7;
      uVar6 = uVar5;
    }
  }
  return CONCAT44(uVar6,uVar4);
}



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

undefined8
FUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,
            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,
            undefined4 param_10,char param_11,char *param_12)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int unaff_EBP;
  int *unaff_ESI;
  undefined8 uVar7;
  char cStack_59;
  undefined1 auStack_58 [8];
  undefined1 uStack_50;
  undefined1 uStack_4f;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  int iStack_44;
  int *piStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  char *pcStack_2c;
  undefined4 uStack_20;
  undefined **ppuStack_1c;
  
  if (*(int *)(param_1 + 4) == 0) {
    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;
    iVar5 = *(int *)(DAT_0038f378 + 8);
    if (iVar5 == 0) {
      FUN_001ba3d0();
      FUN_000559f2();
      uStack_48 = param_4;
      iStack_44 = param_5;
      uStack_50 = (undefined1)param_1;
      uStack_4f = param_2;
      uStack_4c = param_3;
      if (param_6 != (int *)0x0) {
        *param_6 = 0;
      }
      piStack_40 = param_6;
      cStack_59 = '\x01';
      uStack_38 = param_8;
      uStack_34 = param_9;
      uStack_30 = param_10;
      uStack_3c = param_7;
      pcStack_2c = &cStack_59;
      ppuStack_1c = &__DT_PLTGOT;
      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);
      iVar5 = (int)((ulonglong)uVar7 >> 0x20);
      uVar2 = (uint)uVar7;
      if (param_12 == (char *)0x0) {
        if (cStack_59 == '\0') {
                    /* WARNING: Subroutine does not return */
          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);
        }
      }
      else {
        *param_12 = cStack_59;
      }
      if ((param_11 == '\0') || (*param_6 != 0)) {
        return uVar7;
      }
      if (param_5 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);
      }
      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);
      }
      uVar4 = *(uint *)(param_5 + 4);
      uVar6 = *(uint *)(param_5 + 4);
      iVar1 = *(int *)(param_5 + 8);
      *param_6 = param_5;
      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);
    }
    uVar2 = *(uint *)(iVar5 + 0x5218);
    uVar4 = *(uint *)(iVar5 + 0x521c);
    if (uVar4 == 0 && uVar2 == 0) {
      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);
    }
  }
  else {
    if (*(int *)(param_1 + 4) != 1) {
      ppuStack_1c = (undefined **)0x29f032;
                    /* WARNING: Subroutine does not return */
      uStack_20 = 0x1ba687;
      FUN_00069d00();
    }
    iVar5 = *(int *)(DAT_0038f378 + 0xc);
    if (iVar5 == 0) {
LAB_001ba658:
      ppuStack_1c = (undefined **)0x287210;
                    /* WARNING: Subroutine does not return */
      uStack_20 = 0x1ba66e;
      FUN_00069d00();
    }
    iVar1 = *(int *)(DAT_0038f378 + 8);
    if (iVar1 == 0) {
      ppuStack_1c = (undefined **)0x287210;
                    /* WARNING: Subroutine does not return */
      uStack_20 = 0x1ba69d;
      FUN_00069d00();
    }
    uVar4 = *(uint *)(iVar1 + 0x4e74);
    uVar2 = *(uint *)(iVar1 + 0x4e70);
    uVar6 = *(uint *)(iVar1 + 0x5218);
    uVar3 = *(uint *)(iVar1 + 0x521c);
    if (uVar4 == 0 && uVar2 == 0) {
      iVar5 = *(int *)(iVar5 + 4);
      if (uVar3 == 0 && uVar6 == 0) {
        uVar6 = *(uint *)(iVar5 + 0x20);
        uVar3 = *(uint *)(iVar5 + 0x24);
      }
      uVar2 = *(uint *)(iVar5 + 0x28);
      uVar4 = *(uint *)(iVar5 + 0x2c);
    }
    else if (uVar3 == 0 && uVar6 == 0) {
      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);
      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);
    }
    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {
      uVar2 = uVar6;
      uVar4 = uVar3;
    }
  }
  return CONCAT44(uVar4,uVar2);
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x00035840
ADD EBX,0x1d4a84
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JZ 0x001ba5e8
CMP EAX,0x1
JNZ 0x001ba66e
LEA EAX,[EBX + 0x378]
MOV EAX,dword ptr [EAX]
MOV ESI,dword ptr [EAX + 0xc]
TEST ESI,ESI
JZ 0x001ba658
MOV ECX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x001ba687
MOV EDX,dword ptr [ECX + 0x4e74]
MOV EAX,dword ptr [ECX + 0x4e70]
MOV EBX,dword ptr [ECX + 0x5218]
MOV ECX,dword ptr [ECX + 0x521c]
MOV EDI,EDX
OR EDI,EAX
JZ 0x001ba628
MOV EDI,ECX
OR EDI,EBX
JZ 0x001ba640
CMP EBX,EAX
MOV EDI,ECX
SBB EDI,EDX
CMOVC EAX,EBX
CMOVC EDX,ECX
POP EBX
POP ESI
POP EDI
RET
LEA EAX,[EBX + 0x378]
MOV EAX,dword ptr [EAX]
MOV ECX,dword ptr [EAX + 0xc]
TEST ECX,ECX
JZ 0x001ba658
MOV EDX,dword ptr [EAX + 0x8]
TEST EDX,EDX
JZ 0x001ba69d
MOV EAX,dword ptr [EDX + 0x5218]
MOV EDX,dword ptr [EDX + 0x521c]
MOV ESI,EDX
OR ESI,EAX
JNZ 0x001ba5e0
MOV EDX,dword ptr [ECX + 0x4]
POP EBX
POP ESI
POP EDI
MOV EAX,dword ptr [EDX + 0x20]
MOV EDX,dword ptr [EDX + 0x24]
RET
MOV EAX,ECX
MOV EDX,dword ptr [ESI + 0x4]
OR EAX,EBX
JZ 0x001ba650
MOV EAX,dword ptr [EDX + 0x28]
MOV EDX,dword ptr [EDX + 0x2c]
JMP 0x001ba5d4
MOV ECX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ECX + 0x20]
MOV ECX,dword ptr [ECX + 0x24]
JMP 0x001ba5d4
MOV EBX,dword ptr [EDX + 0x20]
MOV ECX,dword ptr [EDX + 0x24]
JMP 0x001ba631
LEA EAX,[EBX + 0xfff10520]
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x69
PUSH EAX
CALL 0x00069d00
PUSH EAX
LEA EAX,[EBX + 0xfff10508]
PUSH EAX
LEA EAX,[EBX + 0xfff10032]
PUSH 0x44a
PUSH EAX
CALL 0x00069d00
LEA EAX,[EBX + 0xfff10538]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x5c
PUSH EAX
CALL 0x00069d00
CALL 0x001ba3d0
LEA ESI,[ESI]
LEA ESI,[ESI]
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined8\nFUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int unaff_EBP;\n  int *unaff_ESI;\n  undefined8 uVar7;\n  char cStack_59;\n  undefined1 auStack_58 [8];\n  undefined1 uStack_50;\n  undefined1 uStack_4f;\n  undefined4 uStack_4c;\n  undefined4 uStack_48;\n  int iStack_44;\n  int *piStack_40;\n  undefined4 uStack_3c;\n  undefined4 uStack_38;\n  undefined4 uStack_34;\n  undefined4 uStack_30;\n  char *pcStack_2c;\n  undefined4 uStack_20;\n  undefined **ppuStack_1c;\n  \n  if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }\n  return CONCAT44(uVar4,uVar2);\n}\n\n" comment (function_definition "undefined8\nFUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int unaff_EBP;\n  int *unaff_ESI;\n  undefined8 uVar7;\n  char cStack_59;\n  undefined1 auStack_58 [8];\n  undefined1 uStack_50;\n  undefined1 uStack_4f;\n  undefined4 uStack_4c;\n  undefined4 uStack_48;\n  int iStack_44;\n  int *piStack_40;\n  undefined4 uStack_3c;\n  undefined4 uStack_38;\n  undefined4 uStack_34;\n  undefined4 uStack_30;\n  char *pcStack_2c;\n  undefined4 uStack_20;\n  undefined **ppuStack_1c;\n  \n  if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }\n  return CONCAT44(uVar4,uVar2);\n}" type_identifier (function_declarator "FUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)" identifier (parameter_list "(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined1 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "char param_11" primitive_type identifier) , (parameter_declaration "char *param_12" primitive_type (pointer_declarator "*param_12" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int unaff_EBP;\n  int *unaff_ESI;\n  undefined8 uVar7;\n  char cStack_59;\n  undefined1 auStack_58 [8];\n  undefined1 uStack_50;\n  undefined1 uStack_4f;\n  undefined4 uStack_4c;\n  undefined4 uStack_48;\n  int iStack_44;\n  int *piStack_40;\n  undefined4 uStack_3c;\n  undefined4 uStack_38;\n  undefined4 uStack_34;\n  undefined4 uStack_30;\n  char *pcStack_2c;\n  undefined4 uStack_20;\n  undefined **ppuStack_1c;\n  \n  if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }\n  return CONCAT44(uVar4,uVar2);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int *unaff_ESI;" primitive_type (pointer_declarator "*unaff_ESI" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "char cStack_59;" primitive_type identifier ;) (declaration "undefined1 auStack_58 [8];" type_identifier (array_declarator "auStack_58 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 uStack_50;" type_identifier identifier ;) (declaration "undefined1 uStack_4f;" type_identifier identifier ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "undefined4 uStack_48;" type_identifier identifier ;) (declaration "int iStack_44;" primitive_type identifier ;) (declaration "int *piStack_40;" primitive_type (pointer_declarator "*piStack_40" * identifier) ;) (declaration "undefined4 uStack_3c;" type_identifier identifier ;) (declaration "undefined4 uStack_38;" type_identifier identifier ;) (declaration "undefined4 uStack_34;" type_identifier identifier ;) (declaration "undefined4 uStack_30;" type_identifier identifier ;) (declaration "char *pcStack_2c;" primitive_type (pointer_declarator "*pcStack_2c" * identifier) ;) (declaration "undefined4 uStack_20;" type_identifier identifier ;) (declaration "undefined **ppuStack_1c;" type_identifier (pointer_declarator "**ppuStack_1c" * (pointer_declarator "*ppuStack_1c" * identifier)) ;) (if_statement "if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) == 0)" ( (binary_expression "*(int *)(param_1 + 4) == 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }" { (if_statement "if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 0xc) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 0xc) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" * (cast_expression "(int *)(DAT_0038f378 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 0xc)" ( (binary_expression "DAT_0038f378 + 0xc" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001ba658;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }" { (expression_statement "FUN_001ba3d0();" (call_expression "FUN_001ba3d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStack_48 = param_4;" (assignment_expression "uStack_48 = param_4" identifier = identifier) ;) (expression_statement "iStack_44 = param_5;" (assignment_expression "iStack_44 = param_5" identifier = identifier) ;) (expression_statement "uStack_50 = (undefined1)param_1;" (assignment_expression "uStack_50 = (undefined1)param_1" identifier = (cast_expression "(undefined1)param_1" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_4f = param_2;" (assignment_expression "uStack_4f = param_2" identifier = identifier) ;) (expression_statement "uStack_4c = param_3;" (assignment_expression "uStack_4c = param_3" identifier = identifier) ;) (if_statement "if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }" if (parenthesized_expression "(param_6 != (int *)0x0)" ( (binary_expression "param_6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *param_6 = 0;\n      }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "piStack_40 = param_6;" (assignment_expression "piStack_40 = param_6" identifier = identifier) ;) (expression_statement "cStack_59 = '\x01';" (assignment_expression "cStack_59 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "uStack_38 = param_8;" (assignment_expression "uStack_38 = param_8" identifier = identifier) ;) (expression_statement "uStack_34 = param_9;" (assignment_expression "uStack_34 = param_9" identifier = identifier) ;) (expression_statement "uStack_30 = param_10;" (assignment_expression "uStack_30 = param_10" identifier = identifier) ;) (expression_statement "uStack_3c = param_7;" (assignment_expression "uStack_3c = param_7" identifier = identifier) ;) (expression_statement "pcStack_2c = &cStack_59;" (assignment_expression "pcStack_2c = &cStack_59" identifier = (pointer_expression "&cStack_59" & identifier)) ;) (expression_statement "ppuStack_1c = &__DT_PLTGOT;" (assignment_expression "ppuStack_1c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);" (assignment_expression "uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58)" identifier = (call_expression "(**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58)" (parenthesized_expression "(**(code **)(*unaff_ESI + 0xc))" ( (pointer_expression "**(code **)(*unaff_ESI + 0xc)" * (pointer_expression "*(code **)(*unaff_ESI + 0xc)" * (cast_expression "(code **)(*unaff_ESI + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*unaff_ESI + 0xc)" ( (binary_expression "*unaff_ESI + 0xc" (pointer_expression "*unaff_ESI" * identifier) + number_literal) ))))) )) (argument_list "(unaff_ESI,auStack_58)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar5 = (int)((ulonglong)uVar7 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar2 = (uint)uVar7;" (assignment_expression "uVar2 = (uint)uVar7" identifier = (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }" if (parenthesized_expression "(param_12 == (char *)0x0)" ( (binary_expression "param_12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }" { (if_statement "if (cStack_59 == '\0') {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }" if (parenthesized_expression "(cStack_59 == '\0')" ( (binary_expression "cStack_59 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }" { comment (expression_statement "FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);" (call_expression "FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6)" identifier (argument_list "(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6)" ( (binary_expression "unaff_EBP + 0xe497c" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0xe4e8a" identifier + number_literal) , identifier ))) ;) })) }) (else_clause "else {\n        *param_12 = cStack_59;\n      }" else (compound_statement "{\n        *param_12 = cStack_59;\n      }" { (expression_statement "*param_12 = cStack_59;" (assignment_expression "*param_12 = cStack_59" (pointer_expression "*param_12" * identifier) = identifier) ;) }))) (if_statement "if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }" if (parenthesized_expression "((param_11 == '\0') || (*param_6 != 0))" ( (binary_expression "(param_11 == '\0') || (*param_6 != 0)" (parenthesized_expression "(param_11 == '\0')" ( (binary_expression "param_11 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*param_6 != 0)" ( (binary_expression "*param_6 != 0" (pointer_expression "*param_6" * identifier) != number_literal) ))) )) (compound_statement "{\n        return uVar7;\n      }" { (return_statement "return uVar7;" return identifier ;) })) (if_statement "if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }" { comment (expression_statement "FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);" (call_expression "FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5)" identifier (argument_list "(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5)" ( (binary_expression "unaff_EBP + 0xe497c" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0xe4e8a" identifier + number_literal) , identifier ))) ;) })) (if_statement "if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }" if (parenthesized_expression "((*(byte *)(param_5 + 0x1c) & 1) == 0)" ( (binary_expression "(*(byte *)(param_5 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_5 + 0x1c) & 1)" ( (binary_expression "*(byte *)(param_5 + 0x1c) & 1" (pointer_expression "*(byte *)(param_5 + 0x1c)" * (cast_expression "(byte *)(param_5 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x1c)" ( (binary_expression "param_5 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }" { comment (expression_statement "FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);" (call_expression "FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2)" identifier (argument_list "(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2)" ( (binary_expression "unaff_EBP + 0xcd7f6" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0xe4e7a" identifier + number_literal) , identifier ))) ;) })) (expression_statement "uVar4 = *(uint *)(param_5 + 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + 4)" identifier = (pointer_expression "*(uint *)(param_5 + 4)" * (cast_expression "(uint *)(param_5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 4)" ( (binary_expression "param_5 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(param_5 + 4);" (assignment_expression "uVar6 = *(uint *)(param_5 + 4)" identifier = (pointer_expression "*(uint *)(param_5 + 4)" * (cast_expression "(uint *)(param_5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 4)" ( (binary_expression "param_5 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(param_5 + 8);" (assignment_expression "iVar1 = *(int *)(param_5 + 8)" identifier = (pointer_expression "*(int *)(param_5 + 8)" * (cast_expression "(int *)(param_5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) ))))) ;) (expression_statement "*param_6 = param_5;" (assignment_expression "*param_6 = param_5" (pointer_expression "*param_6" * identifier) = identifier) ;) (return_statement "return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);" return (call_expression "CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6)" identifier (argument_list "(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6)" ( (binary_expression "iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4)" (binary_expression "iVar5 + iVar1" identifier + identifier) + (cast_expression "(uint)CARRY4(uVar2,uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar2,uVar4)" identifier (argument_list "(uVar2,uVar4)" ( identifier , identifier ))))) , (binary_expression "uVar2 + uVar6" identifier + identifier) ))) ;) })) (expression_statement "uVar2 = *(uint *)(iVar5 + 0x5218);" (assignment_expression "uVar2 = *(uint *)(iVar5 + 0x5218)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x5218)" * (cast_expression "(uint *)(iVar5 + 0x5218)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x5218)" ( (binary_expression "iVar5 + 0x5218" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x521c);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x521c)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x521c)" * (cast_expression "(uint *)(iVar5 + 0x521c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x521c)" ( (binary_expression "iVar5 + 0x521c" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }" if (parenthesized_expression "(uVar4 == 0 && uVar2 == 0)" ( (binary_expression "uVar4 == 0 && uVar2 == 0" (binary_expression "uVar4 == 0" identifier == number_literal) && (binary_expression "uVar2 == 0" identifier == number_literal)) )) (compound_statement "{\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }" { (return_statement "return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);" return (pointer_expression "*(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" * (cast_expression "(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" ( (binary_expression "*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20" (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(DAT_0038f378 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 0xc) + 4)" ( (binary_expression "*(int *)(DAT_0038f378 + 0xc) + 4" (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" * (cast_expression "(int *)(DAT_0038f378 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 0xc)" ( (binary_expression "DAT_0038f378 + 0xc" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) ;) })) }) (else_clause "else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" else (compound_statement "{\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" { (if_statement "if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 1)" ( (binary_expression "*(int *)(param_1 + 4) != 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      ppuStack_1c = (undefined **)0x29f032;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }" { (expression_statement "ppuStack_1c = (undefined **)0x29f032;" (assignment_expression "ppuStack_1c = (undefined **)0x29f032" identifier = (cast_expression "(undefined **)0x29f032" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) comment (expression_statement "uStack_20 = 0x1ba687;" (assignment_expression "uStack_20 = 0x1ba687" identifier = number_literal) ;) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 0xc);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 0xc)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" * (cast_expression "(int *)(DAT_0038f378 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 0xc)" ( (binary_expression "DAT_0038f378 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }" { (labeled_statement "LAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;" statement_identifier : (expression_statement "ppuStack_1c = (undefined **)0x287210;" (assignment_expression "ppuStack_1c = (undefined **)0x287210" identifier = (cast_expression "(undefined **)0x287210" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;)) comment (expression_statement "uStack_20 = 0x1ba66e;" (assignment_expression "uStack_20 = 0x1ba66e" identifier = number_literal) ;) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar1 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar1 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      ppuStack_1c = (undefined **)0x287210;\n                    /* WARNING: Subroutine does not return */\n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }" { (expression_statement "ppuStack_1c = (undefined **)0x287210;" (assignment_expression "ppuStack_1c = (undefined **)0x287210" identifier = (cast_expression "(undefined **)0x287210" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) comment (expression_statement "uStack_20 = 0x1ba69d;" (assignment_expression "uStack_20 = 0x1ba69d" identifier = number_literal) ;) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar4 = *(uint *)(iVar1 + 0x4e74);" (assignment_expression "uVar4 = *(uint *)(iVar1 + 0x4e74)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x4e74)" * (cast_expression "(uint *)(iVar1 + 0x4e74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x4e74)" ( (binary_expression "iVar1 + 0x4e74" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(iVar1 + 0x4e70);" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x4e70)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x4e70)" * (cast_expression "(uint *)(iVar1 + 0x4e70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x4e70)" ( (binary_expression "iVar1 + 0x4e70" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(iVar1 + 0x5218);" (assignment_expression "uVar6 = *(uint *)(iVar1 + 0x5218)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x5218)" * (cast_expression "(uint *)(iVar1 + 0x5218)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x5218)" ( (binary_expression "iVar1 + 0x5218" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(iVar1 + 0x521c);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0x521c)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x521c)" * (cast_expression "(uint *)(iVar1 + 0x521c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x521c)" ( (binary_expression "iVar1 + 0x521c" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" if (parenthesized_expression "(uVar4 == 0 && uVar2 == 0)" ( (binary_expression "uVar4 == 0 && uVar2 == 0" (binary_expression "uVar4 == 0" identifier == number_literal) && (binary_expression "uVar2 == 0" identifier == number_literal)) )) (compound_statement "{\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }" { (expression_statement "iVar5 = *(int *)(iVar5 + 4);" (assignment_expression "iVar5 = *(int *)(iVar5 + 4)" identifier = (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }" if (parenthesized_expression "(uVar3 == 0 && uVar6 == 0)" ( (binary_expression "uVar3 == 0 && uVar6 == 0" (binary_expression "uVar3 == 0" identifier == number_literal) && (binary_expression "uVar6 == 0" identifier == number_literal)) )) (compound_statement "{\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }" { (expression_statement "uVar6 = *(uint *)(iVar5 + 0x20);" (assignment_expression "uVar6 = *(uint *)(iVar5 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x20)" * (cast_expression "(uint *)(iVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(iVar5 + 0x24);" (assignment_expression "uVar3 = *(uint *)(iVar5 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x24)" * (cast_expression "(uint *)(iVar5 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "uVar2 = *(uint *)(iVar5 + 0x28);" (assignment_expression "uVar2 = *(uint *)(iVar5 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x28)" * (cast_expression "(uint *)(iVar5 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x2c);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x2c)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x2c)" * (cast_expression "(uint *)(iVar5 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2c)" ( (binary_expression "iVar5 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" else (if_statement "if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" if (parenthesized_expression "(uVar3 == 0 && uVar6 == 0)" ( (binary_expression "uVar3 == 0 && uVar6 == 0" (binary_expression "uVar3 == 0" identifier == number_literal) && (binary_expression "uVar6 == 0" identifier == number_literal)) )) (compound_statement "{\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" { (expression_statement "uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);" (assignment_expression "uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20)" identifier = (pointer_expression "*(uint *)(*(int *)(iVar5 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(iVar5 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 4) + 0x20)" ( (binary_expression "*(int *)(iVar5 + 4) + 0x20" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);" (assignment_expression "uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(iVar5 + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(iVar5 + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 4) + 0x24)" ( (binary_expression "*(int *)(iVar5 + 4) + 0x24" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) })))) (if_statement "if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }" if (parenthesized_expression "(uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2))" ( (binary_expression "uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)" (binary_expression "uVar3 < uVar4" identifier < identifier) || (binary_expression "uVar3 - uVar4 < (uint)(uVar6 < uVar2)" (binary_expression "uVar3 - uVar4" identifier - identifier) < (call_expression "(uint)(uVar6 < uVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar2)" ( (binary_expression "uVar6 < uVar2" identifier < identifier) ))))) )) (compound_statement "{\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }" { (expression_statement "uVar2 = uVar6;" (assignment_expression "uVar2 = uVar6" identifier = identifier) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) })) }))) (return_statement "return CONCAT44(uVar4,uVar2);" return (call_expression "CONCAT44(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier ))) ;) })))
(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(Constant_expression * this, Expression_eval_info *\n   param_1) */\n\nuint64_t __thiscall\ngold::Constant_expression::value(Constant_expression *this,Expression_eval_info *param_2)\n\n{\n  Target *pTVar1;\n  General_options *pGVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  Target *unaff_EBX;\n  uint uVar7;\n  \n  if (this->function_ == CONSTANT_MAXPAGESIZE) {\n    if (parameters->target_ == (Target *)0x0) goto LAB_001ba658;\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize(unaff_EBX);\n    }\n    uVar4 = (uint)(pGVar2->max_page_size_).value;\n    uVar6 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);\n    }\n  }\n  else {\n    if (this->function_ != CONSTANT_COMMONPAGESIZE) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");\n    }\n    pTVar1 = parameters->target_;\n    if (pTVar1 == (Target *)0x0) {\nLAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4);\n    uVar4 = (uint)(pGVar2->common_page_size_).value;\n    uVar7 = (uint)(pGVar2->max_page_size_).value;\n    uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      iVar3 = *(int *)(pTVar1 + 4);\n      if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }\n      uVar4 = *(uint *)(iVar3 + 0x28);\n      uVar6 = *(uint *)(iVar3 + 0x2c);\n    }\n    else if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }\n    if (uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)) {\n      uVar4 = uVar7;\n      uVar6 = uVar5;\n    }\n  }\n  return CONCAT44(uVar6,uVar4);\n}\n\n" comment comment comment comment (function_definition "uint64_t __thiscall\ngold::Constant_expression::value(Constant_expression *this,Expression_eval_info *param_2)\n\n{\n  Target *pTVar1;\n  General_options *pGVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  Target *unaff_EBX;\n  uint uVar7;\n  \n  if (this->function_ == CONSTANT_MAXPAGESIZE) {\n    if (parameters->target_ == (Target *)0x0) goto LAB_001ba658;\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize(unaff_EBX);\n    }\n    uVar4 = (uint)(pGVar2->max_page_size_).value;\n    uVar6 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);\n    }\n  }\n  else {\n    if (this->function_ != CONSTANT_COMMONPAGESIZE) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");\n    }\n    pTVar1 = parameters->target_;\n    if (pTVar1 == (Target *)0x0) {\nLAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4);\n    uVar4 = (uint)(pGVar2->common_page_size_).value;\n    uVar7 = (uint)(pGVar2->max_page_size_).value;\n    uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      iVar3 = *(int *)(pTVar1 + 4);\n      if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }\n      uVar4 = *(uint *)(iVar3 + 0x28);\n      uVar6 = *(uint *)(iVar3 + 0x2c);\n    }\n    else if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }\n    if (uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)) {\n      uVar4 = uVar7;\n      uVar6 = uVar5;\n    }\n  }\n  return CONCAT44(uVar6,uVar4);\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Constant_expression::" identifier : : identifier : :) (function_declarator "value(Constant_expression *this,Expression_eval_info *param_2)" identifier (parameter_list "(Constant_expression *this,Expression_eval_info *param_2)" ( (parameter_declaration "Constant_expression *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Expression_eval_info *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  Target *pTVar1;\n  General_options *pGVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  Target *unaff_EBX;\n  uint uVar7;\n  \n  if (this->function_ == CONSTANT_MAXPAGESIZE) {\n    if (parameters->target_ == (Target *)0x0) goto LAB_001ba658;\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize(unaff_EBX);\n    }\n    uVar4 = (uint)(pGVar2->max_page_size_).value;\n    uVar6 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);\n    }\n  }\n  else {\n    if (this->function_ != CONSTANT_COMMONPAGESIZE) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");\n    }\n    pTVar1 = parameters->target_;\n    if (pTVar1 == (Target *)0x0) {\nLAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4);\n    uVar4 = (uint)(pGVar2->common_page_size_).value;\n    uVar7 = (uint)(pGVar2->max_page_size_).value;\n    uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      iVar3 = *(int *)(pTVar1 + 4);\n      if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }\n      uVar4 = *(uint *)(iVar3 + 0x28);\n      uVar6 = *(uint *)(iVar3 + 0x2c);\n    }\n    else if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }\n    if (uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)) {\n      uVar4 = uVar7;\n      uVar6 = uVar5;\n    }\n  }\n  return CONCAT44(uVar6,uVar4);\n}" { (declaration "Target *pTVar1;" type_identifier (pointer_declarator "*pTVar1" * identifier) ;) (declaration "General_options *pGVar2;" type_identifier (pointer_declarator "*pGVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "Target *unaff_EBX;" type_identifier (pointer_declarator "*unaff_EBX" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (if_statement "if (this->function_ == CONSTANT_MAXPAGESIZE) {\n    if (parameters->target_ == (Target *)0x0) goto LAB_001ba658;\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize(unaff_EBX);\n    }\n    uVar4 = (uint)(pGVar2->max_page_size_).value;\n    uVar6 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);\n    }\n  }\n  else {\n    if (this->function_ != CONSTANT_COMMONPAGESIZE) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");\n    }\n    pTVar1 = parameters->target_;\n    if (pTVar1 == (Target *)0x0) {\nLAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4);\n    uVar4 = (uint)(pGVar2->common_page_size_).value;\n    uVar7 = (uint)(pGVar2->max_page_size_).value;\n    uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      iVar3 = *(int *)(pTVar1 + 4);\n      if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }\n      uVar4 = *(uint *)(iVar3 + 0x28);\n      uVar6 = *(uint *)(iVar3 + 0x2c);\n    }\n    else if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }\n    if (uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)) {\n      uVar4 = uVar7;\n      uVar6 = uVar5;\n    }\n  }" if (parenthesized_expression "(this->function_ == CONSTANT_MAXPAGESIZE)" ( (binary_expression "this->function_ == CONSTANT_MAXPAGESIZE" (field_expression "this->function_" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    if (parameters->target_ == (Target *)0x0) goto LAB_001ba658;\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize(unaff_EBX);\n    }\n    uVar4 = (uint)(pGVar2->max_page_size_).value;\n    uVar6 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);\n    }\n  }" { (if_statement "if (parameters->target_ == (Target *)0x0) goto LAB_001ba658;" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001ba658;" goto statement_identifier ;)) (expression_statement "pGVar2 = parameters->options_;" (assignment_expression "pGVar2 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize(unaff_EBX);\n    }" if (parenthesized_expression "(pGVar2 == (General_options *)0x0)" ( (binary_expression "pGVar2 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize(unaff_EBX);\n    }" { comment (labeled_statement "Target::abi_pagesize(unaff_EBX);" statement_identifier : (ERROR ":" :) (expression_statement "abi_pagesize(unaff_EBX);" (call_expression "abi_pagesize(unaff_EBX)" identifier (argument_list "(unaff_EBX)" ( identifier ))) ;)) })) (expression_statement "uVar4 = (uint)(pGVar2->max_page_size_).value;" (assignment_expression "uVar4 = (uint)(pGVar2->max_page_size_).value" identifier = (field_expression "(uint)(pGVar2->max_page_size_).value" (call_expression "(uint)(pGVar2->max_page_size_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pGVar2->max_page_size_)" ( (field_expression "pGVar2->max_page_size_" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar6 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);" (assignment_expression "uVar6 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4)" identifier = (pointer_expression "*(uint *)((int)&(pGVar2->max_page_size_).value + 4)" * (cast_expression "(uint *)((int)&(pGVar2->max_page_size_).value + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pGVar2->max_page_size_).value + 4)" ( (binary_expression "(int)&(pGVar2->max_page_size_).value + 4" (cast_expression "(int)&(pGVar2->max_page_size_).value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pGVar2->max_page_size_).value" & (field_expression "(pGVar2->max_page_size_).value" (parenthesized_expression "(pGVar2->max_page_size_)" ( (field_expression "pGVar2->max_page_size_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (if_statement "if (uVar6 == 0 && uVar4 == 0) {\n      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);\n    }" if (parenthesized_expression "(uVar6 == 0 && uVar4 == 0)" ( (binary_expression "uVar6 == 0 && uVar4 == 0" (binary_expression "uVar6 == 0" identifier == number_literal) && (binary_expression "uVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);\n    }" { (return_statement "return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);" return (pointer_expression "*(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20)" * (cast_expression "(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(parameters->target_ + 4) + 0x20)" ( (binary_expression "*(int *)(parameters->target_ + 4) + 0x20" (pointer_expression "*(int *)(parameters->target_ + 4)" * (cast_expression "(int *)(parameters->target_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(parameters->target_ + 4)" ( (binary_expression "parameters->target_ + 4" (field_expression "parameters->target_" identifier -> field_identifier) + number_literal) )))) + number_literal) )))) ;) })) }) (else_clause "else {\n    if (this->function_ != CONSTANT_COMMONPAGESIZE) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");\n    }\n    pTVar1 = parameters->target_;\n    if (pTVar1 == (Target *)0x0) {\nLAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4);\n    uVar4 = (uint)(pGVar2->common_page_size_).value;\n    uVar7 = (uint)(pGVar2->max_page_size_).value;\n    uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      iVar3 = *(int *)(pTVar1 + 4);\n      if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }\n      uVar4 = *(uint *)(iVar3 + 0x28);\n      uVar6 = *(uint *)(iVar3 + 0x2c);\n    }\n    else if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }\n    if (uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)) {\n      uVar4 = uVar7;\n      uVar6 = uVar5;\n    }\n  }" else (compound_statement "{\n    if (this->function_ != CONSTANT_COMMONPAGESIZE) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");\n    }\n    pTVar1 = parameters->target_;\n    if (pTVar1 == (Target *)0x0) {\nLAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    pGVar2 = parameters->options_;\n    if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4);\n    uVar4 = (uint)(pGVar2->common_page_size_).value;\n    uVar7 = (uint)(pGVar2->max_page_size_).value;\n    uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);\n    if (uVar6 == 0 && uVar4 == 0) {\n      iVar3 = *(int *)(pTVar1 + 4);\n      if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }\n      uVar4 = *(uint *)(iVar3 + 0x28);\n      uVar6 = *(uint *)(iVar3 + 0x2c);\n    }\n    else if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }\n    if (uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)) {\n      uVar4 = uVar7;\n      uVar6 = uVar5;\n    }\n  }" { (if_statement "if (this->function_ != CONSTANT_COMMONPAGESIZE) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");\n    }" if (parenthesized_expression "(this->function_ != CONSTANT_COMMONPAGESIZE)" ( (binary_expression "this->function_ != CONSTANT_COMMONPAGESIZE" (field_expression "this->function_" identifier -> field_identifier) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/expression.cc",0x44a,"value");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/expression.cc",0x44a,"value");" (call_expression "do_gold_unreachable("../../gold/expression.cc",0x44a,"value")" identifier (argument_list "("../../gold/expression.cc",0x44a,"value")" ( (string_literal ""../../gold/expression.cc"" " string_content ") , number_literal , (string_literal ""value"" " string_content ") ))) ;) })) (expression_statement "pTVar1 = parameters->target_;" (assignment_expression "pTVar1 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar1 == (Target *)0x0) {\nLAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }" if (parenthesized_expression "(pTVar1 == (Target *)0x0)" ( (binary_expression "pTVar1 == (Target *)0x0" identifier == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }" { (labeled_statement "LAB_001ba658:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })) (expression_statement "pGVar2 = parameters->options_;" (assignment_expression "pGVar2 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar2 == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(pGVar2 == (General_options *)0x0)" ( (binary_expression "pGVar2 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4);" (assignment_expression "uVar6 = *(uint *)((int)&(pGVar2->common_page_size_).value + 4)" identifier = (pointer_expression "*(uint *)((int)&(pGVar2->common_page_size_).value + 4)" * (cast_expression "(uint *)((int)&(pGVar2->common_page_size_).value + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pGVar2->common_page_size_).value + 4)" ( (binary_expression "(int)&(pGVar2->common_page_size_).value + 4" (cast_expression "(int)&(pGVar2->common_page_size_).value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pGVar2->common_page_size_).value" & (field_expression "(pGVar2->common_page_size_).value" (parenthesized_expression "(pGVar2->common_page_size_)" ( (field_expression "pGVar2->common_page_size_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar4 = (uint)(pGVar2->common_page_size_).value;" (assignment_expression "uVar4 = (uint)(pGVar2->common_page_size_).value" identifier = (field_expression "(uint)(pGVar2->common_page_size_).value" (call_expression "(uint)(pGVar2->common_page_size_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pGVar2->common_page_size_)" ( (field_expression "pGVar2->common_page_size_" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar7 = (uint)(pGVar2->max_page_size_).value;" (assignment_expression "uVar7 = (uint)(pGVar2->max_page_size_).value" identifier = (field_expression "(uint)(pGVar2->max_page_size_).value" (call_expression "(uint)(pGVar2->max_page_size_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pGVar2->max_page_size_)" ( (field_expression "pGVar2->max_page_size_" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4);" (assignment_expression "uVar5 = *(uint *)((int)&(pGVar2->max_page_size_).value + 4)" identifier = (pointer_expression "*(uint *)((int)&(pGVar2->max_page_size_).value + 4)" * (cast_expression "(uint *)((int)&(pGVar2->max_page_size_).value + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pGVar2->max_page_size_).value + 4)" ( (binary_expression "(int)&(pGVar2->max_page_size_).value + 4" (cast_expression "(int)&(pGVar2->max_page_size_).value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pGVar2->max_page_size_).value" & (field_expression "(pGVar2->max_page_size_).value" (parenthesized_expression "(pGVar2->max_page_size_)" ( (field_expression "pGVar2->max_page_size_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (if_statement "if (uVar6 == 0 && uVar4 == 0) {\n      iVar3 = *(int *)(pTVar1 + 4);\n      if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }\n      uVar4 = *(uint *)(iVar3 + 0x28);\n      uVar6 = *(uint *)(iVar3 + 0x2c);\n    }\n    else if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }" if (parenthesized_expression "(uVar6 == 0 && uVar4 == 0)" ( (binary_expression "uVar6 == 0 && uVar4 == 0" (binary_expression "uVar6 == 0" identifier == number_literal) && (binary_expression "uVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n      iVar3 = *(int *)(pTVar1 + 4);\n      if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }\n      uVar4 = *(uint *)(iVar3 + 0x28);\n      uVar6 = *(uint *)(iVar3 + 0x2c);\n    }" { (expression_statement "iVar3 = *(int *)(pTVar1 + 4);" (assignment_expression "iVar3 = *(int *)(pTVar1 + 4)" identifier = (pointer_expression "*(int *)(pTVar1 + 4)" * (cast_expression "(int *)(pTVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pTVar1 + 4)" ( (binary_expression "pTVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 == 0 && uVar7 == 0) {\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }" if (parenthesized_expression "(uVar5 == 0 && uVar7 == 0)" ( (binary_expression "uVar5 == 0 && uVar7 == 0" (binary_expression "uVar5 == 0" identifier == number_literal) && (binary_expression "uVar7 == 0" identifier == number_literal)) )) (compound_statement "{\n        uVar7 = *(uint *)(iVar3 + 0x20);\n        uVar5 = *(uint *)(iVar3 + 0x24);\n      }" { (expression_statement "uVar7 = *(uint *)(iVar3 + 0x20);" (assignment_expression "uVar7 = *(uint *)(iVar3 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x20)" * (cast_expression "(uint *)(iVar3 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(iVar3 + 0x24);" (assignment_expression "uVar5 = *(uint *)(iVar3 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x24)" * (cast_expression "(uint *)(iVar3 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "uVar4 = *(uint *)(iVar3 + 0x28);" (assignment_expression "uVar4 = *(uint *)(iVar3 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x28)" * (cast_expression "(uint *)(iVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(iVar3 + 0x2c);" (assignment_expression "uVar6 = *(uint *)(iVar3 + 0x2c)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x2c)" * (cast_expression "(uint *)(iVar3 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }" else (if_statement "if (uVar5 == 0 && uVar7 == 0) {\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }" if (parenthesized_expression "(uVar5 == 0 && uVar7 == 0)" ( (binary_expression "uVar5 == 0 && uVar7 == 0" (binary_expression "uVar5 == 0" identifier == number_literal) && (binary_expression "uVar7 == 0" identifier == number_literal)) )) (compound_statement "{\n      uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);\n      uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);\n    }" { (expression_statement "uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20);" (assignment_expression "uVar7 = *(uint *)(*(int *)(pTVar1 + 4) + 0x20)" identifier = (pointer_expression "*(uint *)(*(int *)(pTVar1 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(pTVar1 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pTVar1 + 4) + 0x20)" ( (binary_expression "*(int *)(pTVar1 + 4) + 0x20" (pointer_expression "*(int *)(pTVar1 + 4)" * (cast_expression "(int *)(pTVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pTVar1 + 4)" ( (binary_expression "pTVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24);" (assignment_expression "uVar5 = *(uint *)(*(int *)(pTVar1 + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(pTVar1 + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(pTVar1 + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pTVar1 + 4) + 0x24)" ( (binary_expression "*(int *)(pTVar1 + 4) + 0x24" (pointer_expression "*(int *)(pTVar1 + 4)" * (cast_expression "(int *)(pTVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pTVar1 + 4)" ( (binary_expression "pTVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) })))) (if_statement "if (uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)) {\n      uVar4 = uVar7;\n      uVar6 = uVar5;\n    }" if (parenthesized_expression "(uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4))" ( (binary_expression "uVar5 < uVar6 || uVar5 - uVar6 < (uint)(uVar7 < uVar4)" (binary_expression "uVar5 < uVar6" identifier < identifier) || (binary_expression "uVar5 - uVar6 < (uint)(uVar7 < uVar4)" (binary_expression "uVar5 - uVar6" identifier - identifier) < (call_expression "(uint)(uVar7 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar4)" ( (binary_expression "uVar7 < uVar4" identifier < identifier) ))))) )) (compound_statement "{\n      uVar4 = uVar7;\n      uVar6 = uVar5;\n    }" { (expression_statement "uVar4 = uVar7;" (assignment_expression "uVar4 = uVar7" identifier = identifier) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) })) }))) (return_statement "return CONCAT44(uVar6,uVar4);" return (call_expression "CONCAT44(uVar6,uVar4)" identifier (argument_list "(uVar6,uVar4)" ( identifier , identifier ))) ;) })))
(translation_unit "undefined8\nFUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int unaff_EBP;\n  int *unaff_ESI;\n  undefined8 uVar7;\n  char cStack_59;\n  undefined1 auStack_58 [8];\n  undefined1 uStack_50;\n  undefined1 uStack_4f;\n  undefined4 uStack_4c;\n  undefined4 uStack_48;\n  int iStack_44;\n  int *piStack_40;\n  undefined4 uStack_3c;\n  undefined4 uStack_38;\n  undefined4 uStack_34;\n  undefined4 uStack_30;\n  char *pcStack_2c;\n  undefined4 uStack_20;\n  undefined **ppuStack_1c;\n  \n  if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }\n  return CONCAT44(uVar4,uVar2);\n}\n\n" (function_definition "undefined8\nFUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int unaff_EBP;\n  int *unaff_ESI;\n  undefined8 uVar7;\n  char cStack_59;\n  undefined1 auStack_58 [8];\n  undefined1 uStack_50;\n  undefined1 uStack_4f;\n  undefined4 uStack_4c;\n  undefined4 uStack_48;\n  int iStack_44;\n  int *piStack_40;\n  undefined4 uStack_3c;\n  undefined4 uStack_38;\n  undefined4 uStack_34;\n  undefined4 uStack_30;\n  char *pcStack_2c;\n  undefined4 uStack_20;\n  undefined **ppuStack_1c;\n  \n  if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }\n  return CONCAT44(uVar4,uVar2);\n}" type_identifier (function_declarator "FUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)" identifier (parameter_list "(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined1 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "char param_11" primitive_type identifier) , (parameter_declaration "char *param_12" primitive_type (pointer_declarator "*param_12" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int unaff_EBP;\n  int *unaff_ESI;\n  undefined8 uVar7;\n  char cStack_59;\n  undefined1 auStack_58 [8];\n  undefined1 uStack_50;\n  undefined1 uStack_4f;\n  undefined4 uStack_4c;\n  undefined4 uStack_48;\n  int iStack_44;\n  int *piStack_40;\n  undefined4 uStack_3c;\n  undefined4 uStack_38;\n  undefined4 uStack_34;\n  undefined4 uStack_30;\n  char *pcStack_2c;\n  undefined4 uStack_20;\n  undefined **ppuStack_1c;\n  \n  if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }\n  return CONCAT44(uVar4,uVar2);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int *unaff_ESI;" primitive_type (pointer_declarator "*unaff_ESI" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "char cStack_59;" primitive_type identifier ;) (declaration "undefined1 auStack_58 [8];" type_identifier (array_declarator "auStack_58 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 uStack_50;" type_identifier identifier ;) (declaration "undefined1 uStack_4f;" type_identifier identifier ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "undefined4 uStack_48;" type_identifier identifier ;) (declaration "int iStack_44;" primitive_type identifier ;) (declaration "int *piStack_40;" primitive_type (pointer_declarator "*piStack_40" * identifier) ;) (declaration "undefined4 uStack_3c;" type_identifier identifier ;) (declaration "undefined4 uStack_38;" type_identifier identifier ;) (declaration "undefined4 uStack_34;" type_identifier identifier ;) (declaration "undefined4 uStack_30;" type_identifier identifier ;) (declaration "char *pcStack_2c;" primitive_type (pointer_declarator "*pcStack_2c" * identifier) ;) (declaration "undefined4 uStack_20;" type_identifier identifier ;) (declaration "undefined **ppuStack_1c;" type_identifier (pointer_declarator "**ppuStack_1c" * (pointer_declarator "*ppuStack_1c" * identifier)) ;) (if_statement "if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) == 0)" ( (binary_expression "*(int *)(param_1 + 4) == 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }" { (if_statement "if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 0xc) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 0xc) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" * (cast_expression "(int *)(DAT_0038f378 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 0xc)" ( (binary_expression "DAT_0038f378 + 0xc" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001ba658;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }" { (expression_statement "FUN_001ba3d0();" (call_expression "FUN_001ba3d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStack_48 = param_4;" (assignment_expression "uStack_48 = param_4" identifier = identifier) ;) (expression_statement "iStack_44 = param_5;" (assignment_expression "iStack_44 = param_5" identifier = identifier) ;) (expression_statement "uStack_50 = (undefined1)param_1;" (assignment_expression "uStack_50 = (undefined1)param_1" identifier = (cast_expression "(undefined1)param_1" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uStack_4f = param_2;" (assignment_expression "uStack_4f = param_2" identifier = identifier) ;) (expression_statement "uStack_4c = param_3;" (assignment_expression "uStack_4c = param_3" identifier = identifier) ;) (if_statement "if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }" if (parenthesized_expression "(param_6 != (int *)0x0)" ( (binary_expression "param_6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *param_6 = 0;\n      }" { (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) (expression_statement "piStack_40 = param_6;" (assignment_expression "piStack_40 = param_6" identifier = identifier) ;) (expression_statement "cStack_59 = '\x01';" (assignment_expression "cStack_59 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "uStack_38 = param_8;" (assignment_expression "uStack_38 = param_8" identifier = identifier) ;) (expression_statement "uStack_34 = param_9;" (assignment_expression "uStack_34 = param_9" identifier = identifier) ;) (expression_statement "uStack_30 = param_10;" (assignment_expression "uStack_30 = param_10" identifier = identifier) ;) (expression_statement "uStack_3c = param_7;" (assignment_expression "uStack_3c = param_7" identifier = identifier) ;) (expression_statement "pcStack_2c = &cStack_59;" (assignment_expression "pcStack_2c = &cStack_59" identifier = (pointer_expression "&cStack_59" & identifier)) ;) (expression_statement "ppuStack_1c = &__DT_PLTGOT;" (assignment_expression "ppuStack_1c = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);" (assignment_expression "uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58)" identifier = (call_expression "(**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58)" (parenthesized_expression "(**(code **)(*unaff_ESI + 0xc))" ( (pointer_expression "**(code **)(*unaff_ESI + 0xc)" * (pointer_expression "*(code **)(*unaff_ESI + 0xc)" * (cast_expression "(code **)(*unaff_ESI + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*unaff_ESI + 0xc)" ( (binary_expression "*unaff_ESI + 0xc" (pointer_expression "*unaff_ESI" * identifier) + number_literal) ))))) )) (argument_list "(unaff_ESI,auStack_58)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar5 = (int)((ulonglong)uVar7 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar2 = (uint)uVar7;" (assignment_expression "uVar2 = (uint)uVar7" identifier = (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }" if (parenthesized_expression "(param_12 == (char *)0x0)" ( (binary_expression "param_12 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }" { (if_statement "if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }" if (parenthesized_expression "(cStack_59 == '\0')" ( (binary_expression "cStack_59 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }" { (expression_statement "FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);" (call_expression "FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6)" identifier (argument_list "(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6)" ( (binary_expression "unaff_EBP + 0xe497c" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0xe4e8a" identifier + number_literal) , identifier ))) ;) })) }) (else_clause "else {\n        *param_12 = cStack_59;\n      }" else (compound_statement "{\n        *param_12 = cStack_59;\n      }" { (expression_statement "*param_12 = cStack_59;" (assignment_expression "*param_12 = cStack_59" (pointer_expression "*param_12" * identifier) = identifier) ;) }))) (if_statement "if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }" if (parenthesized_expression "((param_11 == '\0') || (*param_6 != 0))" ( (binary_expression "(param_11 == '\0') || (*param_6 != 0)" (parenthesized_expression "(param_11 == '\0')" ( (binary_expression "param_11 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*param_6 != 0)" ( (binary_expression "*param_6 != 0" (pointer_expression "*param_6" * identifier) != number_literal) ))) )) (compound_statement "{\n        return uVar7;\n      }" { (return_statement "return uVar7;" return identifier ;) })) (if_statement "if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }" { (expression_statement "FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);" (call_expression "FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5)" identifier (argument_list "(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5)" ( (binary_expression "unaff_EBP + 0xe497c" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0xe4e8a" identifier + number_literal) , identifier ))) ;) })) (if_statement "if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }" if (parenthesized_expression "((*(byte *)(param_5 + 0x1c) & 1) == 0)" ( (binary_expression "(*(byte *)(param_5 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_5 + 0x1c) & 1)" ( (binary_expression "*(byte *)(param_5 + 0x1c) & 1" (pointer_expression "*(byte *)(param_5 + 0x1c)" * (cast_expression "(byte *)(param_5 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x1c)" ( (binary_expression "param_5 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }" { (expression_statement "FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);" (call_expression "FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2)" identifier (argument_list "(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2)" ( (binary_expression "unaff_EBP + 0xcd7f6" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0xe4e7a" identifier + number_literal) , identifier ))) ;) })) (expression_statement "uVar4 = *(uint *)(param_5 + 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + 4)" identifier = (pointer_expression "*(uint *)(param_5 + 4)" * (cast_expression "(uint *)(param_5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 4)" ( (binary_expression "param_5 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(param_5 + 4);" (assignment_expression "uVar6 = *(uint *)(param_5 + 4)" identifier = (pointer_expression "*(uint *)(param_5 + 4)" * (cast_expression "(uint *)(param_5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 4)" ( (binary_expression "param_5 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(param_5 + 8);" (assignment_expression "iVar1 = *(int *)(param_5 + 8)" identifier = (pointer_expression "*(int *)(param_5 + 8)" * (cast_expression "(int *)(param_5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) ))))) ;) (expression_statement "*param_6 = param_5;" (assignment_expression "*param_6 = param_5" (pointer_expression "*param_6" * identifier) = identifier) ;) (return_statement "return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);" return (call_expression "CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6)" identifier (argument_list "(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6)" ( (binary_expression "iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4)" (binary_expression "iVar5 + iVar1" identifier + identifier) + (cast_expression "(uint)CARRY4(uVar2,uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar2,uVar4)" identifier (argument_list "(uVar2,uVar4)" ( identifier , identifier ))))) , (binary_expression "uVar2 + uVar6" identifier + identifier) ))) ;) })) (expression_statement "uVar2 = *(uint *)(iVar5 + 0x5218);" (assignment_expression "uVar2 = *(uint *)(iVar5 + 0x5218)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x5218)" * (cast_expression "(uint *)(iVar5 + 0x5218)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x5218)" ( (binary_expression "iVar5 + 0x5218" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x521c);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x521c)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x521c)" * (cast_expression "(uint *)(iVar5 + 0x521c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x521c)" ( (binary_expression "iVar5 + 0x521c" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }" if (parenthesized_expression "(uVar4 == 0 && uVar2 == 0)" ( (binary_expression "uVar4 == 0 && uVar2 == 0" (binary_expression "uVar4 == 0" identifier == number_literal) && (binary_expression "uVar2 == 0" identifier == number_literal)) )) (compound_statement "{\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }" { (return_statement "return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);" return (pointer_expression "*(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" * (cast_expression "(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" ( (binary_expression "*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20" (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(DAT_0038f378 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 0xc) + 4)" ( (binary_expression "*(int *)(DAT_0038f378 + 0xc) + 4" (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" * (cast_expression "(int *)(DAT_0038f378 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 0xc)" ( (binary_expression "DAT_0038f378 + 0xc" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) ;) })) }) (else_clause "else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" else (compound_statement "{\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" { (if_statement "if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 1)" ( (binary_expression "*(int *)(param_1 + 4) != 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }" { (expression_statement "ppuStack_1c = (undefined **)0x29f032;" (assignment_expression "ppuStack_1c = (undefined **)0x29f032" identifier = (cast_expression "(undefined **)0x29f032" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "uStack_20 = 0x1ba687;" (assignment_expression "uStack_20 = 0x1ba687" identifier = number_literal) ;) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 0xc);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 0xc)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" * (cast_expression "(int *)(DAT_0038f378 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 0xc)" ( (binary_expression "DAT_0038f378 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }" { (labeled_statement "LAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;" statement_identifier : (expression_statement "ppuStack_1c = (undefined **)0x287210;" (assignment_expression "ppuStack_1c = (undefined **)0x287210" identifier = (cast_expression "(undefined **)0x287210" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;)) (expression_statement "uStack_20 = 0x1ba66e;" (assignment_expression "uStack_20 = 0x1ba66e" identifier = number_literal) ;) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar1 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar1 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }" { (expression_statement "ppuStack_1c = (undefined **)0x287210;" (assignment_expression "ppuStack_1c = (undefined **)0x287210" identifier = (cast_expression "(undefined **)0x287210" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "uStack_20 = 0x1ba69d;" (assignment_expression "uStack_20 = 0x1ba69d" identifier = number_literal) ;) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar4 = *(uint *)(iVar1 + 0x4e74);" (assignment_expression "uVar4 = *(uint *)(iVar1 + 0x4e74)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x4e74)" * (cast_expression "(uint *)(iVar1 + 0x4e74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x4e74)" ( (binary_expression "iVar1 + 0x4e74" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(iVar1 + 0x4e70);" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x4e70)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x4e70)" * (cast_expression "(uint *)(iVar1 + 0x4e70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x4e70)" ( (binary_expression "iVar1 + 0x4e70" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(iVar1 + 0x5218);" (assignment_expression "uVar6 = *(uint *)(iVar1 + 0x5218)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x5218)" * (cast_expression "(uint *)(iVar1 + 0x5218)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x5218)" ( (binary_expression "iVar1 + 0x5218" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(iVar1 + 0x521c);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0x521c)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x521c)" * (cast_expression "(uint *)(iVar1 + 0x521c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x521c)" ( (binary_expression "iVar1 + 0x521c" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" if (parenthesized_expression "(uVar4 == 0 && uVar2 == 0)" ( (binary_expression "uVar4 == 0 && uVar2 == 0" (binary_expression "uVar4 == 0" identifier == number_literal) && (binary_expression "uVar2 == 0" identifier == number_literal)) )) (compound_statement "{\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }" { (expression_statement "iVar5 = *(int *)(iVar5 + 4);" (assignment_expression "iVar5 = *(int *)(iVar5 + 4)" identifier = (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }" if (parenthesized_expression "(uVar3 == 0 && uVar6 == 0)" ( (binary_expression "uVar3 == 0 && uVar6 == 0" (binary_expression "uVar3 == 0" identifier == number_literal) && (binary_expression "uVar6 == 0" identifier == number_literal)) )) (compound_statement "{\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }" { (expression_statement "uVar6 = *(uint *)(iVar5 + 0x20);" (assignment_expression "uVar6 = *(uint *)(iVar5 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x20)" * (cast_expression "(uint *)(iVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(iVar5 + 0x24);" (assignment_expression "uVar3 = *(uint *)(iVar5 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x24)" * (cast_expression "(uint *)(iVar5 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "uVar2 = *(uint *)(iVar5 + 0x28);" (assignment_expression "uVar2 = *(uint *)(iVar5 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x28)" * (cast_expression "(uint *)(iVar5 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x2c);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x2c)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x2c)" * (cast_expression "(uint *)(iVar5 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2c)" ( (binary_expression "iVar5 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" else (if_statement "if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" if (parenthesized_expression "(uVar3 == 0 && uVar6 == 0)" ( (binary_expression "uVar3 == 0 && uVar6 == 0" (binary_expression "uVar3 == 0" identifier == number_literal) && (binary_expression "uVar6 == 0" identifier == number_literal)) )) (compound_statement "{\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" { (expression_statement "uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);" (assignment_expression "uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20)" identifier = (pointer_expression "*(uint *)(*(int *)(iVar5 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(iVar5 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 4) + 0x20)" ( (binary_expression "*(int *)(iVar5 + 4) + 0x20" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);" (assignment_expression "uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(iVar5 + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(iVar5 + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 4) + 0x24)" ( (binary_expression "*(int *)(iVar5 + 4) + 0x24" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) })))) (if_statement "if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }" if (parenthesized_expression "(uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2))" ( (binary_expression "uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)" (binary_expression "uVar3 < uVar4" identifier < identifier) || (binary_expression "uVar3 - uVar4 < (uint)(uVar6 < uVar2)" (binary_expression "uVar3 - uVar4" identifier - identifier) < (call_expression "(uint)(uVar6 < uVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar2)" ( (binary_expression "uVar6 < uVar2" identifier < identifier) ))))) )) (compound_statement "{\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }" { (expression_statement "uVar2 = uVar6;" (assignment_expression "uVar2 = uVar6" identifier = identifier) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) })) }))) (return_statement "return CONCAT44(uVar4,uVar2);" return (call_expression "CONCAT44(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (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 { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (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 (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) , (binary_expression IDENT + 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) )))) ;) })) }) (else_clause else (compound_statement { (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 (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) (return_statement return (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })))
(function_definition "undefined8\nFUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int unaff_EBP;\n  int *unaff_ESI;\n  undefined8 uVar7;\n  char cStack_59;\n  undefined1 auStack_58 [8];\n  undefined1 uStack_50;\n  undefined1 uStack_4f;\n  undefined4 uStack_4c;\n  undefined4 uStack_48;\n  int iStack_44;\n  int *piStack_40;\n  undefined4 uStack_3c;\n  undefined4 uStack_38;\n  undefined4 uStack_34;\n  undefined4 uStack_30;\n  char *pcStack_2c;\n  undefined4 uStack_20;\n  undefined **ppuStack_1c;\n  \n  if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }\n  return CONCAT44(uVar4,uVar2);\n}" (type_identifier "undefined8") (function_declarator "FUN_001ba570(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)" (identifier "FUN_001ba570") (parameter_list "(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,\n            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,char param_11,char *param_12)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined1 param_2" (type_identifier "undefined1") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int *param_6" (primitive_type "int") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "undefined4 param_10" (type_identifier "undefined4") (identifier "param_10")) (, ",") (parameter_declaration "char param_11" (primitive_type "char") (identifier "param_11")) (, ",") (parameter_declaration "char *param_12" (primitive_type "char") (pointer_declarator "*param_12" (* "*") (identifier "param_12"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int unaff_EBP;\n  int *unaff_ESI;\n  undefined8 uVar7;\n  char cStack_59;\n  undefined1 auStack_58 [8];\n  undefined1 uStack_50;\n  undefined1 uStack_4f;\n  undefined4 uStack_4c;\n  undefined4 uStack_48;\n  int iStack_44;\n  int *piStack_40;\n  undefined4 uStack_3c;\n  undefined4 uStack_38;\n  undefined4 uStack_34;\n  undefined4 uStack_30;\n  char *pcStack_2c;\n  undefined4 uStack_20;\n  undefined **ppuStack_1c;\n  \n  if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }\n  return CONCAT44(uVar4,uVar2);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "int *unaff_ESI;" (primitive_type "int") (pointer_declarator "*unaff_ESI" (* "*") (identifier "unaff_ESI")) (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "char cStack_59;" (primitive_type "char") (identifier "cStack_59") (; ";")) (declaration "undefined1 auStack_58 [8];" (type_identifier "undefined1") (array_declarator "auStack_58 [8]" (identifier "auStack_58") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined1 uStack_50;" (type_identifier "undefined1") (identifier "uStack_50") (; ";")) (declaration "undefined1 uStack_4f;" (type_identifier "undefined1") (identifier "uStack_4f") (; ";")) (declaration "undefined4 uStack_4c;" (type_identifier "undefined4") (identifier "uStack_4c") (; ";")) (declaration "undefined4 uStack_48;" (type_identifier "undefined4") (identifier "uStack_48") (; ";")) (declaration "int iStack_44;" (primitive_type "int") (identifier "iStack_44") (; ";")) (declaration "int *piStack_40;" (primitive_type "int") (pointer_declarator "*piStack_40" (* "*") (identifier "piStack_40")) (; ";")) (declaration "undefined4 uStack_3c;" (type_identifier "undefined4") (identifier "uStack_3c") (; ";")) (declaration "undefined4 uStack_38;" (type_identifier "undefined4") (identifier "uStack_38") (; ";")) (declaration "undefined4 uStack_34;" (type_identifier "undefined4") (identifier "uStack_34") (; ";")) (declaration "undefined4 uStack_30;" (type_identifier "undefined4") (identifier "uStack_30") (; ";")) (declaration "char *pcStack_2c;" (primitive_type "char") (pointer_declarator "*pcStack_2c" (* "*") (identifier "pcStack_2c")) (; ";")) (declaration "undefined4 uStack_20;" (type_identifier "undefined4") (identifier "uStack_20") (; ";")) (declaration "undefined **ppuStack_1c;" (type_identifier "undefined") (pointer_declarator "**ppuStack_1c" (* "*") (pointer_declarator "*ppuStack_1c" (* "*") (identifier "ppuStack_1c"))) (; ";")) (if_statement "if (*(int *)(param_1 + 4) == 0) {\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 4) == 0" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;\n    iVar5 = *(int *)(DAT_0038f378 + 8);\n    if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }\n    uVar2 = *(uint *)(iVar5 + 0x5218);\n    uVar4 = *(uint *)(iVar5 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }\n  }" ({ "{") (if_statement "if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;" (if "if") (parenthesized_expression "(*(int *)(DAT_0038f378 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 0xc) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 0xc)" (( "(") (binary_expression "DAT_0038f378 + 0xc" (identifier "DAT_0038f378") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ba658;" (goto "goto") (statement_identifier "LAB_001ba658") (; ";"))) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar5 == 0) {\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_001ba3d0();\n      FUN_000559f2();\n      uStack_48 = param_4;\n      iStack_44 = param_5;\n      uStack_50 = (undefined1)param_1;\n      uStack_4f = param_2;\n      uStack_4c = param_3;\n      if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }\n      piStack_40 = param_6;\n      cStack_59 = '\x01';\n      uStack_38 = param_8;\n      uStack_34 = param_9;\n      uStack_30 = param_10;\n      uStack_3c = param_7;\n      pcStack_2c = &cStack_59;\n      ppuStack_1c = &__DT_PLTGOT;\n      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);\n      iVar5 = (int)((ulonglong)uVar7 >> 0x20);\n      uVar2 = (uint)uVar7;\n      if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }\n      if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }\n      if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }\n      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }\n      uVar4 = *(uint *)(param_5 + 4);\n      uVar6 = *(uint *)(param_5 + 4);\n      iVar1 = *(int *)(param_5 + 8);\n      *param_6 = param_5;\n      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);\n    }" ({ "{") (expression_statement "FUN_001ba3d0();" (call_expression "FUN_001ba3d0()" (identifier "FUN_001ba3d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" (identifier "FUN_000559f2") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uStack_48 = param_4;" (assignment_expression "uStack_48 = param_4" (identifier "uStack_48") (= "=") (identifier "param_4")) (; ";")) (expression_statement "iStack_44 = param_5;" (assignment_expression "iStack_44 = param_5" (identifier "iStack_44") (= "=") (identifier "param_5")) (; ";")) (expression_statement "uStack_50 = (undefined1)param_1;" (assignment_expression "uStack_50 = (undefined1)param_1" (identifier "uStack_50") (= "=") (cast_expression "(undefined1)param_1" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "param_1"))) (; ";")) (expression_statement "uStack_4f = param_2;" (assignment_expression "uStack_4f = param_2" (identifier "uStack_4f") (= "=") (identifier "param_2")) (; ";")) (expression_statement "uStack_4c = param_3;" (assignment_expression "uStack_4c = param_3" (identifier "uStack_4c") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_6 != (int *)0x0) {\n        *param_6 = 0;\n      }" (if "if") (parenthesized_expression "(param_6 != (int *)0x0)" (( "(") (binary_expression "param_6 != (int *)0x0" (identifier "param_6") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *param_6 = 0;\n      }" ({ "{") (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "piStack_40 = param_6;" (assignment_expression "piStack_40 = param_6" (identifier "piStack_40") (= "=") (identifier "param_6")) (; ";")) (expression_statement "cStack_59 = '\x01';" (assignment_expression "cStack_59 = '\x01'" (identifier "cStack_59") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "uStack_38 = param_8;" (assignment_expression "uStack_38 = param_8" (identifier "uStack_38") (= "=") (identifier "param_8")) (; ";")) (expression_statement "uStack_34 = param_9;" (assignment_expression "uStack_34 = param_9" (identifier "uStack_34") (= "=") (identifier "param_9")) (; ";")) (expression_statement "uStack_30 = param_10;" (assignment_expression "uStack_30 = param_10" (identifier "uStack_30") (= "=") (identifier "param_10")) (; ";")) (expression_statement "uStack_3c = param_7;" (assignment_expression "uStack_3c = param_7" (identifier "uStack_3c") (= "=") (identifier "param_7")) (; ";")) (expression_statement "pcStack_2c = &cStack_59;" (assignment_expression "pcStack_2c = &cStack_59" (identifier "pcStack_2c") (= "=") (pointer_expression "&cStack_59" (& "&") (identifier "cStack_59"))) (; ";")) (expression_statement "ppuStack_1c = &__DT_PLTGOT;" (assignment_expression "ppuStack_1c = &__DT_PLTGOT" (identifier "ppuStack_1c") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);" (assignment_expression "uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58)" (parenthesized_expression "(**(code **)(*unaff_ESI + 0xc))" (( "(") (pointer_expression "**(code **)(*unaff_ESI + 0xc)" (* "*") (pointer_expression "*(code **)(*unaff_ESI + 0xc)" (* "*") (cast_expression "(code **)(*unaff_ESI + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*unaff_ESI + 0xc)" (( "(") (binary_expression "*unaff_ESI + 0xc" (pointer_expression "*unaff_ESI" (* "*") (identifier "unaff_ESI")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(unaff_ESI,auStack_58)" (( "(") (identifier "unaff_ESI") (, ",") (identifier "auStack_58") () ")")))) (; ";")) (expression_statement "iVar5 = (int)((ulonglong)uVar7 >> 0x20);" (assignment_expression "iVar5 = (int)((ulonglong)uVar7 >> 0x20)" (identifier "iVar5") (= "=") (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar2 = (uint)uVar7;" (assignment_expression "uVar2 = (uint)uVar7" (identifier "uVar2") (= "=") (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7"))) (; ";")) (if_statement "if (param_12 == (char *)0x0) {\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }\n      else {\n        *param_12 = cStack_59;\n      }" (if "if") (parenthesized_expression "(param_12 == (char *)0x0)" (( "(") (binary_expression "param_12 == (char *)0x0" (identifier "param_12") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }\n      }" ({ "{") (if_statement "if (cStack_59 == '\0') {\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }" (if "if") (parenthesized_expression "(cStack_59 == '\0')" (( "(") (binary_expression "cStack_59 == '\0'" (identifier "cStack_59") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);\n        }" ({ "{") (expression_statement "FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);" (call_expression "FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6)" (identifier "FUN_00069d00") (argument_list "(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6)" (( "(") (binary_expression "unaff_EBP + 0xe497c" (identifier "unaff_EBP") (+ "+") (number_literal "0xe497c")) (, ",") (number_literal "0x9c") (, ",") (binary_expression "unaff_EBP + 0xe4e8a" (identifier "unaff_EBP") (+ "+") (number_literal "0xe4e8a")) (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        *param_12 = cStack_59;\n      }" (else "else") (compound_statement "{\n        *param_12 = cStack_59;\n      }" ({ "{") (expression_statement "*param_12 = cStack_59;" (assignment_expression "*param_12 = cStack_59" (pointer_expression "*param_12" (* "*") (identifier "param_12")) (= "=") (identifier "cStack_59")) (; ";")) (} "}")))) (if_statement "if ((param_11 == '\0') || (*param_6 != 0)) {\n        return uVar7;\n      }" (if "if") (parenthesized_expression "((param_11 == '\0') || (*param_6 != 0))" (( "(") (binary_expression "(param_11 == '\0') || (*param_6 != 0)" (parenthesized_expression "(param_11 == '\0')" (( "(") (binary_expression "param_11 == '\0'" (identifier "param_11") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*param_6 != 0)" (( "(") (binary_expression "*param_6 != 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        return uVar7;\n      }" ({ "{") (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (if_statement "if (param_5 == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);\n      }" ({ "{") (expression_statement "FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);" (call_expression "FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5)" (identifier "FUN_00069d00") (argument_list "(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5)" (( "(") (binary_expression "unaff_EBP + 0xe497c" (identifier "unaff_EBP") (+ "+") (number_literal "0xe497c")) (, ",") (number_literal "0xa2") (, ",") (binary_expression "unaff_EBP + 0xe4e8a" (identifier "unaff_EBP") (+ "+") (number_literal "0xe4e8a")) (, ",") (identifier "iVar5") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }" (if "if") (parenthesized_expression "((*(byte *)(param_5 + 0x1c) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_5 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(param_5 + 0x1c) & 1)" (( "(") (binary_expression "*(byte *)(param_5 + 0x1c) & 1" (pointer_expression "*(byte *)(param_5 + 0x1c)" (* "*") (cast_expression "(byte *)(param_5 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x1c)" (( "(") (binary_expression "param_5 + 0x1c" (identifier "param_5") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);\n      }" ({ "{") (expression_statement "FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);" (call_expression "FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2)" (identifier "FUN_00069d00") (argument_list "(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2)" (( "(") (binary_expression "unaff_EBP + 0xcd7f6" (identifier "unaff_EBP") (+ "+") (number_literal "0xcd7f6")) (, ",") (number_literal "0xc5") (, ",") (binary_expression "unaff_EBP + 0xe4e7a" (identifier "unaff_EBP") (+ "+") (number_literal "0xe4e7a")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = *(uint *)(param_5 + 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_5 + 4)" (* "*") (cast_expression "(uint *)(param_5 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 4)" (( "(") (binary_expression "param_5 + 4" (identifier "param_5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(uint *)(param_5 + 4);" (assignment_expression "uVar6 = *(uint *)(param_5 + 4)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_5 + 4)" (* "*") (cast_expression "(uint *)(param_5 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 4)" (( "(") (binary_expression "param_5 + 4" (identifier "param_5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(param_5 + 8);" (assignment_expression "iVar1 = *(int *)(param_5 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_5 + 8)" (* "*") (cast_expression "(int *)(param_5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 8)" (( "(") (binary_expression "param_5 + 8" (identifier "param_5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*param_6 = param_5;" (assignment_expression "*param_6 = param_5" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "param_5")) (; ";")) (return_statement "return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);" (return "return") (call_expression "CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6)" (identifier "CONCAT44") (argument_list "(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6)" (( "(") (binary_expression "iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4)" (binary_expression "iVar5 + iVar1" (identifier "iVar5") (+ "+") (identifier "iVar1")) (+ "+") (cast_expression "(uint)CARRY4(uVar2,uVar4)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar2,uVar4)" (identifier "CARRY4") (argument_list "(uVar2,uVar4)" (( "(") (identifier "uVar2") (, ",") (identifier "uVar4") () ")"))))) (, ",") (binary_expression "uVar2 + uVar6" (identifier "uVar2") (+ "+") (identifier "uVar6")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(uint *)(iVar5 + 0x5218);" (assignment_expression "uVar2 = *(uint *)(iVar5 + 0x5218)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x5218)" (* "*") (cast_expression "(uint *)(iVar5 + 0x5218)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x5218)" (( "(") (binary_expression "iVar5 + 0x5218" (identifier "iVar5") (+ "+") (number_literal "0x5218")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x521c);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x521c)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x521c)" (* "*") (cast_expression "(uint *)(iVar5 + 0x521c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x521c)" (( "(") (binary_expression "iVar5 + 0x521c" (identifier "iVar5") (+ "+") (number_literal "0x521c")) () ")"))))) (; ";")) (if_statement "if (uVar4 == 0 && uVar2 == 0) {\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }" (if "if") (parenthesized_expression "(uVar4 == 0 && uVar2 == 0)" (( "(") (binary_expression "uVar4 == 0 && uVar2 == 0" (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);\n    }" ({ "{") (return_statement "return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);" (return "return") (pointer_expression "*(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" (* "*") (cast_expression "(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20)" (( "(") (binary_expression "*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20" (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(DAT_0038f378 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_0038f378 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 0xc) + 4" (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 0xc)" (( "(") (binary_expression "DAT_0038f378 + 0xc" (identifier "DAT_0038f378") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" (else "else") (compound_statement "{\n    if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }\n    iVar5 = *(int *)(DAT_0038f378 + 0xc);\n    if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }\n    iVar1 = *(int *)(DAT_0038f378 + 8);\n    if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }\n    uVar4 = *(uint *)(iVar1 + 0x4e74);\n    uVar2 = *(uint *)(iVar1 + 0x4e70);\n    uVar6 = *(uint *)(iVar1 + 0x5218);\n    uVar3 = *(uint *)(iVar1 + 0x521c);\n    if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }\n    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }\n  }" ({ "{") (if_statement "if (*(int *)(param_1 + 4) != 1) {\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) != 1)" (( "(") (binary_expression "*(int *)(param_1 + 4) != 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      ppuStack_1c = (undefined **)0x29f032;\n                    \n      uStack_20 = 0x1ba687;\n      FUN_00069d00();\n    }" ({ "{") (expression_statement "ppuStack_1c = (undefined **)0x29f032;" (assignment_expression "ppuStack_1c = (undefined **)0x29f032" (identifier "ppuStack_1c") (= "=") (cast_expression "(undefined **)0x29f032" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x29f032"))) (; ";")) (expression_statement "uStack_20 = 0x1ba687;" (assignment_expression "uStack_20 = 0x1ba687" (identifier "uStack_20") (= "=") (number_literal "0x1ba687")) (; ";")) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" (identifier "FUN_00069d00") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 0xc);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 0xc)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(DAT_0038f378 + 0xc)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 0xc)" (( "(") (binary_expression "DAT_0038f378 + 0xc" (identifier "DAT_0038f378") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar5 == 0) {\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba66e;\n      FUN_00069d00();\n    }" ({ "{") (labeled_statement "LAB_001ba658:\n      ppuStack_1c = (undefined **)0x287210;" (statement_identifier "LAB_001ba658") (: ":") (expression_statement "ppuStack_1c = (undefined **)0x287210;" (assignment_expression "ppuStack_1c = (undefined **)0x287210" (identifier "ppuStack_1c") (= "=") (cast_expression "(undefined **)0x287210" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x287210"))) (; ";"))) (expression_statement "uStack_20 = 0x1ba66e;" (assignment_expression "uStack_20 = 0x1ba66e" (identifier "uStack_20") (= "=") (number_literal "0x1ba66e")) (; ";")) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" (identifier "FUN_00069d00") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar1 = *(int *)(DAT_0038f378 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0) {\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      ppuStack_1c = (undefined **)0x287210;\n                    \n      uStack_20 = 0x1ba69d;\n      FUN_00069d00();\n    }" ({ "{") (expression_statement "ppuStack_1c = (undefined **)0x287210;" (assignment_expression "ppuStack_1c = (undefined **)0x287210" (identifier "ppuStack_1c") (= "=") (cast_expression "(undefined **)0x287210" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x287210"))) (; ";")) (expression_statement "uStack_20 = 0x1ba69d;" (assignment_expression "uStack_20 = 0x1ba69d" (identifier "uStack_20") (= "=") (number_literal "0x1ba69d")) (; ";")) (expression_statement "FUN_00069d00();" (call_expression "FUN_00069d00()" (identifier "FUN_00069d00") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = *(uint *)(iVar1 + 0x4e74);" (assignment_expression "uVar4 = *(uint *)(iVar1 + 0x4e74)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x4e74)" (* "*") (cast_expression "(uint *)(iVar1 + 0x4e74)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x4e74)" (( "(") (binary_expression "iVar1 + 0x4e74" (identifier "iVar1") (+ "+") (number_literal "0x4e74")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(iVar1 + 0x4e70);" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x4e70)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x4e70)" (* "*") (cast_expression "(uint *)(iVar1 + 0x4e70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x4e70)" (( "(") (binary_expression "iVar1 + 0x4e70" (identifier "iVar1") (+ "+") (number_literal "0x4e70")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(uint *)(iVar1 + 0x5218);" (assignment_expression "uVar6 = *(uint *)(iVar1 + 0x5218)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x5218)" (* "*") (cast_expression "(uint *)(iVar1 + 0x5218)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x5218)" (( "(") (binary_expression "iVar1 + 0x5218" (identifier "iVar1") (+ "+") (number_literal "0x5218")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(iVar1 + 0x521c);" (assignment_expression "uVar3 = *(uint *)(iVar1 + 0x521c)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x521c)" (* "*") (cast_expression "(uint *)(iVar1 + 0x521c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x521c)" (( "(") (binary_expression "iVar1 + 0x521c" (identifier "iVar1") (+ "+") (number_literal "0x521c")) () ")"))))) (; ";")) (if_statement "if (uVar4 == 0 && uVar2 == 0) {\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }\n    else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" (if "if") (parenthesized_expression "(uVar4 == 0 && uVar2 == 0)" (( "(") (binary_expression "uVar4 == 0 && uVar2 == 0" (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      iVar5 = *(int *)(iVar5 + 4);\n      if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }\n      uVar2 = *(uint *)(iVar5 + 0x28);\n      uVar4 = *(uint *)(iVar5 + 0x2c);\n    }" ({ "{") (expression_statement "iVar5 = *(int *)(iVar5 + 4);" (assignment_expression "iVar5 = *(int *)(iVar5 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (uVar3 == 0 && uVar6 == 0) {\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }" (if "if") (parenthesized_expression "(uVar3 == 0 && uVar6 == 0)" (( "(") (binary_expression "uVar3 == 0 && uVar6 == 0" (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        uVar6 = *(uint *)(iVar5 + 0x20);\n        uVar3 = *(uint *)(iVar5 + 0x24);\n      }" ({ "{") (expression_statement "uVar6 = *(uint *)(iVar5 + 0x20);" (assignment_expression "uVar6 = *(uint *)(iVar5 + 0x20)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x20)" (* "*") (cast_expression "(uint *)(iVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x20)" (( "(") (binary_expression "iVar5 + 0x20" (identifier "iVar5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(iVar5 + 0x24);" (assignment_expression "uVar3 = *(uint *)(iVar5 + 0x24)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x24)" (* "*") (cast_expression "(uint *)(iVar5 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x24)" (( "(") (binary_expression "iVar5 + 0x24" (identifier "iVar5") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(uint *)(iVar5 + 0x28);" (assignment_expression "uVar2 = *(uint *)(iVar5 + 0x28)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x28)" (* "*") (cast_expression "(uint *)(iVar5 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x2c);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x2c)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar5 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x2c)" (( "(") (binary_expression "iVar5 + 0x2c" (identifier "iVar5") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (} "}")) (else_clause "else if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" (else "else") (if_statement "if (uVar3 == 0 && uVar6 == 0) {\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" (if "if") (parenthesized_expression "(uVar3 == 0 && uVar6 == 0)" (( "(") (binary_expression "uVar3 == 0 && uVar6 == 0" (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);\n      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);\n    }" ({ "{") (expression_statement "uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);" (assignment_expression "uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(*(int *)(iVar5 + 4) + 0x20)" (* "*") (cast_expression "(uint *)(*(int *)(iVar5 + 4) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar5 + 4) + 0x20)" (( "(") (binary_expression "*(int *)(iVar5 + 4) + 0x20" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);" (assignment_expression "uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(*(int *)(iVar5 + 4) + 0x24)" (* "*") (cast_expression "(uint *)(*(int *)(iVar5 + 4) + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar5 + 4) + 0x24)" (( "(") (binary_expression "*(int *)(iVar5 + 4) + 0x24" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))))) (if_statement "if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2))" (( "(") (binary_expression "uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)" (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) (|| "||") (binary_expression "uVar3 - uVar4 < (uint)(uVar6 < uVar2)" (binary_expression "uVar3 - uVar4" (identifier "uVar3") (- "-") (identifier "uVar4")) (< "<") (call_expression "(uint)(uVar6 < uVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 < uVar2)" (( "(") (binary_expression "uVar6 < uVar2" (identifier "uVar6") (< "<") (identifier "uVar2")) () ")"))))) () ")")) (compound_statement "{\n      uVar2 = uVar6;\n      uVar4 = uVar3;\n    }" ({ "{") (expression_statement "uVar2 = uVar6;" (assignment_expression "uVar2 = uVar6" (identifier "uVar2") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" (identifier "uVar4") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (} "}")))) (return_statement "return CONCAT44(uVar4,uVar2);" (return "return") (call_expression "CONCAT44(uVar4,uVar2)" (identifier "CONCAT44") (argument_list "(uVar4,uVar2)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}")))

/* 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(Constant_expression * this, Expression_eval_info *
   param_1) */

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

{
  type_3 *var_8;
  type_4 *var_2;
  int var_11;
  type_5 var_5;
  type_5 var_9;
  type_5 var_4;
  type_3 *unaff_EBX;
  type_5 var_10;
  
  if (this->function_ == var_1) {
    if (parameters->target_ == (type_3 *)0x0) goto LAB_001ba658;
    var_2 = parameters->options_;
    if (var_2 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
      Target::var_3(unaff_EBX);
    }
    var_5 = (type_5)(var_2->max_page_size_).function_1;
    var_4 = *(type_5 *)((int)&(var_2->max_page_size_).function_1 + 4);
    if (var_4 == 0 && var_5 == 0) {
      return *(uint64_t *)(*(int *)(parameters->target_ + 4) + 0x20);
    }
  }
  else {
    if (this->function_ != var_6) {
                    /* WARNING: Subroutine does not return */
      var_7("../../gold/expression.cc",0x44a,"value");
    }
    var_8 = parameters->target_;
    if (var_8 == (type_3 *)0x0) {
LAB_001ba658:
                    /* WARNING: Subroutine does not return */
      var_7("../../gold/parameters.h",0x69,"target");
    }
    var_2 = parameters->options_;
    if (var_2 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_7("../../gold/parameters.h",0x5c,"options");
    }
    var_4 = *(type_5 *)((int)&(var_2->common_page_size_).function_1 + 4);
    var_5 = (type_5)(var_2->common_page_size_).function_1;
    var_10 = (type_5)(var_2->max_page_size_).function_1;
    var_9 = *(type_5 *)((int)&(var_2->max_page_size_).function_1 + 4);
    if (var_4 == 0 && var_5 == 0) {
      var_11 = *(int *)(var_8 + 4);
      if (var_9 == 0 && var_10 == 0) {
        var_10 = *(type_5 *)(var_11 + 0x20);
        var_9 = *(type_5 *)(var_11 + 0x24);
      }
      var_5 = *(type_5 *)(var_11 + 0x28);
      var_4 = *(type_5 *)(var_11 + 0x2c);
    }
    else if (var_9 == 0 && var_10 == 0) {
      var_10 = *(type_5 *)(*(int *)(var_8 + 4) + 0x20);
      var_9 = *(type_5 *)(*(int *)(var_8 + 4) + 0x24);
    }
    if (var_9 < var_4 || var_9 - var_4 < (type_5)(var_10 < var_5)) {
      var_5 = var_10;
      var_4 = var_9;
    }
  }
  return var_12(var_4,var_5);
}


(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: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (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 (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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier)))))) (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 (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal))))))))) alternative: (else_clause (compound_statement (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 (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))) (return_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))

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

undefined8
MASKED(int param_1,undefined1 param_2,undefined4 param_3,undefined4 param_4,int param_5,
            int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,
            undefined4 param_10,char param_11,char *param_12)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int unaff_EBP;
  int *unaff_ESI;
  undefined8 uVar7;
  char cStack_59;
  undefined1 auStack_58 [8];
  undefined1 uStack_50;
  undefined1 uStack_4f;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  int iStack_44;
  int *piStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  char *pcStack_2c;
  undefined4 uStack_20;
  undefined **ppuStack_1c;
  
  if (*(int *)(param_1 + 4) == 0) {
    if (*(int *)(DAT_0038f378 + 0xc) == 0) goto LAB_001ba658;
    iVar5 = *(int *)(DAT_0038f378 + 8);
    if (iVar5 == 0) {
      FUN_001ba3d0();
      FUN_000559f2();
      uStack_48 = param_4;
      iStack_44 = param_5;
      uStack_50 = (undefined1)param_1;
      uStack_4f = param_2;
      uStack_4c = param_3;
      if (param_6 != (int *)0x0) {
        *param_6 = 0;
      }
      piStack_40 = param_6;
      cStack_59 = '\x01';
      uStack_38 = param_8;
      uStack_34 = param_9;
      uStack_30 = param_10;
      uStack_3c = param_7;
      pcStack_2c = &cStack_59;
      ppuStack_1c = &__DT_PLTGOT;
      uVar7 = (**(code **)(*unaff_ESI + 0xc))(unaff_ESI,auStack_58);
      iVar5 = (int)((ulonglong)uVar7 >> 0x20);
      uVar2 = (uint)uVar7;
      if (param_12 == (char *)0x0) {
        if (cStack_59 == '\0') {
                    /* WARNING: Subroutine does not return */
          FUN_00069d00(unaff_EBP + 0xe497c,0x9c,unaff_EBP + 0xe4e8a,param_6);
        }
      }
      else {
        *param_12 = cStack_59;
      }
      if ((param_11 == '\0') || (*param_6 != 0)) {
        return uVar7;
      }
      if (param_5 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00069d00(unaff_EBP + 0xe497c,0xa2,unaff_EBP + 0xe4e8a,iVar5);
      }
      if ((*(byte *)(param_5 + 0x1c) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00069d00(unaff_EBP + 0xcd7f6,0xc5,unaff_EBP + 0xe4e7a,uVar2);
      }
      uVar4 = *(uint *)(param_5 + 4);
      uVar6 = *(uint *)(param_5 + 4);
      iVar1 = *(int *)(param_5 + 8);
      *param_6 = param_5;
      return CONCAT44(iVar5 + iVar1 + (uint)CARRY4(uVar2,uVar4),uVar2 + uVar6);
    }
    uVar2 = *(uint *)(iVar5 + 0x5218);
    uVar4 = *(uint *)(iVar5 + 0x521c);
    if (uVar4 == 0 && uVar2 == 0) {
      return *(undefined8 *)(*(int *)(*(int *)(DAT_0038f378 + 0xc) + 4) + 0x20);
    }
  }
  else {
    if (*(int *)(param_1 + 4) != 1) {
      ppuStack_1c = (undefined **)0x29f032;
                    /* WARNING: Subroutine does not return */
      uStack_20 = 0x1ba687;
      FUN_00069d00();
    }
    iVar5 = *(int *)(DAT_0038f378 + 0xc);
    if (iVar5 == 0) {
LAB_001ba658:
      ppuStack_1c = (undefined **)0x287210;
                    /* WARNING: Subroutine does not return */
      uStack_20 = 0x1ba66e;
      FUN_00069d00();
    }
    iVar1 = *(int *)(DAT_0038f378 + 8);
    if (iVar1 == 0) {
      ppuStack_1c = (undefined **)0x287210;
                    /* WARNING: Subroutine does not return */
      uStack_20 = 0x1ba69d;
      FUN_00069d00();
    }
    uVar4 = *(uint *)(iVar1 + 0x4e74);
    uVar2 = *(uint *)(iVar1 + 0x4e70);
    uVar6 = *(uint *)(iVar1 + 0x5218);
    uVar3 = *(uint *)(iVar1 + 0x521c);
    if (uVar4 == 0 && uVar2 == 0) {
      iVar5 = *(int *)(iVar5 + 4);
      if (uVar3 == 0 && uVar6 == 0) {
        uVar6 = *(uint *)(iVar5 + 0x20);
        uVar3 = *(uint *)(iVar5 + 0x24);
      }
      uVar2 = *(uint *)(iVar5 + 0x28);
      uVar4 = *(uint *)(iVar5 + 0x2c);
    }
    else if (uVar3 == 0 && uVar6 == 0) {
      uVar6 = *(uint *)(*(int *)(iVar5 + 4) + 0x20);
      uVar3 = *(uint *)(*(int *)(iVar5 + 4) + 0x24);
    }
    if (uVar3 < uVar4 || uVar3 - uVar4 < (uint)(uVar6 < uVar2)) {
      uVar2 = uVar6;
      uVar4 = uVar3;
    }
  }
  return CONCAT44(uVar4,uVar2);
}

