
void lang_add_section(lang_statement_list_type *ptr,asection *section,flag_info *sflag_info,
                     lang_output_section_statement_type *output)

{
  bfd_section *pbVar1;
  bfd *pbVar2;
  bfd_boolean bVar3;
  uint uVar4;
  int iVar5;
  lang_statement_union *plVar6;
  long lVar7;
  asection *paVar8;
  uint uVar9;
  uint flags;
  byte *pbVar10;
  byte *pbVar11;
  undefined1 uVar12;
  undefined1 uVar13;
  byte bVar14;
  
  bVar14 = 0;
  uVar12 = &stack0xffffffffffffffe0 < &DAT_00000008;
  uVar13 = &stack0x00000000 == (undefined1 *)0x28;
  uVar4 = section->flags;
  bVar3 = lang_discard_section_p((asection *)(ulong)uVar4);
  lVar7 = 10;
  pbVar10 = (byte *)output->name;
  pbVar11 = (byte *)"/DISCARD/";
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    uVar12 = *pbVar10 < *pbVar11;
    uVar13 = *pbVar10 == *pbVar11;
    pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;
    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;
  } while ((bool)uVar13);
  if ((bVar3 == 0) && ((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12)) {
    if (((sflag_info == (flag_info *)0x0) ||
        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)
                           (&link_info,sflag_info,section), bVar3 != 0)) &&
       (section->output_section == (bfd_section *)0x0)) {
      if ((uVar4 & 0x2020000) == 0x2020000) {
        flags = uVar4 & 0xfff3fdfb;
        if ((link_info._1_1_ & 0x10) != 0) {
          flags = uVar4 & 0xfff1fdfb;
        }
      }
      else {
        flags = uVar4 & 0xfff1fdfb;
        if ((link_info._0_1_ & 3) == 2) {
          flags = uVar4 & 0xfffffdff;
        }
      }
      if (output->sectype == noload_section) {
        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {
          flags = flags & 0xfffffefd | 0x200;
        }
        else {
          flags = flags & 0xfffffffc | 0x200;
        }
      }
      else if (output->sectype == noalloc_section) {
        flags = flags & 0xfffffffe;
      }
      paVar8 = output->bfd_section;
      if (paVar8 == (asection *)0x0) {
        init_os(output,flags);
        paVar8 = output->bfd_section;
      }
      uVar4 = (flags | 0xfffffff7) & paVar8->flags;
      paVar8->flags = uVar4;
      if ((paVar8->field_0x24 & 4) == 0) {
        paVar8->field_0x24 = paVar8->field_0x24 | 4;
        pbVar2 = link_info.output_bfd;
        paVar8->flags = uVar4 | flags;
        (*pbVar2->xvec->_bfd_init_private_section_data)
                  (section->owner,section,pbVar2,paVar8,&link_info);
        if ((flags & 0x800000) != 0) {
          output->bfd_section->entsize = section->entsize;
        }
      }
      else {
        uVar9 = flags & 0xfffffff7;
        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||
           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {
          uVar4 = uVar4 & 0xfe7fffff;
          uVar9 = flags & 0xfe7ffff7;
        }
        flags = uVar9;
        paVar8->flags = uVar4 | flags;
      }
      if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {
        output->block_value = 0x80;
      }
      paVar8 = output->bfd_section;
      if (paVar8->alignment_power < section->alignment_power) {
        paVar8->alignment_power = section->alignment_power;
      }
      bVar3 = map_head_is_link_order;
      section->output_section = paVar8;
      if (bVar3 == 0) {
        pbVar1 = (paVar8->map_tail).s;
        (paVar8->map_tail).link_order = (bfd_link_order *)section;
        (section->map_head).link_order = (bfd_link_order *)0x0;
        (section->map_tail).s = pbVar1;
        if (pbVar1 == (bfd_section *)0x0) {
          (paVar8->map_head).link_order = (bfd_link_order *)section;
        }
        else {
          (pbVar1->map_head).link_order = (bfd_link_order *)section;
        }
      }
      plVar6 = (lang_statement_union *)stat_alloc(0x18);
      (plVar6->header).type = lang_input_section_enum;
      (plVar6->header).next = (lang_statement_union *)0x0;
      *ptr->tail = plVar6;
      ptr->tail = (lang_statement_union **)plVar6;
      (plVar6->input_section).section = section;
      return;
    }
  }
  else if (section->output_section == (bfd_section *)0x0) {
    section->output_section = (bfd_section *)(_bfd_std_section + 0x230);
    return;
  }
  return;
}



void FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)

{
  long lVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  long lVar5;
  uint uVar6;
  uint uVar7;
  byte *pbVar8;
  byte *pbVar9;
  undefined1 uVar10;
  undefined1 uVar11;
  byte bVar12;
  
  bVar12 = 0;
  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;
  uVar11 = &stack0x00000000 == (undefined1 *)0x28;
  uVar3 = *(uint *)(param_2 + 0x20);
  iVar2 = FUN_00113360(uVar3);
  lVar5 = 10;
  pbVar8 = *(byte **)(param_4 + 0x30);
  pbVar9 = (byte *)"/DISCARD/";
  do {
    if (lVar5 == 0) break;
    lVar5 = lVar5 + -1;
    uVar10 = *pbVar8 < *pbVar9;
    uVar11 = *pbVar8 == *pbVar9;
    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;
    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
  } while ((bool)uVar11);
  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {
    if (((param_3 == 0) ||
        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),
        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {
      if ((uVar3 & 0x2020000) == 0x2020000) {
        uVar7 = uVar3 & 0xfff3fdfb;
        if ((DAT_00185a01 & 0x10) != 0) {
          uVar7 = uVar3 & 0xfff1fdfb;
        }
      }
      else {
        uVar7 = uVar3 & 0xfff1fdfb;
        if ((DAT_00185a00 & 3) == 2) {
          uVar7 = uVar3 & 0xfffffdff;
        }
      }
      if (*(int *)(param_4 + 0x8c) == 2) {
        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {
          uVar7 = uVar7 & 0xfffffefd | 0x200;
        }
        else {
          uVar7 = uVar7 & 0xfffffffc | 0x200;
        }
      }
      else if (*(int *)(param_4 + 0x8c) == 3) {
        uVar7 = uVar7 & 0xfffffffe;
      }
      lVar5 = *(long *)(param_4 + 0x38);
      if (lVar5 == 0) {
        FUN_00117140(param_4,uVar7);
        lVar5 = *(long *)(param_4 + 0x38);
      }
      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);
      *(uint *)(lVar5 + 0x20) = uVar3;
      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {
        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;
        lVar1 = DAT_00185a50;
        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;
        (**(code **)(*(long *)(lVar1 + 8) + 0x148))
                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);
        if ((uVar7 & 0x800000) != 0) {
          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);
        }
      }
      else {
        uVar6 = uVar7 & 0xfffffff7;
        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||
           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {
          uVar3 = uVar3 & 0xfe7fffff;
          uVar6 = uVar7 & 0xfe7ffff7;
        }
        uVar7 = uVar6;
        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;
      }
      if (((uVar7 & 0x10000000) != 0) &&
         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {
        *(undefined4 *)(param_4 + 0x78) = 0x80;
      }
      lVar5 = *(long *)(param_4 + 0x38);
      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {
        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);
      }
      iVar2 = DAT_001853a0;
      *(long *)(param_2 + 0x68) = lVar5;
      if (iVar2 == 0) {
        lVar1 = *(long *)(lVar5 + 0x110);
        *(long *)(lVar5 + 0x110) = param_2;
        *(undefined8 *)(param_2 + 0x108) = 0;
        *(long *)(param_2 + 0x110) = lVar1;
        if (lVar1 == 0) {
          *(long *)(lVar5 + 0x108) = param_2;
        }
        else {
          *(long *)(lVar1 + 0x108) = param_2;
        }
      }
      puVar4 = (undefined8 *)FUN_001155a0(0x18);
      *(undefined4 *)(puVar4 + 1) = 5;
      *puVar4 = 0;
      **(undefined8 **)(param_1 + 8) = puVar4;
      *(undefined8 **)(param_1 + 8) = puVar4;
      puVar4[2] = param_2;
      return;
    }
  }
  else if (*(long *)(param_2 + 0x68) == 0) {
    *(undefined8 *)(param_2 + 0x68) = 0x184c90;
    return;
  }
  return;
}


PUSH R13
MOV R13,RCX
MOV R8,RDX
PUSH R12
MOV R12,RDI
PUSH RBP
PUSH RBX
MOV RBX,RSI
SUB RSP,0x8
MOV EBP,dword ptr [RSI + 0x20]
MOV EDI,EBP
CALL 0x00113360
MOV RSI,qword ptr [R13 + 0x30]
MOV ECX,0xa
LEA RDI,[0x13f0e5]
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST EAX,EAX
JNZ 0x00117c20
MOVSX EDX,DL
TEST EDX,EDX
JZ 0x00117c20
TEST R8,R8
JZ 0x00117c0a
MOV RAX,qword ptr [0x00185a50]
MOV RDX,RBX
MOV RSI,R8
LEA RDI,[0x185a00]
MOV RAX,qword ptr [RAX + 0x8]
CALL qword ptr [RAX + 0x2f8]
TEST EAX,EAX
JZ 0x00117c11
CMP qword ptr [RBX + 0x68],0x0
JZ 0x00117c40
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
CMP qword ptr [RBX + 0x68],0x0
JNZ 0x00117c11
LEA RAX,[0x184c90]
MOV qword ptr [RBX + 0x68],RAX
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
MOV EAX,EBP
AND EAX,0x2020000
CMP EAX,0x2020000
JZ 0x00117db0
MOVZX EAX,byte ptr [0x00185a00]
MOV EDX,EBP
AND EBP,0xfff1fdfb
AND DH,0xfd
AND EAX,0x3
CMP AL,0x2
CMOVZ EBP,EDX
MOV EAX,dword ptr [R13 + 0x8c]
CMP EAX,0x2
JZ 0x00117dd0
MOV EDX,EBP
AND EDX,0xfffffffe
CMP EAX,0x3
CMOVZ EBP,EDX
MOV RCX,qword ptr [R13 + 0x38]
TEST RCX,RCX
JZ 0x00117e58
MOV EAX,EBP
MOVZX EDX,byte ptr [RCX + 0x24]
OR EAX,0xfffffff7
AND EAX,dword ptr [RCX + 0x20]
MOV dword ptr [RCX + 0x20],EAX
TEST DL,0x4
JZ 0x00117d60
MOV EDX,EBP
MOV ESI,EAX
AND EDX,0xfffffff7
XOR ESI,EDX
AND ESI,0x1800000
JZ 0x00117df0
AND EAX,0xfe7fffff
AND EBP,0xfe7ffff7
OR EAX,EBP
MOV dword ptr [RCX + 0x20],EAX
AND EBP,0x10000000
JNZ 0x00117e30
MOV RAX,qword ptr [R13 + 0x38]
MOV EDX,dword ptr [RBX + 0x70]
CMP EDX,dword ptr [RAX + 0x70]
JBE 0x00117cec
MOV dword ptr [RAX + 0x70],EDX
MOV EDX,dword ptr [0x001853a0]
MOV qword ptr [RBX + 0x68],RAX
TEST EDX,EDX
JNZ 0x00117d2a
MOV RDX,qword ptr [RAX + 0x110]
MOV qword ptr [RAX + 0x110],RBX
MOV qword ptr [RBX + 0x108],0x0
MOV qword ptr [RBX + 0x110],RDX
TEST RDX,RDX
JZ 0x00117e70
MOV qword ptr [RDX + 0x108],RBX
MOV EDI,0x18
CALL 0x001155a0
MOV dword ptr [RAX + 0x8],0x5
MOV qword ptr [RAX],0x0
MOV RDX,qword ptr [R12 + 0x8]
MOV qword ptr [RDX],RAX
MOV qword ptr [R12 + 0x8],RAX
MOV qword ptr [RAX + 0x10],RBX
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
OR EDX,0x4
OR EAX,EBP
LEA R8,[0x185a00]
MOV RSI,RBX
MOV byte ptr [RCX + 0x24],DL
MOV RDX,qword ptr [0x00185a50]
MOV dword ptr [RCX + 0x20],EAX
MOV RDI,qword ptr [RBX + 0xf0]
MOV RAX,qword ptr [RDX + 0x8]
CALL qword ptr [RAX + 0x148]
TEST EBP,0x800000
JZ 0x00117cd1
MOV EDX,dword ptr [RBX + 0xc4]
MOV RAX,qword ptr [R13 + 0x38]
MOV dword ptr [RAX + 0xc4],EDX
JMP 0x00117cd1
MOV EAX,EBP
AND EBP,0xfff3fdfb
AND EAX,0xfff1fdfb
TEST byte ptr [0x00185a01],0x10
CMOVNZ EBP,EAX
JMP 0x00117c6c
MOV RAX,qword ptr [0x00185a50]
MOV RAX,qword ptr [RAX + 0x8]
CMP dword ptr [RAX + 0x8],0x5
JZ 0x00117e18
AND EBP,0xfffffffc
OR EBP,0x200
JMP 0x00117c87
TEST EBP,0x800000
JZ 0x00117e0a
MOV ESI,dword ptr [RBX + 0xc4]
CMP dword ptr [RCX + 0xc4],ESI
JNZ 0x00117cc1
MOV EBP,EDX
JMP 0x00117ccc
AND EBP,0xfffffefd
OR EBP,0x200
JMP 0x00117c87
MOV RDI,qword ptr [RBX + 0xf0]
CALL 0x00109760
CMP EAX,0x26
JNZ 0x00117cdd
MOV dword ptr [R13 + 0x78],0x80
JMP 0x00117cdd
MOV ESI,EBP
MOV RDI,R13
CALL 0x00117140
MOV RCX,qword ptr [R13 + 0x38]
JMP 0x00117c94
MOV qword ptr [RAX + 0x108],RBX
JMP 0x00117d2a
(translation_unit "void FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar11 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar3 = *(uint *)(param_2 + 0x20);\n  iVar2 = FUN_00113360(uVar3);\n  lVar5 = 10;\n  pbVar8 = *(byte **)(param_4 + 0x30);\n  pbVar9 = (byte *)"/DISCARD/";\n  do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);\n  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar11 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar3 = *(uint *)(param_2 + 0x20);\n  iVar2 = FUN_00113360(uVar3);\n  lVar5 = 10;\n  pbVar8 = *(byte **)(param_4 + 0x30);\n  pbVar9 = (byte *)"/DISCARD/";\n  do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);\n  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)" identifier (parameter_list "(long param_1,long param_2,long param_3,long param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar11 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar3 = *(uint *)(param_2 + 0x20);\n  iVar2 = FUN_00113360(uVar3);\n  lVar5 = 10;\n  pbVar8 = *(byte **)(param_4 + 0x30);\n  pbVar9 = (byte *)"/DISCARD/";\n  do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);\n  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "undefined1 uVar10;" type_identifier identifier ;) (declaration "undefined1 uVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;" (assignment_expression "uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008" identifier = (binary_expression "&stack0xffffffffffffffe0 < &DAT_00000008" (pointer_expression "&stack0xffffffffffffffe0" & identifier) < (pointer_expression "&DAT_00000008" & identifier))) ;) (expression_statement "uVar11 = &stack0x00000000 == (undefined1 *)0x28;" (assignment_expression "uVar11 = &stack0x00000000 == (undefined1 *)0x28" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x28" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x28" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar3 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar3 = *(uint *)(param_2 + 0x20)" identifier = (pointer_expression "*(uint *)(param_2 + 0x20)" * (cast_expression "(uint *)(param_2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = FUN_00113360(uVar3);" (assignment_expression "iVar2 = FUN_00113360(uVar3)" identifier = (call_expression "FUN_00113360(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "lVar5 = 10;" (assignment_expression "lVar5 = 10" identifier = number_literal) ;) (expression_statement "pbVar8 = *(byte **)(param_4 + 0x30);" (assignment_expression "pbVar8 = *(byte **)(param_4 + 0x30)" identifier = (pointer_expression "*(byte **)(param_4 + 0x30)" * (cast_expression "(byte **)(param_4 + 0x30)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0x30)" ( (binary_expression "param_4 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = (byte *)"/DISCARD/";" (assignment_expression "pbVar9 = (byte *)"/DISCARD/"" identifier = (cast_expression "(byte *)"/DISCARD/"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""/DISCARD/"" " string_content "))) ;) (do_statement "do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);" do (compound_statement "{\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar10 = *pbVar8 < *pbVar9;" (assignment_expression "uVar10 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "uVar11 = *pbVar8 == *pbVar9;" (assignment_expression "uVar11 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar11)" ( (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" if (parenthesized_expression "((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10))" ( (binary_expression "(iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" ( (binary_expression "(!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10" (parenthesized_expression "(!(bool)uVar10 && !(bool)uVar11)" ( (binary_expression "!(bool)uVar10 && !(bool)uVar11" (unary_expression "!(bool)uVar10" ! (cast_expression "(bool)uVar10" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar11" ! (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier))) )) != (cast_expression "(bool)uVar10" ( (type_descriptor "bool" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }" { (if_statement "if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }" if (parenthesized_expression "(((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0))" ( (binary_expression "((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)" (parenthesized_expression "((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0))" ( (binary_expression "(param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)" ( (comma_expression "iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0" (assignment_expression "iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2)" identifier = (call_expression "(**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2)" (parenthesized_expression "(**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))" ( (pointer_expression "**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" * (pointer_expression "*(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" * (cast_expression "(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(DAT_00185a50 + 8) + 0x2f8)" ( (binary_expression "*(long *)(DAT_00185a50 + 8) + 0x2f8" (pointer_expression "*(long *)(DAT_00185a50 + 8)" * (cast_expression "(long *)(DAT_00185a50 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00185a50 + 8)" ( (binary_expression "DAT_00185a50 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(&DAT_00185a00,param_3,param_2)" ( (pointer_expression "&DAT_00185a00" & identifier) , identifier , identifier )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(long *)(param_2 + 0x68) == 0)" ( (binary_expression "*(long *)(param_2 + 0x68) == 0" (pointer_expression "*(long *)(param_2 + 0x68)" * (cast_expression "(long *)(param_2 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }" { (if_statement "if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" if (parenthesized_expression "((uVar3 & 0x2020000) == 0x2020000)" ( (binary_expression "(uVar3 & 0x2020000) == 0x2020000" (parenthesized_expression "(uVar3 & 0x2020000)" ( (binary_expression "uVar3 & 0x2020000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }" { (expression_statement "uVar7 = uVar3 & 0xfff3fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff3fdfb" identifier = (binary_expression "uVar3 & 0xfff3fdfb" identifier & number_literal)) ;) (if_statement "if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }" if (parenthesized_expression "((DAT_00185a01 & 0x10) != 0)" ( (binary_expression "(DAT_00185a01 & 0x10) != 0" (parenthesized_expression "(DAT_00185a01 & 0x10)" ( (binary_expression "DAT_00185a01 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }" { (expression_statement "uVar7 = uVar3 & 0xfff1fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff1fdfb" identifier = (binary_expression "uVar3 & 0xfff1fdfb" identifier & number_literal)) ;) })) }) (else_clause "else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" else (compound_statement "{\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" { (expression_statement "uVar7 = uVar3 & 0xfff1fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff1fdfb" identifier = (binary_expression "uVar3 & 0xfff1fdfb" identifier & number_literal)) ;) (if_statement "if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }" if (parenthesized_expression "((DAT_00185a00 & 3) == 2)" ( (binary_expression "(DAT_00185a00 & 3) == 2" (parenthesized_expression "(DAT_00185a00 & 3)" ( (binary_expression "DAT_00185a00 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar7 = uVar3 & 0xfffffdff;\n        }" { (expression_statement "uVar7 = uVar3 & 0xfffffdff;" (assignment_expression "uVar7 = uVar3 & 0xfffffdff" identifier = (binary_expression "uVar3 & 0xfffffdff" identifier & number_literal)) ;) })) }))) (if_statement "if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" if (parenthesized_expression "(*(int *)(param_4 + 0x8c) == 2)" ( (binary_expression "*(int *)(param_4 + 0x8c) == 2" (pointer_expression "*(int *)(param_4 + 0x8c)" * (cast_expression "(int *)(param_4 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x8c)" ( (binary_expression "param_4 + 0x8c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }" { (if_statement "if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5)" ( (binary_expression "*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(DAT_00185a50 + 8) + 8)" * (cast_expression "(int *)(*(long *)(DAT_00185a50 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(DAT_00185a50 + 8) + 8)" ( (binary_expression "*(long *)(DAT_00185a50 + 8) + 8" (pointer_expression "*(long *)(DAT_00185a50 + 8)" * (cast_expression "(long *)(DAT_00185a50 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00185a50 + 8)" ( (binary_expression "DAT_00185a50 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }" { (expression_statement "uVar7 = uVar7 & 0xfffffefd | 0x200;" (assignment_expression "uVar7 = uVar7 & 0xfffffefd | 0x200" identifier = (binary_expression "uVar7 & 0xfffffefd | 0x200" (binary_expression "uVar7 & 0xfffffefd" identifier & number_literal) | number_literal)) ;) }) (else_clause "else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" else (compound_statement "{\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" { (expression_statement "uVar7 = uVar7 & 0xfffffffc | 0x200;" (assignment_expression "uVar7 = uVar7 & 0xfffffffc | 0x200" identifier = (binary_expression "uVar7 & 0xfffffffc | 0x200" (binary_expression "uVar7 & 0xfffffffc" identifier & number_literal) | number_literal)) ;) }))) }) (else_clause "else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" else (if_statement "if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" if (parenthesized_expression "(*(int *)(param_4 + 0x8c) == 3)" ( (binary_expression "*(int *)(param_4 + 0x8c) == 3" (pointer_expression "*(int *)(param_4 + 0x8c)" * (cast_expression "(int *)(param_4 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x8c)" ( (binary_expression "param_4 + 0x8c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar7 = uVar7 & 0xfffffffe;\n      }" { (expression_statement "uVar7 = uVar7 & 0xfffffffe;" (assignment_expression "uVar7 = uVar7 & 0xfffffffe" identifier = (binary_expression "uVar7 & 0xfffffffe" identifier & number_literal)) ;) })))) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" identifier = (pointer_expression "*(long *)(param_4 + 0x38)" * (cast_expression "(long *)(param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x38)" ( (binary_expression "param_4 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }" { (expression_statement "FUN_00117140(param_4,uVar7);" (call_expression "FUN_00117140(param_4,uVar7)" identifier (argument_list "(param_4,uVar7)" ( identifier , identifier ))) ;) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" identifier = (pointer_expression "*(long *)(param_4 + 0x38)" * (cast_expression "(long *)(param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x38)" ( (binary_expression "param_4 + 0x38" identifier + number_literal) ))))) ;) })) (expression_statement "uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);" (assignment_expression "uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20)" identifier = (binary_expression "(uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20)" (parenthesized_expression "(uVar7 | 0xfffffff7)" ( (binary_expression "uVar7 | 0xfffffff7" identifier | number_literal) )) & (pointer_expression "*(uint *)(lVar5 + 0x20)" * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3" (pointer_expression "*(uint *)(lVar5 + 0x20)" * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" if (parenthesized_expression "((*(byte *)(lVar5 + 0x24) & 4) == 0)" ( (binary_expression "(*(byte *)(lVar5 + 0x24) & 4) == 0" (parenthesized_expression "(*(byte *)(lVar5 + 0x24) & 4)" ( (binary_expression "*(byte *)(lVar5 + 0x24) & 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" * (cast_expression "(byte *)(lVar5 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x24)" ( (binary_expression "lVar5 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }" { (expression_statement "*(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;" (assignment_expression "*(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" * (cast_expression "(byte *)(lVar5 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x24)" ( (binary_expression "lVar5 + 0x24" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar5 + 0x24) | 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" * (cast_expression "(byte *)(lVar5 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x24)" ( (binary_expression "lVar5 + 0x24" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "lVar1 = DAT_00185a50;" (assignment_expression "lVar1 = DAT_00185a50" identifier = identifier) ;) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7" (pointer_expression "*(uint *)(lVar5 + 0x20)" * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) = (binary_expression "uVar3 | uVar7" identifier | identifier)) ;) (expression_statement "(**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);" (call_expression "(**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00)" (parenthesized_expression "(**(code **)(*(long *)(lVar1 + 8) + 0x148))" ( (pointer_expression "**(code **)(*(long *)(lVar1 + 8) + 0x148)" * (pointer_expression "*(code **)(*(long *)(lVar1 + 8) + 0x148)" * (cast_expression "(code **)(*(long *)(lVar1 + 8) + 0x148)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar1 + 8) + 0x148)" ( (binary_expression "*(long *)(lVar1 + 8) + 0x148" (pointer_expression "*(long *)(lVar1 + 8)" * (cast_expression "(long *)(lVar1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00)" ( (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" * (cast_expression "(undefined8 *)(param_2 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf0)" ( (binary_expression "param_2 + 0xf0" identifier + number_literal) )))) , identifier , identifier , identifier , (pointer_expression "&DAT_00185a00" & identifier) ))) ;) (if_statement "if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }" if (parenthesized_expression "((uVar7 & 0x800000) != 0)" ( (binary_expression "(uVar7 & 0x800000) != 0" (parenthesized_expression "(uVar7 & 0x800000)" ( (binary_expression "uVar7 & 0x800000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }" { (expression_statement "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);" (assignment_expression "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4)" (pointer_expression "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4)" * (cast_expression "(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_4 + 0x38) + 0xc4)" ( (binary_expression "*(long *)(param_4 + 0x38) + 0xc4" (pointer_expression "*(long *)(param_4 + 0x38)" * (cast_expression "(long *)(param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x38)" ( (binary_expression "param_4 + 0x38" identifier + number_literal) )))) + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0xc4)" * (cast_expression "(undefined4 *)(param_2 + 0xc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc4)" ( (binary_expression "param_2 + 0xc4" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" else (compound_statement "{\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" { (expression_statement "uVar6 = uVar7 & 0xfffffff7;" (assignment_expression "uVar6 = uVar7 & 0xfffffff7" identifier = (binary_expression "uVar7 & 0xfffffff7" identifier & number_literal)) ;) (if_statement "if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }" if (parenthesized_expression "((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)))))" ( (binary_expression "(((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))" (parenthesized_expression "(((uVar3 ^ uVar6) & 0x1800000) != 0)" ( (binary_expression "((uVar3 ^ uVar6) & 0x1800000) != 0" (parenthesized_expression "((uVar3 ^ uVar6) & 0x1800000)" ( (binary_expression "(uVar3 ^ uVar6) & 0x1800000" (parenthesized_expression "(uVar3 ^ uVar6)" ( (binary_expression "uVar3 ^ uVar6" identifier ^ identifier) )) & number_literal) )) != number_literal) )) || (parenthesized_expression "(((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))" ( (parenthesized_expression "((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)))" ( (binary_expression "(uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))" (binary_expression "(uVar7 & 0x800000) != 0" (parenthesized_expression "(uVar7 & 0x800000)" ( (binary_expression "uVar7 & 0x800000" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))" ( (binary_expression "*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)" (pointer_expression "*(int *)(lVar5 + 0xc4)" * (cast_expression "(int *)(lVar5 + 0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xc4)" ( (binary_expression "lVar5 + 0xc4" identifier + number_literal) )))) != (pointer_expression "*(int *)(param_2 + 0xc4)" * (cast_expression "(int *)(param_2 + 0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc4)" ( (binary_expression "param_2 + 0xc4" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }" { (expression_statement "uVar3 = uVar3 & 0xfe7fffff;" (assignment_expression "uVar3 = uVar3 & 0xfe7fffff" identifier = (binary_expression "uVar3 & 0xfe7fffff" identifier & number_literal)) ;) (expression_statement "uVar6 = uVar7 & 0xfe7ffff7;" (assignment_expression "uVar6 = uVar7 & 0xfe7ffff7" identifier = (binary_expression "uVar7 & 0xfe7ffff7" identifier & number_literal)) ;) })) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7" (pointer_expression "*(uint *)(lVar5 + 0x20)" * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) = (binary_expression "uVar3 | uVar7" identifier | identifier)) ;) }))) (if_statement "if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }" if (parenthesized_expression "(((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26))" ( (binary_expression "((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)" (parenthesized_expression "((uVar7 & 0x10000000) != 0)" ( (binary_expression "(uVar7 & 0x10000000) != 0" (parenthesized_expression "(uVar7 & 0x10000000)" ( (binary_expression "uVar7 & 0x10000000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)" ( (comma_expression "iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26" (assignment_expression "iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0))" identifier = (call_expression "bfd_get_arch(*(undefined8 *)(param_2 + 0xf0))" identifier (argument_list "(*(undefined8 *)(param_2 + 0xf0))" ( (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" * (cast_expression "(undefined8 *)(param_2 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf0)" ( (binary_expression "param_2 + 0xf0" identifier + number_literal) )))) )))) , (binary_expression "iVar2 == 0x26" identifier == number_literal)) ))) )) (compound_statement "{\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }" { (expression_statement "*(undefined4 *)(param_4 + 0x78) = 0x80;" (assignment_expression "*(undefined4 *)(param_4 + 0x78) = 0x80" (pointer_expression "*(undefined4 *)(param_4 + 0x78)" * (cast_expression "(undefined4 *)(param_4 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x78)" ( (binary_expression "param_4 + 0x78" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" identifier = (pointer_expression "*(long *)(param_4 + 0x38)" * (cast_expression "(long *)(param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x38)" ( (binary_expression "param_4 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }" if (parenthesized_expression "(*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70))" ( (binary_expression "*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)" (pointer_expression "*(uint *)(lVar5 + 0x70)" * (cast_expression "(uint *)(lVar5 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 0x70)" * (cast_expression "(uint *)(param_2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) ))))) )) (compound_statement "{\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }" { (expression_statement "*(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);" (assignment_expression "*(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70)" (pointer_expression "*(uint *)(lVar5 + 0x70)" * (cast_expression "(uint *)(lVar5 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) )))) = (pointer_expression "*(uint *)(param_2 + 0x70)" * (cast_expression "(uint *)(param_2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) ))))) ;) })) (expression_statement "iVar2 = DAT_001853a0;" (assignment_expression "iVar2 = DAT_001853a0" identifier = identifier) ;) (expression_statement "*(long *)(param_2 + 0x68) = lVar5;" (assignment_expression "*(long *)(param_2 + 0x68) = lVar5" (pointer_expression "*(long *)(param_2 + 0x68)" * (cast_expression "(long *)(param_2 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }" { (expression_statement "lVar1 = *(long *)(lVar5 + 0x110);" (assignment_expression "lVar1 = *(long *)(lVar5 + 0x110)" identifier = (pointer_expression "*(long *)(lVar5 + 0x110)" * (cast_expression "(long *)(lVar5 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x110)" ( (binary_expression "lVar5 + 0x110" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(lVar5 + 0x110) = param_2;" (assignment_expression "*(long *)(lVar5 + 0x110) = param_2" (pointer_expression "*(long *)(lVar5 + 0x110)" * (cast_expression "(long *)(lVar5 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x110)" ( (binary_expression "lVar5 + 0x110" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_2 + 0x108) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x108) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x108)" * (cast_expression "(undefined8 *)(param_2 + 0x108)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x108)" ( (binary_expression "param_2 + 0x108" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x110) = lVar1;" (assignment_expression "*(long *)(param_2 + 0x110) = lVar1" (pointer_expression "*(long *)(param_2 + 0x110)" * (cast_expression "(long *)(param_2 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x110)" ( (binary_expression "param_2 + 0x110" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          *(long *)(lVar5 + 0x108) = param_2;\n        }" { (expression_statement "*(long *)(lVar5 + 0x108) = param_2;" (assignment_expression "*(long *)(lVar5 + 0x108) = param_2" (pointer_expression "*(long *)(lVar5 + 0x108)" * (cast_expression "(long *)(lVar5 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x108)" ( (binary_expression "lVar5 + 0x108" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" else (compound_statement "{\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" { (expression_statement "*(long *)(lVar1 + 0x108) = param_2;" (assignment_expression "*(long *)(lVar1 + 0x108) = param_2" (pointer_expression "*(long *)(lVar1 + 0x108)" * (cast_expression "(long *)(lVar1 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x108)" ( (binary_expression "lVar1 + 0x108" identifier + number_literal) )))) = identifier) ;) }))) })) (expression_statement "puVar4 = (undefined8 *)FUN_001155a0(0x18);" (assignment_expression "puVar4 = (undefined8 *)FUN_001155a0(0x18)" identifier = (cast_expression "(undefined8 *)FUN_001155a0(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001155a0(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + 1) = 5;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 5" (pointer_expression "*(undefined4 *)(puVar4 + 1)" * (cast_expression "(undefined4 *)(puVar4 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "**(undefined8 **)(param_1 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(param_1 + 8) = puVar4" (pointer_expression "**(undefined8 **)(param_1 + 8)" * (pointer_expression "*(undefined8 **)(param_1 + 8)" * (cast_expression "(undefined8 **)(param_1 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined8 **)(param_1 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(param_1 + 8) = puVar4" (pointer_expression "*(undefined8 **)(param_1 + 8)" * (cast_expression "(undefined8 **)(param_1 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4[2] = param_2;" (assignment_expression "puVar4[2] = param_2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" else (if_statement "if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" if (parenthesized_expression "(*(long *)(param_2 + 0x68) == 0)" ( (binary_expression "*(long *)(param_2 + 0x68) == 0" (pointer_expression "*(long *)(param_2 + 0x68)" * (cast_expression "(long *)(param_2 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" { (expression_statement "*(undefined8 *)(param_2 + 0x68) = 0x184c90;" (assignment_expression "*(undefined8 *)(param_2 + 0x68) = 0x184c90" (pointer_expression "*(undefined8 *)(param_2 + 0x68)" * (cast_expression "(undefined8 *)(param_2 + 0x68)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })))) (return_statement "return;" return ;) })))
(translation_unit "void lang_add_section(lang_statement_list_type *ptr,asection *section,flag_info *sflag_info,\n                     lang_output_section_statement_type *output)\n\n{\n  bfd_section *pbVar1;\n  bfd *pbVar2;\n  bfd_boolean bVar3;\n  uint uVar4;\n  int iVar5;\n  lang_statement_union *plVar6;\n  long lVar7;\n  asection *paVar8;\n  uint uVar9;\n  uint flags;\n  byte *pbVar10;\n  byte *pbVar11;\n  undefined1 uVar12;\n  undefined1 uVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  uVar12 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar13 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar4 = section->flags;\n  bVar3 = lang_discard_section_p((asection *)(ulong)uVar4);\n  lVar7 = 10;\n  pbVar10 = (byte *)output->name;\n  pbVar11 = (byte *)"/DISCARD/";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar12 = *pbVar10 < *pbVar11;\n    uVar13 = *pbVar10 == *pbVar11;\n    pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n  } while ((bool)uVar13);\n  if ((bVar3 == 0) && ((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12)) {\n    if (((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)) &&\n       (section->output_section == (bfd_section *)0x0)) {\n      if ((uVar4 & 0x2020000) == 0x2020000) {\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }\n      else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }\n      if (output->sectype == noload_section) {\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }\n      else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8 == (asection *)0x0) {\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }\n      uVar4 = (flags | 0xfffffff7) & paVar8->flags;\n      paVar8->flags = uVar4;\n      if ((paVar8->field_0x24 & 4) == 0) {\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }\n      else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }\n      if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {\n        output->block_value = 0x80;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8->alignment_power < section->alignment_power) {\n        paVar8->alignment_power = section->alignment_power;\n      }\n      bVar3 = map_head_is_link_order;\n      section->output_section = paVar8;\n      if (bVar3 == 0) {\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }\n      plVar6 = (lang_statement_union *)stat_alloc(0x18);\n      (plVar6->header).type = lang_input_section_enum;\n      (plVar6->header).next = (lang_statement_union *)0x0;\n      *ptr->tail = plVar6;\n      ptr->tail = (lang_statement_union **)plVar6;\n      (plVar6->input_section).section = section;\n      return;\n    }\n  }\n  else if (section->output_section == (bfd_section *)0x0) {\n    section->output_section = (bfd_section *)(_bfd_std_section + 0x230);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void lang_add_section(lang_statement_list_type *ptr,asection *section,flag_info *sflag_info,\n                     lang_output_section_statement_type *output)\n\n{\n  bfd_section *pbVar1;\n  bfd *pbVar2;\n  bfd_boolean bVar3;\n  uint uVar4;\n  int iVar5;\n  lang_statement_union *plVar6;\n  long lVar7;\n  asection *paVar8;\n  uint uVar9;\n  uint flags;\n  byte *pbVar10;\n  byte *pbVar11;\n  undefined1 uVar12;\n  undefined1 uVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  uVar12 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar13 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar4 = section->flags;\n  bVar3 = lang_discard_section_p((asection *)(ulong)uVar4);\n  lVar7 = 10;\n  pbVar10 = (byte *)output->name;\n  pbVar11 = (byte *)"/DISCARD/";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar12 = *pbVar10 < *pbVar11;\n    uVar13 = *pbVar10 == *pbVar11;\n    pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n  } while ((bool)uVar13);\n  if ((bVar3 == 0) && ((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12)) {\n    if (((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)) &&\n       (section->output_section == (bfd_section *)0x0)) {\n      if ((uVar4 & 0x2020000) == 0x2020000) {\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }\n      else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }\n      if (output->sectype == noload_section) {\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }\n      else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8 == (asection *)0x0) {\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }\n      uVar4 = (flags | 0xfffffff7) & paVar8->flags;\n      paVar8->flags = uVar4;\n      if ((paVar8->field_0x24 & 4) == 0) {\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }\n      else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }\n      if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {\n        output->block_value = 0x80;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8->alignment_power < section->alignment_power) {\n        paVar8->alignment_power = section->alignment_power;\n      }\n      bVar3 = map_head_is_link_order;\n      section->output_section = paVar8;\n      if (bVar3 == 0) {\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }\n      plVar6 = (lang_statement_union *)stat_alloc(0x18);\n      (plVar6->header).type = lang_input_section_enum;\n      (plVar6->header).next = (lang_statement_union *)0x0;\n      *ptr->tail = plVar6;\n      ptr->tail = (lang_statement_union **)plVar6;\n      (plVar6->input_section).section = section;\n      return;\n    }\n  }\n  else if (section->output_section == (bfd_section *)0x0) {\n    section->output_section = (bfd_section *)(_bfd_std_section + 0x230);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "lang_add_section(lang_statement_list_type *ptr,asection *section,flag_info *sflag_info,\n                     lang_output_section_statement_type *output)" identifier (parameter_list "(lang_statement_list_type *ptr,asection *section,flag_info *sflag_info,\n                     lang_output_section_statement_type *output)" ( (parameter_declaration "lang_statement_list_type *ptr" type_identifier (pointer_declarator "*ptr" * identifier)) , (parameter_declaration "asection *section" type_identifier (pointer_declarator "*section" * identifier)) , (parameter_declaration "flag_info *sflag_info" type_identifier (pointer_declarator "*sflag_info" * identifier)) , (parameter_declaration "lang_output_section_statement_type *output" type_identifier (pointer_declarator "*output" * identifier)) ))) (compound_statement "{\n  bfd_section *pbVar1;\n  bfd *pbVar2;\n  bfd_boolean bVar3;\n  uint uVar4;\n  int iVar5;\n  lang_statement_union *plVar6;\n  long lVar7;\n  asection *paVar8;\n  uint uVar9;\n  uint flags;\n  byte *pbVar10;\n  byte *pbVar11;\n  undefined1 uVar12;\n  undefined1 uVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  uVar12 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar13 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar4 = section->flags;\n  bVar3 = lang_discard_section_p((asection *)(ulong)uVar4);\n  lVar7 = 10;\n  pbVar10 = (byte *)output->name;\n  pbVar11 = (byte *)"/DISCARD/";\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar12 = *pbVar10 < *pbVar11;\n    uVar13 = *pbVar10 == *pbVar11;\n    pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n  } while ((bool)uVar13);\n  if ((bVar3 == 0) && ((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12)) {\n    if (((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)) &&\n       (section->output_section == (bfd_section *)0x0)) {\n      if ((uVar4 & 0x2020000) == 0x2020000) {\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }\n      else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }\n      if (output->sectype == noload_section) {\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }\n      else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8 == (asection *)0x0) {\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }\n      uVar4 = (flags | 0xfffffff7) & paVar8->flags;\n      paVar8->flags = uVar4;\n      if ((paVar8->field_0x24 & 4) == 0) {\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }\n      else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }\n      if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {\n        output->block_value = 0x80;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8->alignment_power < section->alignment_power) {\n        paVar8->alignment_power = section->alignment_power;\n      }\n      bVar3 = map_head_is_link_order;\n      section->output_section = paVar8;\n      if (bVar3 == 0) {\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }\n      plVar6 = (lang_statement_union *)stat_alloc(0x18);\n      (plVar6->header).type = lang_input_section_enum;\n      (plVar6->header).next = (lang_statement_union *)0x0;\n      *ptr->tail = plVar6;\n      ptr->tail = (lang_statement_union **)plVar6;\n      (plVar6->input_section).section = section;\n      return;\n    }\n  }\n  else if (section->output_section == (bfd_section *)0x0) {\n    section->output_section = (bfd_section *)(_bfd_std_section + 0x230);\n    return;\n  }\n  return;\n}" { (declaration "bfd_section *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "bfd *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "bfd_boolean bVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "lang_statement_union *plVar6;" type_identifier (pointer_declarator "*plVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "asection *paVar8;" type_identifier (pointer_declarator "*paVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint flags;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined1 uVar12;" type_identifier identifier ;) (declaration "undefined1 uVar13;" type_identifier identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = &stack0xffffffffffffffe0 < &DAT_00000008;" (assignment_expression "uVar12 = &stack0xffffffffffffffe0 < &DAT_00000008" identifier = (binary_expression "&stack0xffffffffffffffe0 < &DAT_00000008" (pointer_expression "&stack0xffffffffffffffe0" & identifier) < (pointer_expression "&DAT_00000008" & identifier))) ;) (expression_statement "uVar13 = &stack0x00000000 == (undefined1 *)0x28;" (assignment_expression "uVar13 = &stack0x00000000 == (undefined1 *)0x28" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x28" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x28" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar4 = section->flags;" (assignment_expression "uVar4 = section->flags" identifier = (field_expression "section->flags" identifier -> field_identifier)) ;) (expression_statement "bVar3 = lang_discard_section_p((asection *)(ulong)uVar4);" (assignment_expression "bVar3 = lang_discard_section_p((asection *)(ulong)uVar4)" identifier = (call_expression "lang_discard_section_p((asection *)(ulong)uVar4)" identifier (argument_list "((asection *)(ulong)uVar4)" ( (cast_expression "(asection *)(ulong)uVar4" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ;) (expression_statement "lVar7 = 10;" (assignment_expression "lVar7 = 10" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)output->name;" (assignment_expression "pbVar10 = (byte *)output->name" identifier = (cast_expression "(byte *)output->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "output->name" identifier -> field_identifier))) ;) (expression_statement "pbVar11 = (byte *)"/DISCARD/";" (assignment_expression "pbVar11 = (byte *)"/DISCARD/"" identifier = (cast_expression "(byte *)"/DISCARD/"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""/DISCARD/"" " string_content "))) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar12 = *pbVar10 < *pbVar11;\n    uVar13 = *pbVar10 == *pbVar11;\n    pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n  } while ((bool)uVar13);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar12 = *pbVar10 < *pbVar11;\n    uVar13 = *pbVar10 == *pbVar11;\n    pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar12 = *pbVar10 < *pbVar11;" (assignment_expression "uVar12 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "uVar13 = *pbVar10 == *pbVar11;" (assignment_expression "uVar13 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar13)" ( (cast_expression "(bool)uVar13" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((bVar3 == 0) && ((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12)) {\n    if (((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)) &&\n       (section->output_section == (bfd_section *)0x0)) {\n      if ((uVar4 & 0x2020000) == 0x2020000) {\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }\n      else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }\n      if (output->sectype == noload_section) {\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }\n      else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8 == (asection *)0x0) {\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }\n      uVar4 = (flags | 0xfffffff7) & paVar8->flags;\n      paVar8->flags = uVar4;\n      if ((paVar8->field_0x24 & 4) == 0) {\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }\n      else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }\n      if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {\n        output->block_value = 0x80;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8->alignment_power < section->alignment_power) {\n        paVar8->alignment_power = section->alignment_power;\n      }\n      bVar3 = map_head_is_link_order;\n      section->output_section = paVar8;\n      if (bVar3 == 0) {\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }\n      plVar6 = (lang_statement_union *)stat_alloc(0x18);\n      (plVar6->header).type = lang_input_section_enum;\n      (plVar6->header).next = (lang_statement_union *)0x0;\n      *ptr->tail = plVar6;\n      ptr->tail = (lang_statement_union **)plVar6;\n      (plVar6->input_section).section = section;\n      return;\n    }\n  }\n  else if (section->output_section == (bfd_section *)0x0) {\n    section->output_section = (bfd_section *)(_bfd_std_section + 0x230);\n    return;\n  }" if (parenthesized_expression "((bVar3 == 0) && ((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12))" ( (binary_expression "(bVar3 == 0) && ((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12)" (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) && (parenthesized_expression "((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12)" ( (binary_expression "(!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12" (parenthesized_expression "(!(bool)uVar12 && !(bool)uVar13)" ( (binary_expression "!(bool)uVar12 && !(bool)uVar13" (unary_expression "!(bool)uVar12" ! (cast_expression "(bool)uVar12" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar13" ! (cast_expression "(bool)uVar13" ( (type_descriptor "bool" primitive_type) ) identifier))) )) != (cast_expression "(bool)uVar12" ( (type_descriptor "bool" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    if (((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)) &&\n       (section->output_section == (bfd_section *)0x0)) {\n      if ((uVar4 & 0x2020000) == 0x2020000) {\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }\n      else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }\n      if (output->sectype == noload_section) {\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }\n      else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8 == (asection *)0x0) {\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }\n      uVar4 = (flags | 0xfffffff7) & paVar8->flags;\n      paVar8->flags = uVar4;\n      if ((paVar8->field_0x24 & 4) == 0) {\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }\n      else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }\n      if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {\n        output->block_value = 0x80;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8->alignment_power < section->alignment_power) {\n        paVar8->alignment_power = section->alignment_power;\n      }\n      bVar3 = map_head_is_link_order;\n      section->output_section = paVar8;\n      if (bVar3 == 0) {\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }\n      plVar6 = (lang_statement_union *)stat_alloc(0x18);\n      (plVar6->header).type = lang_input_section_enum;\n      (plVar6->header).next = (lang_statement_union *)0x0;\n      *ptr->tail = plVar6;\n      ptr->tail = (lang_statement_union **)plVar6;\n      (plVar6->input_section).section = section;\n      return;\n    }\n  }" { (if_statement "if (((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)) &&\n       (section->output_section == (bfd_section *)0x0)) {\n      if ((uVar4 & 0x2020000) == 0x2020000) {\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }\n      else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }\n      if (output->sectype == noload_section) {\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }\n      else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8 == (asection *)0x0) {\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }\n      uVar4 = (flags | 0xfffffff7) & paVar8->flags;\n      paVar8->flags = uVar4;\n      if ((paVar8->field_0x24 & 4) == 0) {\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }\n      else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }\n      if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {\n        output->block_value = 0x80;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8->alignment_power < section->alignment_power) {\n        paVar8->alignment_power = section->alignment_power;\n      }\n      bVar3 = map_head_is_link_order;\n      section->output_section = paVar8;\n      if (bVar3 == 0) {\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }\n      plVar6 = (lang_statement_union *)stat_alloc(0x18);\n      (plVar6->header).type = lang_input_section_enum;\n      (plVar6->header).next = (lang_statement_union *)0x0;\n      *ptr->tail = plVar6;\n      ptr->tail = (lang_statement_union **)plVar6;\n      (plVar6->input_section).section = section;\n      return;\n    }" if (parenthesized_expression "(((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)) &&\n       (section->output_section == (bfd_section *)0x0))" ( (binary_expression "((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)) &&\n       (section->output_section == (bfd_section *)0x0)" (parenthesized_expression "((sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0))" ( (binary_expression "(sflag_info == (flag_info *)0x0) ||\n        (bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)" (parenthesized_expression "(sflag_info == (flag_info *)0x0)" ( (binary_expression "sflag_info == (flag_info *)0x0" identifier == (cast_expression "(flag_info *)0x0" ( (type_descriptor "flag_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0)" ( (comma_expression "bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section), bVar3 != 0" (assignment_expression "bVar3 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section)" identifier = (call_expression "(*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)\n                           (&link_info,sflag_info,section)" (parenthesized_expression "(*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)" ( (pointer_expression "*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags" * (field_expression "(link_info.output_bfd)->xvec->_bfd_lookup_section_flags" (field_expression "(link_info.output_bfd)->xvec" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier) -> field_identifier)) )) (argument_list "(&link_info,sflag_info,section)" ( (pointer_expression "&link_info" & identifier) , identifier , identifier )))) , (binary_expression "bVar3 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(section->output_section == (bfd_section *)0x0)" ( (binary_expression "section->output_section == (bfd_section *)0x0" (field_expression "section->output_section" identifier -> field_identifier) == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      if ((uVar4 & 0x2020000) == 0x2020000) {\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }\n      else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }\n      if (output->sectype == noload_section) {\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }\n      else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8 == (asection *)0x0) {\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }\n      uVar4 = (flags | 0xfffffff7) & paVar8->flags;\n      paVar8->flags = uVar4;\n      if ((paVar8->field_0x24 & 4) == 0) {\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }\n      else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }\n      if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {\n        output->block_value = 0x80;\n      }\n      paVar8 = output->bfd_section;\n      if (paVar8->alignment_power < section->alignment_power) {\n        paVar8->alignment_power = section->alignment_power;\n      }\n      bVar3 = map_head_is_link_order;\n      section->output_section = paVar8;\n      if (bVar3 == 0) {\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }\n      plVar6 = (lang_statement_union *)stat_alloc(0x18);\n      (plVar6->header).type = lang_input_section_enum;\n      (plVar6->header).next = (lang_statement_union *)0x0;\n      *ptr->tail = plVar6;\n      ptr->tail = (lang_statement_union **)plVar6;\n      (plVar6->input_section).section = section;\n      return;\n    }" { (if_statement "if ((uVar4 & 0x2020000) == 0x2020000) {\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }\n      else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }" if (parenthesized_expression "((uVar4 & 0x2020000) == 0x2020000)" ( (binary_expression "(uVar4 & 0x2020000) == 0x2020000" (parenthesized_expression "(uVar4 & 0x2020000)" ( (binary_expression "uVar4 & 0x2020000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        flags = uVar4 & 0xfff3fdfb;\n        if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }\n      }" { (expression_statement "flags = uVar4 & 0xfff3fdfb;" (assignment_expression "flags = uVar4 & 0xfff3fdfb" identifier = (binary_expression "uVar4 & 0xfff3fdfb" identifier & number_literal)) ;) (if_statement "if ((link_info._1_1_ & 0x10) != 0) {\n          flags = uVar4 & 0xfff1fdfb;\n        }" if (parenthesized_expression "((link_info._1_1_ & 0x10) != 0)" ( (binary_expression "(link_info._1_1_ & 0x10) != 0" (parenthesized_expression "(link_info._1_1_ & 0x10)" ( (binary_expression "link_info._1_1_ & 0x10" (field_expression "link_info._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          flags = uVar4 & 0xfff1fdfb;\n        }" { (expression_statement "flags = uVar4 & 0xfff1fdfb;" (assignment_expression "flags = uVar4 & 0xfff1fdfb" identifier = (binary_expression "uVar4 & 0xfff1fdfb" identifier & number_literal)) ;) })) }) (else_clause "else {\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }" else (compound_statement "{\n        flags = uVar4 & 0xfff1fdfb;\n        if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }\n      }" { (expression_statement "flags = uVar4 & 0xfff1fdfb;" (assignment_expression "flags = uVar4 & 0xfff1fdfb" identifier = (binary_expression "uVar4 & 0xfff1fdfb" identifier & number_literal)) ;) (if_statement "if ((link_info._0_1_ & 3) == 2) {\n          flags = uVar4 & 0xfffffdff;\n        }" if (parenthesized_expression "((link_info._0_1_ & 3) == 2)" ( (binary_expression "(link_info._0_1_ & 3) == 2" (parenthesized_expression "(link_info._0_1_ & 3)" ( (binary_expression "link_info._0_1_ & 3" (field_expression "link_info._0_1_" identifier . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          flags = uVar4 & 0xfffffdff;\n        }" { (expression_statement "flags = uVar4 & 0xfffffdff;" (assignment_expression "flags = uVar4 & 0xfffffdff" identifier = (binary_expression "uVar4 & 0xfffffdff" identifier & number_literal)) ;) })) }))) (if_statement "if (output->sectype == noload_section) {\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }\n      else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }" if (parenthesized_expression "(output->sectype == noload_section)" ( (binary_expression "output->sectype == noload_section" (field_expression "output->sectype" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }\n      }" { (if_statement "if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = flags & 0xfffffefd | 0x200;\n        }\n        else {\n          flags = flags & 0xfffffffc | 0x200;\n        }" if (parenthesized_expression "((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour)" ( (binary_expression "(link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour" (field_expression "(link_info.output_bfd)->xvec->flavour" (field_expression "(link_info.output_bfd)->xvec" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier) -> field_identifier) == identifier) )) (compound_statement "{\n          flags = flags & 0xfffffefd | 0x200;\n        }" { (expression_statement "flags = flags & 0xfffffefd | 0x200;" (assignment_expression "flags = flags & 0xfffffefd | 0x200" identifier = (binary_expression "flags & 0xfffffefd | 0x200" (binary_expression "flags & 0xfffffefd" identifier & number_literal) | number_literal)) ;) }) (else_clause "else {\n          flags = flags & 0xfffffffc | 0x200;\n        }" else (compound_statement "{\n          flags = flags & 0xfffffffc | 0x200;\n        }" { (expression_statement "flags = flags & 0xfffffffc | 0x200;" (assignment_expression "flags = flags & 0xfffffffc | 0x200" identifier = (binary_expression "flags & 0xfffffffc | 0x200" (binary_expression "flags & 0xfffffffc" identifier & number_literal) | number_literal)) ;) }))) }) (else_clause "else if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }" else (if_statement "if (output->sectype == noalloc_section) {\n        flags = flags & 0xfffffffe;\n      }" if (parenthesized_expression "(output->sectype == noalloc_section)" ( (binary_expression "output->sectype == noalloc_section" (field_expression "output->sectype" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        flags = flags & 0xfffffffe;\n      }" { (expression_statement "flags = flags & 0xfffffffe;" (assignment_expression "flags = flags & 0xfffffffe" identifier = (binary_expression "flags & 0xfffffffe" identifier & number_literal)) ;) })))) (expression_statement "paVar8 = output->bfd_section;" (assignment_expression "paVar8 = output->bfd_section" identifier = (field_expression "output->bfd_section" identifier -> field_identifier)) ;) (if_statement "if (paVar8 == (asection *)0x0) {\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }" if (parenthesized_expression "(paVar8 == (asection *)0x0)" ( (binary_expression "paVar8 == (asection *)0x0" identifier == (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        init_os(output,flags);\n        paVar8 = output->bfd_section;\n      }" { (expression_statement "init_os(output,flags);" (call_expression "init_os(output,flags)" identifier (argument_list "(output,flags)" ( identifier , identifier ))) ;) (expression_statement "paVar8 = output->bfd_section;" (assignment_expression "paVar8 = output->bfd_section" identifier = (field_expression "output->bfd_section" identifier -> field_identifier)) ;) })) (expression_statement "uVar4 = (flags | 0xfffffff7) & paVar8->flags;" (assignment_expression "uVar4 = (flags | 0xfffffff7) & paVar8->flags" identifier = (binary_expression "(flags | 0xfffffff7) & paVar8->flags" (parenthesized_expression "(flags | 0xfffffff7)" ( (binary_expression "flags | 0xfffffff7" identifier | number_literal) )) & (field_expression "paVar8->flags" identifier -> field_identifier))) ;) (expression_statement "paVar8->flags = uVar4;" (assignment_expression "paVar8->flags = uVar4" (field_expression "paVar8->flags" identifier -> field_identifier) = identifier) ;) (if_statement "if ((paVar8->field_0x24 & 4) == 0) {\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }\n      else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }" if (parenthesized_expression "((paVar8->field_0x24 & 4) == 0)" ( (binary_expression "(paVar8->field_0x24 & 4) == 0" (parenthesized_expression "(paVar8->field_0x24 & 4)" ( (binary_expression "paVar8->field_0x24 & 4" (field_expression "paVar8->field_0x24" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        paVar8->field_0x24 = paVar8->field_0x24 | 4;\n        pbVar2 = link_info.output_bfd;\n        paVar8->flags = uVar4 | flags;\n        (*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);\n        if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }\n      }" { (expression_statement "paVar8->field_0x24 = paVar8->field_0x24 | 4;" (assignment_expression "paVar8->field_0x24 = paVar8->field_0x24 | 4" (field_expression "paVar8->field_0x24" identifier -> field_identifier) = (binary_expression "paVar8->field_0x24 | 4" (field_expression "paVar8->field_0x24" identifier -> field_identifier) | number_literal)) ;) (expression_statement "pbVar2 = link_info.output_bfd;" (assignment_expression "pbVar2 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) (expression_statement "paVar8->flags = uVar4 | flags;" (assignment_expression "paVar8->flags = uVar4 | flags" (field_expression "paVar8->flags" identifier -> field_identifier) = (binary_expression "uVar4 | flags" identifier | identifier)) ;) (expression_statement "(*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info);" (call_expression "(*pbVar2->xvec->_bfd_init_private_section_data)\n                  (section->owner,section,pbVar2,paVar8,&link_info)" (parenthesized_expression "(*pbVar2->xvec->_bfd_init_private_section_data)" ( (pointer_expression "*pbVar2->xvec->_bfd_init_private_section_data" * (field_expression "pbVar2->xvec->_bfd_init_private_section_data" (field_expression "pbVar2->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(section->owner,section,pbVar2,paVar8,&link_info)" ( (field_expression "section->owner" identifier -> field_identifier) , identifier , identifier , identifier , (pointer_expression "&link_info" & identifier) ))) ;) (if_statement "if ((flags & 0x800000) != 0) {\n          output->bfd_section->entsize = section->entsize;\n        }" if (parenthesized_expression "((flags & 0x800000) != 0)" ( (binary_expression "(flags & 0x800000) != 0" (parenthesized_expression "(flags & 0x800000)" ( (binary_expression "flags & 0x800000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          output->bfd_section->entsize = section->entsize;\n        }" { (expression_statement "output->bfd_section->entsize = section->entsize;" (assignment_expression "output->bfd_section->entsize = section->entsize" (field_expression "output->bfd_section->entsize" (field_expression "output->bfd_section" identifier -> field_identifier) -> field_identifier) = (field_expression "section->entsize" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }" else (compound_statement "{\n        uVar9 = flags & 0xfffffff7;\n        if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }\n        flags = uVar9;\n        paVar8->flags = uVar4 | flags;\n      }" { (expression_statement "uVar9 = flags & 0xfffffff7;" (assignment_expression "uVar9 = flags & 0xfffffff7" identifier = (binary_expression "flags & 0xfffffff7" identifier & number_literal)) ;) (if_statement "if ((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))) {\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }" if (parenthesized_expression "((((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize))))" ( (binary_expression "(((uVar4 ^ uVar9) & 0x1800000) != 0) ||\n           (((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))" (parenthesized_expression "(((uVar4 ^ uVar9) & 0x1800000) != 0)" ( (binary_expression "((uVar4 ^ uVar9) & 0x1800000) != 0" (parenthesized_expression "((uVar4 ^ uVar9) & 0x1800000)" ( (binary_expression "(uVar4 ^ uVar9) & 0x1800000" (parenthesized_expression "(uVar4 ^ uVar9)" ( (binary_expression "uVar4 ^ uVar9" identifier ^ identifier) )) & number_literal) )) != number_literal) )) || (parenthesized_expression "(((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)))" ( (parenthesized_expression "((flags & 0x800000) != 0 && (paVar8->entsize != section->entsize))" ( (binary_expression "(flags & 0x800000) != 0 && (paVar8->entsize != section->entsize)" (binary_expression "(flags & 0x800000) != 0" (parenthesized_expression "(flags & 0x800000)" ( (binary_expression "flags & 0x800000" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(paVar8->entsize != section->entsize)" ( (binary_expression "paVar8->entsize != section->entsize" (field_expression "paVar8->entsize" identifier -> field_identifier) != (field_expression "section->entsize" identifier -> field_identifier)) ))) )) ))) )) (compound_statement "{\n          uVar4 = uVar4 & 0xfe7fffff;\n          uVar9 = flags & 0xfe7ffff7;\n        }" { (expression_statement "uVar4 = uVar4 & 0xfe7fffff;" (assignment_expression "uVar4 = uVar4 & 0xfe7fffff" identifier = (binary_expression "uVar4 & 0xfe7fffff" identifier & number_literal)) ;) (expression_statement "uVar9 = flags & 0xfe7ffff7;" (assignment_expression "uVar9 = flags & 0xfe7ffff7" identifier = (binary_expression "flags & 0xfe7ffff7" identifier & number_literal)) ;) })) (expression_statement "flags = uVar9;" (assignment_expression "flags = uVar9" identifier = identifier) ;) (expression_statement "paVar8->flags = uVar4 | flags;" (assignment_expression "paVar8->flags = uVar4 | flags" (field_expression "paVar8->flags" identifier -> field_identifier) = (binary_expression "uVar4 | flags" identifier | identifier)) ;) }))) (if_statement "if (((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)) {\n        output->block_value = 0x80;\n      }" if (parenthesized_expression "(((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26))" ( (binary_expression "((flags & 0x10000000) != 0) && (iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)" (parenthesized_expression "((flags & 0x10000000) != 0)" ( (binary_expression "(flags & 0x10000000) != 0" (parenthesized_expression "(flags & 0x10000000)" ( (binary_expression "flags & 0x10000000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26)" ( (comma_expression "iVar5 = bfd_get_arch(section->owner), iVar5 == 0x26" (assignment_expression "iVar5 = bfd_get_arch(section->owner)" identifier = (call_expression "bfd_get_arch(section->owner)" identifier (argument_list "(section->owner)" ( (field_expression "section->owner" identifier -> field_identifier) )))) , (binary_expression "iVar5 == 0x26" identifier == number_literal)) ))) )) (compound_statement "{\n        output->block_value = 0x80;\n      }" { (expression_statement "output->block_value = 0x80;" (assignment_expression "output->block_value = 0x80" (field_expression "output->block_value" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "paVar8 = output->bfd_section;" (assignment_expression "paVar8 = output->bfd_section" identifier = (field_expression "output->bfd_section" identifier -> field_identifier)) ;) (if_statement "if (paVar8->alignment_power < section->alignment_power) {\n        paVar8->alignment_power = section->alignment_power;\n      }" if (parenthesized_expression "(paVar8->alignment_power < section->alignment_power)" ( (binary_expression "paVar8->alignment_power < section->alignment_power" (field_expression "paVar8->alignment_power" identifier -> field_identifier) < (field_expression "section->alignment_power" identifier -> field_identifier)) )) (compound_statement "{\n        paVar8->alignment_power = section->alignment_power;\n      }" { (expression_statement "paVar8->alignment_power = section->alignment_power;" (assignment_expression "paVar8->alignment_power = section->alignment_power" (field_expression "paVar8->alignment_power" identifier -> field_identifier) = (field_expression "section->alignment_power" identifier -> field_identifier)) ;) })) (expression_statement "bVar3 = map_head_is_link_order;" (assignment_expression "bVar3 = map_head_is_link_order" identifier = identifier) ;) (expression_statement "section->output_section = paVar8;" (assignment_expression "section->output_section = paVar8" (field_expression "section->output_section" identifier -> field_identifier) = identifier) ;) (if_statement "if (bVar3 == 0) {\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        pbVar1 = (paVar8->map_tail).s;\n        (paVar8->map_tail).link_order = (bfd_link_order *)section;\n        (section->map_head).link_order = (bfd_link_order *)0x0;\n        (section->map_tail).s = pbVar1;\n        if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }\n      }" { (expression_statement "pbVar1 = (paVar8->map_tail).s;" (assignment_expression "pbVar1 = (paVar8->map_tail).s" identifier = (field_expression "(paVar8->map_tail).s" (parenthesized_expression "(paVar8->map_tail)" ( (field_expression "paVar8->map_tail" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(paVar8->map_tail).link_order = (bfd_link_order *)section;" (assignment_expression "(paVar8->map_tail).link_order = (bfd_link_order *)section" (field_expression "(paVar8->map_tail).link_order" (parenthesized_expression "(paVar8->map_tail)" ( (field_expression "paVar8->map_tail" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(bfd_link_order *)section" ( (type_descriptor "bfd_link_order *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(section->map_head).link_order = (bfd_link_order *)0x0;" (assignment_expression "(section->map_head).link_order = (bfd_link_order *)0x0" (field_expression "(section->map_head).link_order" (parenthesized_expression "(section->map_head)" ( (field_expression "section->map_head" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(bfd_link_order *)0x0" ( (type_descriptor "bfd_link_order *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(section->map_tail).s = pbVar1;" (assignment_expression "(section->map_tail).s = pbVar1" (field_expression "(section->map_tail).s" (parenthesized_expression "(section->map_tail)" ( (field_expression "section->map_tail" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (pbVar1 == (bfd_section *)0x0) {\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }\n        else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }" if (parenthesized_expression "(pbVar1 == (bfd_section *)0x0)" ( (binary_expression "pbVar1 == (bfd_section *)0x0" identifier == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (paVar8->map_head).link_order = (bfd_link_order *)section;\n        }" { (expression_statement "(paVar8->map_head).link_order = (bfd_link_order *)section;" (assignment_expression "(paVar8->map_head).link_order = (bfd_link_order *)section" (field_expression "(paVar8->map_head).link_order" (parenthesized_expression "(paVar8->map_head)" ( (field_expression "paVar8->map_head" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(bfd_link_order *)section" ( (type_descriptor "bfd_link_order *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }" else (compound_statement "{\n          (pbVar1->map_head).link_order = (bfd_link_order *)section;\n        }" { (expression_statement "(pbVar1->map_head).link_order = (bfd_link_order *)section;" (assignment_expression "(pbVar1->map_head).link_order = (bfd_link_order *)section" (field_expression "(pbVar1->map_head).link_order" (parenthesized_expression "(pbVar1->map_head)" ( (field_expression "pbVar1->map_head" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(bfd_link_order *)section" ( (type_descriptor "bfd_link_order *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) })) (expression_statement "plVar6 = (lang_statement_union *)stat_alloc(0x18);" (assignment_expression "plVar6 = (lang_statement_union *)stat_alloc(0x18)" identifier = (cast_expression "(lang_statement_union *)stat_alloc(0x18)" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "(plVar6->header).type = lang_input_section_enum;" (assignment_expression "(plVar6->header).type = lang_input_section_enum" (field_expression "(plVar6->header).type" (parenthesized_expression "(plVar6->header)" ( (field_expression "plVar6->header" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(plVar6->header).next = (lang_statement_union *)0x0;" (assignment_expression "(plVar6->header).next = (lang_statement_union *)0x0" (field_expression "(plVar6->header).next" (parenthesized_expression "(plVar6->header)" ( (field_expression "plVar6->header" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*ptr->tail = plVar6;" (assignment_expression "*ptr->tail = plVar6" (pointer_expression "*ptr->tail" * (field_expression "ptr->tail" identifier -> field_identifier)) = identifier) ;) (expression_statement "ptr->tail = (lang_statement_union **)plVar6;" (assignment_expression "ptr->tail = (lang_statement_union **)plVar6" (field_expression "ptr->tail" identifier -> field_identifier) = (cast_expression "(lang_statement_union **)plVar6" ( (type_descriptor "lang_statement_union **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "(plVar6->input_section).section = section;" (assignment_expression "(plVar6->input_section).section = section" (field_expression "(plVar6->input_section).section" (parenthesized_expression "(plVar6->input_section)" ( (field_expression "plVar6->input_section" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (section->output_section == (bfd_section *)0x0) {\n    section->output_section = (bfd_section *)(_bfd_std_section + 0x230);\n    return;\n  }" else (if_statement "if (section->output_section == (bfd_section *)0x0) {\n    section->output_section = (bfd_section *)(_bfd_std_section + 0x230);\n    return;\n  }" if (parenthesized_expression "(section->output_section == (bfd_section *)0x0)" ( (binary_expression "section->output_section == (bfd_section *)0x0" (field_expression "section->output_section" identifier -> field_identifier) == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    section->output_section = (bfd_section *)(_bfd_std_section + 0x230);\n    return;\n  }" { (expression_statement "section->output_section = (bfd_section *)(_bfd_std_section + 0x230);" (assignment_expression "section->output_section = (bfd_section *)(_bfd_std_section + 0x230)" (field_expression "section->output_section" identifier -> field_identifier) = (cast_expression "(bfd_section *)(_bfd_std_section + 0x230)" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x230)" ( (binary_expression "_bfd_std_section + 0x230" identifier + number_literal) )))) ;) (return_statement "return;" return ;) })))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar11 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar3 = *(uint *)(param_2 + 0x20);\n  iVar2 = FUN_00113360(uVar3);\n  lVar5 = 10;\n  pbVar8 = *(byte **)(param_4 + 0x30);\n  pbVar9 = (byte *)"/DISCARD/";\n  do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);\n  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar11 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar3 = *(uint *)(param_2 + 0x20);\n  iVar2 = FUN_00113360(uVar3);\n  lVar5 = 10;\n  pbVar8 = *(byte **)(param_4 + 0x30);\n  pbVar9 = (byte *)"/DISCARD/";\n  do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);\n  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)" identifier (parameter_list "(long param_1,long param_2,long param_3,long param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar11 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar3 = *(uint *)(param_2 + 0x20);\n  iVar2 = FUN_00113360(uVar3);\n  lVar5 = 10;\n  pbVar8 = *(byte **)(param_4 + 0x30);\n  pbVar9 = (byte *)"/DISCARD/";\n  do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);\n  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "undefined1 uVar10;" type_identifier identifier ;) (declaration "undefined1 uVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;" (assignment_expression "uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008" identifier = (binary_expression "&stack0xffffffffffffffe0 < &DAT_00000008" (pointer_expression "&stack0xffffffffffffffe0" & identifier) < (pointer_expression "&DAT_00000008" & identifier))) ;) (expression_statement "uVar11 = &stack0x00000000 == (undefined1 *)0x28;" (assignment_expression "uVar11 = &stack0x00000000 == (undefined1 *)0x28" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x28" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x28" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar3 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar3 = *(uint *)(param_2 + 0x20)" identifier = (pointer_expression "*(uint *)(param_2 + 0x20)" * (cast_expression "(uint *)(param_2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = FUN_00113360(uVar3);" (assignment_expression "iVar2 = FUN_00113360(uVar3)" identifier = (call_expression "FUN_00113360(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "lVar5 = 10;" (assignment_expression "lVar5 = 10" identifier = number_literal) ;) (expression_statement "pbVar8 = *(byte **)(param_4 + 0x30);" (assignment_expression "pbVar8 = *(byte **)(param_4 + 0x30)" identifier = (pointer_expression "*(byte **)(param_4 + 0x30)" * (cast_expression "(byte **)(param_4 + 0x30)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0x30)" ( (binary_expression "param_4 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = (byte *)"/DISCARD/";" (assignment_expression "pbVar9 = (byte *)"/DISCARD/"" identifier = (cast_expression "(byte *)"/DISCARD/"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""/DISCARD/"" " string_content "))) ;) (do_statement "do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);" do (compound_statement "{\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar10 = *pbVar8 < *pbVar9;" (assignment_expression "uVar10 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "uVar11 = *pbVar8 == *pbVar9;" (assignment_expression "uVar11 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar11)" ( (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" if (parenthesized_expression "((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10))" ( (binary_expression "(iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" ( (binary_expression "(!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10" (parenthesized_expression "(!(bool)uVar10 && !(bool)uVar11)" ( (binary_expression "!(bool)uVar10 && !(bool)uVar11" (unary_expression "!(bool)uVar10" ! (cast_expression "(bool)uVar10" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar11" ! (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier))) )) != (cast_expression "(bool)uVar10" ( (type_descriptor "bool" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }" { (if_statement "if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }" if (parenthesized_expression "(((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0))" ( (binary_expression "((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)" (parenthesized_expression "((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0))" ( (binary_expression "(param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)" ( (comma_expression "iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0" (assignment_expression "iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2)" identifier = (call_expression "(**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2)" (parenthesized_expression "(**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))" ( (pointer_expression "**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" * (pointer_expression "*(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" * (cast_expression "(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(DAT_00185a50 + 8) + 0x2f8)" ( (binary_expression "*(long *)(DAT_00185a50 + 8) + 0x2f8" (pointer_expression "*(long *)(DAT_00185a50 + 8)" * (cast_expression "(long *)(DAT_00185a50 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00185a50 + 8)" ( (binary_expression "DAT_00185a50 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(&DAT_00185a00,param_3,param_2)" ( (pointer_expression "&DAT_00185a00" & identifier) , identifier , identifier )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(long *)(param_2 + 0x68) == 0)" ( (binary_expression "*(long *)(param_2 + 0x68) == 0" (pointer_expression "*(long *)(param_2 + 0x68)" * (cast_expression "(long *)(param_2 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }" { (if_statement "if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" if (parenthesized_expression "((uVar3 & 0x2020000) == 0x2020000)" ( (binary_expression "(uVar3 & 0x2020000) == 0x2020000" (parenthesized_expression "(uVar3 & 0x2020000)" ( (binary_expression "uVar3 & 0x2020000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }" { (expression_statement "uVar7 = uVar3 & 0xfff3fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff3fdfb" identifier = (binary_expression "uVar3 & 0xfff3fdfb" identifier & number_literal)) ;) (if_statement "if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }" if (parenthesized_expression "((DAT_00185a01 & 0x10) != 0)" ( (binary_expression "(DAT_00185a01 & 0x10) != 0" (parenthesized_expression "(DAT_00185a01 & 0x10)" ( (binary_expression "DAT_00185a01 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }" { (expression_statement "uVar7 = uVar3 & 0xfff1fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff1fdfb" identifier = (binary_expression "uVar3 & 0xfff1fdfb" identifier & number_literal)) ;) })) }) (else_clause "else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" else (compound_statement "{\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" { (expression_statement "uVar7 = uVar3 & 0xfff1fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff1fdfb" identifier = (binary_expression "uVar3 & 0xfff1fdfb" identifier & number_literal)) ;) (if_statement "if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }" if (parenthesized_expression "((DAT_00185a00 & 3) == 2)" ( (binary_expression "(DAT_00185a00 & 3) == 2" (parenthesized_expression "(DAT_00185a00 & 3)" ( (binary_expression "DAT_00185a00 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar7 = uVar3 & 0xfffffdff;\n        }" { (expression_statement "uVar7 = uVar3 & 0xfffffdff;" (assignment_expression "uVar7 = uVar3 & 0xfffffdff" identifier = (binary_expression "uVar3 & 0xfffffdff" identifier & number_literal)) ;) })) }))) (if_statement "if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" if (parenthesized_expression "(*(int *)(param_4 + 0x8c) == 2)" ( (binary_expression "*(int *)(param_4 + 0x8c) == 2" (pointer_expression "*(int *)(param_4 + 0x8c)" * (cast_expression "(int *)(param_4 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x8c)" ( (binary_expression "param_4 + 0x8c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }" { (if_statement "if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5)" ( (binary_expression "*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(DAT_00185a50 + 8) + 8)" * (cast_expression "(int *)(*(long *)(DAT_00185a50 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(DAT_00185a50 + 8) + 8)" ( (binary_expression "*(long *)(DAT_00185a50 + 8) + 8" (pointer_expression "*(long *)(DAT_00185a50 + 8)" * (cast_expression "(long *)(DAT_00185a50 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00185a50 + 8)" ( (binary_expression "DAT_00185a50 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }" { (expression_statement "uVar7 = uVar7 & 0xfffffefd | 0x200;" (assignment_expression "uVar7 = uVar7 & 0xfffffefd | 0x200" identifier = (binary_expression "uVar7 & 0xfffffefd | 0x200" (binary_expression "uVar7 & 0xfffffefd" identifier & number_literal) | number_literal)) ;) }) (else_clause "else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" else (compound_statement "{\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" { (expression_statement "uVar7 = uVar7 & 0xfffffffc | 0x200;" (assignment_expression "uVar7 = uVar7 & 0xfffffffc | 0x200" identifier = (binary_expression "uVar7 & 0xfffffffc | 0x200" (binary_expression "uVar7 & 0xfffffffc" identifier & number_literal) | number_literal)) ;) }))) }) (else_clause "else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" else (if_statement "if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" if (parenthesized_expression "(*(int *)(param_4 + 0x8c) == 3)" ( (binary_expression "*(int *)(param_4 + 0x8c) == 3" (pointer_expression "*(int *)(param_4 + 0x8c)" * (cast_expression "(int *)(param_4 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x8c)" ( (binary_expression "param_4 + 0x8c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar7 = uVar7 & 0xfffffffe;\n      }" { (expression_statement "uVar7 = uVar7 & 0xfffffffe;" (assignment_expression "uVar7 = uVar7 & 0xfffffffe" identifier = (binary_expression "uVar7 & 0xfffffffe" identifier & number_literal)) ;) })))) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" identifier = (pointer_expression "*(long *)(param_4 + 0x38)" * (cast_expression "(long *)(param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x38)" ( (binary_expression "param_4 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }" { (expression_statement "FUN_00117140(param_4,uVar7);" (call_expression "FUN_00117140(param_4,uVar7)" identifier (argument_list "(param_4,uVar7)" ( identifier , identifier ))) ;) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" identifier = (pointer_expression "*(long *)(param_4 + 0x38)" * (cast_expression "(long *)(param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x38)" ( (binary_expression "param_4 + 0x38" identifier + number_literal) ))))) ;) })) (expression_statement "uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);" (assignment_expression "uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20)" identifier = (binary_expression "(uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20)" (parenthesized_expression "(uVar7 | 0xfffffff7)" ( (binary_expression "uVar7 | 0xfffffff7" identifier | number_literal) )) & (pointer_expression "*(uint *)(lVar5 + 0x20)" * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3" (pointer_expression "*(uint *)(lVar5 + 0x20)" * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" if (parenthesized_expression "((*(byte *)(lVar5 + 0x24) & 4) == 0)" ( (binary_expression "(*(byte *)(lVar5 + 0x24) & 4) == 0" (parenthesized_expression "(*(byte *)(lVar5 + 0x24) & 4)" ( (binary_expression "*(byte *)(lVar5 + 0x24) & 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" * (cast_expression "(byte *)(lVar5 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x24)" ( (binary_expression "lVar5 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }" { (expression_statement "*(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;" (assignment_expression "*(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" * (cast_expression "(byte *)(lVar5 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x24)" ( (binary_expression "lVar5 + 0x24" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar5 + 0x24) | 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" * (cast_expression "(byte *)(lVar5 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x24)" ( (binary_expression "lVar5 + 0x24" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "lVar1 = DAT_00185a50;" (assignment_expression "lVar1 = DAT_00185a50" identifier = identifier) ;) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7" (pointer_expression "*(uint *)(lVar5 + 0x20)" * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) = (binary_expression "uVar3 | uVar7" identifier | identifier)) ;) (expression_statement "(**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);" (call_expression "(**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00)" (parenthesized_expression "(**(code **)(*(long *)(lVar1 + 8) + 0x148))" ( (pointer_expression "**(code **)(*(long *)(lVar1 + 8) + 0x148)" * (pointer_expression "*(code **)(*(long *)(lVar1 + 8) + 0x148)" * (cast_expression "(code **)(*(long *)(lVar1 + 8) + 0x148)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar1 + 8) + 0x148)" ( (binary_expression "*(long *)(lVar1 + 8) + 0x148" (pointer_expression "*(long *)(lVar1 + 8)" * (cast_expression "(long *)(lVar1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00)" ( (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" * (cast_expression "(undefined8 *)(param_2 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf0)" ( (binary_expression "param_2 + 0xf0" identifier + number_literal) )))) , identifier , identifier , identifier , (pointer_expression "&DAT_00185a00" & identifier) ))) ;) (if_statement "if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }" if (parenthesized_expression "((uVar7 & 0x800000) != 0)" ( (binary_expression "(uVar7 & 0x800000) != 0" (parenthesized_expression "(uVar7 & 0x800000)" ( (binary_expression "uVar7 & 0x800000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }" { (expression_statement "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);" (assignment_expression "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4)" (pointer_expression "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4)" * (cast_expression "(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_4 + 0x38) + 0xc4)" ( (binary_expression "*(long *)(param_4 + 0x38) + 0xc4" (pointer_expression "*(long *)(param_4 + 0x38)" * (cast_expression "(long *)(param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x38)" ( (binary_expression "param_4 + 0x38" identifier + number_literal) )))) + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0xc4)" * (cast_expression "(undefined4 *)(param_2 + 0xc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc4)" ( (binary_expression "param_2 + 0xc4" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" else (compound_statement "{\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" { (expression_statement "uVar6 = uVar7 & 0xfffffff7;" (assignment_expression "uVar6 = uVar7 & 0xfffffff7" identifier = (binary_expression "uVar7 & 0xfffffff7" identifier & number_literal)) ;) (if_statement "if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }" if (parenthesized_expression "((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)))))" ( (binary_expression "(((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))" (parenthesized_expression "(((uVar3 ^ uVar6) & 0x1800000) != 0)" ( (binary_expression "((uVar3 ^ uVar6) & 0x1800000) != 0" (parenthesized_expression "((uVar3 ^ uVar6) & 0x1800000)" ( (binary_expression "(uVar3 ^ uVar6) & 0x1800000" (parenthesized_expression "(uVar3 ^ uVar6)" ( (binary_expression "uVar3 ^ uVar6" identifier ^ identifier) )) & number_literal) )) != number_literal) )) || (parenthesized_expression "(((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))" ( (parenthesized_expression "((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)))" ( (binary_expression "(uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))" (binary_expression "(uVar7 & 0x800000) != 0" (parenthesized_expression "(uVar7 & 0x800000)" ( (binary_expression "uVar7 & 0x800000" identifier & number_literal) )) != number_literal) && (parenthesized_expression "(*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))" ( (binary_expression "*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)" (pointer_expression "*(int *)(lVar5 + 0xc4)" * (cast_expression "(int *)(lVar5 + 0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xc4)" ( (binary_expression "lVar5 + 0xc4" identifier + number_literal) )))) != (pointer_expression "*(int *)(param_2 + 0xc4)" * (cast_expression "(int *)(param_2 + 0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc4)" ( (binary_expression "param_2 + 0xc4" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }" { (expression_statement "uVar3 = uVar3 & 0xfe7fffff;" (assignment_expression "uVar3 = uVar3 & 0xfe7fffff" identifier = (binary_expression "uVar3 & 0xfe7fffff" identifier & number_literal)) ;) (expression_statement "uVar6 = uVar7 & 0xfe7ffff7;" (assignment_expression "uVar6 = uVar7 & 0xfe7ffff7" identifier = (binary_expression "uVar7 & 0xfe7ffff7" identifier & number_literal)) ;) })) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7" (pointer_expression "*(uint *)(lVar5 + 0x20)" * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) = (binary_expression "uVar3 | uVar7" identifier | identifier)) ;) }))) (if_statement "if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }" if (parenthesized_expression "(((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26))" ( (binary_expression "((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)" (parenthesized_expression "((uVar7 & 0x10000000) != 0)" ( (binary_expression "(uVar7 & 0x10000000) != 0" (parenthesized_expression "(uVar7 & 0x10000000)" ( (binary_expression "uVar7 & 0x10000000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)" ( (comma_expression "iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26" (assignment_expression "iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0))" identifier = (call_expression "bfd_get_arch(*(undefined8 *)(param_2 + 0xf0))" identifier (argument_list "(*(undefined8 *)(param_2 + 0xf0))" ( (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" * (cast_expression "(undefined8 *)(param_2 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf0)" ( (binary_expression "param_2 + 0xf0" identifier + number_literal) )))) )))) , (binary_expression "iVar2 == 0x26" identifier == number_literal)) ))) )) (compound_statement "{\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }" { (expression_statement "*(undefined4 *)(param_4 + 0x78) = 0x80;" (assignment_expression "*(undefined4 *)(param_4 + 0x78) = 0x80" (pointer_expression "*(undefined4 *)(param_4 + 0x78)" * (cast_expression "(undefined4 *)(param_4 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x78)" ( (binary_expression "param_4 + 0x78" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" identifier = (pointer_expression "*(long *)(param_4 + 0x38)" * (cast_expression "(long *)(param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x38)" ( (binary_expression "param_4 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }" if (parenthesized_expression "(*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70))" ( (binary_expression "*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)" (pointer_expression "*(uint *)(lVar5 + 0x70)" * (cast_expression "(uint *)(lVar5 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 0x70)" * (cast_expression "(uint *)(param_2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) ))))) )) (compound_statement "{\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }" { (expression_statement "*(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);" (assignment_expression "*(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70)" (pointer_expression "*(uint *)(lVar5 + 0x70)" * (cast_expression "(uint *)(lVar5 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) )))) = (pointer_expression "*(uint *)(param_2 + 0x70)" * (cast_expression "(uint *)(param_2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) ))))) ;) })) (expression_statement "iVar2 = DAT_001853a0;" (assignment_expression "iVar2 = DAT_001853a0" identifier = identifier) ;) (expression_statement "*(long *)(param_2 + 0x68) = lVar5;" (assignment_expression "*(long *)(param_2 + 0x68) = lVar5" (pointer_expression "*(long *)(param_2 + 0x68)" * (cast_expression "(long *)(param_2 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }" { (expression_statement "lVar1 = *(long *)(lVar5 + 0x110);" (assignment_expression "lVar1 = *(long *)(lVar5 + 0x110)" identifier = (pointer_expression "*(long *)(lVar5 + 0x110)" * (cast_expression "(long *)(lVar5 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x110)" ( (binary_expression "lVar5 + 0x110" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(lVar5 + 0x110) = param_2;" (assignment_expression "*(long *)(lVar5 + 0x110) = param_2" (pointer_expression "*(long *)(lVar5 + 0x110)" * (cast_expression "(long *)(lVar5 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x110)" ( (binary_expression "lVar5 + 0x110" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_2 + 0x108) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x108) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x108)" * (cast_expression "(undefined8 *)(param_2 + 0x108)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x108)" ( (binary_expression "param_2 + 0x108" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x110) = lVar1;" (assignment_expression "*(long *)(param_2 + 0x110) = lVar1" (pointer_expression "*(long *)(param_2 + 0x110)" * (cast_expression "(long *)(param_2 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x110)" ( (binary_expression "param_2 + 0x110" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          *(long *)(lVar5 + 0x108) = param_2;\n        }" { (expression_statement "*(long *)(lVar5 + 0x108) = param_2;" (assignment_expression "*(long *)(lVar5 + 0x108) = param_2" (pointer_expression "*(long *)(lVar5 + 0x108)" * (cast_expression "(long *)(lVar5 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x108)" ( (binary_expression "lVar5 + 0x108" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" else (compound_statement "{\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" { (expression_statement "*(long *)(lVar1 + 0x108) = param_2;" (assignment_expression "*(long *)(lVar1 + 0x108) = param_2" (pointer_expression "*(long *)(lVar1 + 0x108)" * (cast_expression "(long *)(lVar1 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x108)" ( (binary_expression "lVar1 + 0x108" identifier + number_literal) )))) = identifier) ;) }))) })) (expression_statement "puVar4 = (undefined8 *)FUN_001155a0(0x18);" (assignment_expression "puVar4 = (undefined8 *)FUN_001155a0(0x18)" identifier = (cast_expression "(undefined8 *)FUN_001155a0(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001155a0(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + 1) = 5;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 5" (pointer_expression "*(undefined4 *)(puVar4 + 1)" * (cast_expression "(undefined4 *)(puVar4 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "**(undefined8 **)(param_1 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(param_1 + 8) = puVar4" (pointer_expression "**(undefined8 **)(param_1 + 8)" * (pointer_expression "*(undefined8 **)(param_1 + 8)" * (cast_expression "(undefined8 **)(param_1 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined8 **)(param_1 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(param_1 + 8) = puVar4" (pointer_expression "*(undefined8 **)(param_1 + 8)" * (cast_expression "(undefined8 **)(param_1 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4[2] = param_2;" (assignment_expression "puVar4[2] = param_2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" else (if_statement "if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" if (parenthesized_expression "(*(long *)(param_2 + 0x68) == 0)" ( (binary_expression "*(long *)(param_2 + 0x68) == 0" (pointer_expression "*(long *)(param_2 + 0x68)" * (cast_expression "(long *)(param_2 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" { (expression_statement "*(undefined8 *)(param_2 + 0x68) = 0x184c90;" (assignment_expression "*(undefined8 *)(param_2 + 0x68) = 0x184c90" (pointer_expression "*(undefined8 *)(param_2 + 0x68)" * (cast_expression "(undefined8 *)(param_2 + 0x68)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x68)" ( (binary_expression "param_2 + 0x68" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) < (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) && (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) != (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (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 * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) }))) }) (else_clause else (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 = (binary_expression IDENT & LIT)) ;) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT | LIT) )) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | IDENT)) ;) (expression_statement (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 * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ IDENT) )) & LIT) )) != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })))) (return_statement return ;) })))
(function_definition "void FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar11 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar3 = *(uint *)(param_2 + 0x20);\n  iVar2 = FUN_00113360(uVar3);\n  lVar5 = 10;\n  pbVar8 = *(byte **)(param_4 + 0x30);\n  pbVar9 = (byte *)"/DISCARD/";\n  do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);\n  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00117ba0(long param_1,long param_2,long param_3,long param_4)" (identifier "FUN_00117ba0") (parameter_list "(long param_1,long param_2,long param_3,long param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")"))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;\n  uVar11 = &stack0x00000000 == (undefined1 *)0x28;\n  uVar3 = *(uint *)(param_2 + 0x20);\n  iVar2 = FUN_00113360(uVar3);\n  lVar5 = 10;\n  pbVar8 = *(byte **)(param_4 + 0x30);\n  pbVar9 = (byte *)"/DISCARD/";\n  do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);\n  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "undefined1 uVar10;" (type_identifier "undefined1") (identifier "uVar10") (; ";")) (declaration "undefined1 uVar11;" (type_identifier "undefined1") (identifier "uVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;" (assignment_expression "uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008" (identifier "uVar10") (= "=") (binary_expression "&stack0xffffffffffffffe0 < &DAT_00000008" (pointer_expression "&stack0xffffffffffffffe0" (& "&") (identifier "stack0xffffffffffffffe0")) (< "<") (pointer_expression "&DAT_00000008" (& "&") (identifier "DAT_00000008")))) (; ";")) (expression_statement "uVar11 = &stack0x00000000 == (undefined1 *)0x28;" (assignment_expression "uVar11 = &stack0x00000000 == (undefined1 *)0x28" (identifier "uVar11") (= "=") (binary_expression "&stack0x00000000 == (undefined1 *)0x28" (pointer_expression "&stack0x00000000" (& "&") (identifier "stack0x00000000")) (== "==") (cast_expression "(undefined1 *)0x28" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x28")))) (; ";")) (expression_statement "uVar3 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar3 = *(uint *)(param_2 + 0x20)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_2 + 0x20)" (* "*") (cast_expression "(uint *)(param_2 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar2 = FUN_00113360(uVar3);" (assignment_expression "iVar2 = FUN_00113360(uVar3)" (identifier "iVar2") (= "=") (call_expression "FUN_00113360(uVar3)" (identifier "FUN_00113360") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "lVar5 = 10;" (assignment_expression "lVar5 = 10" (identifier "lVar5") (= "=") (number_literal "10")) (; ";")) (expression_statement "pbVar8 = *(byte **)(param_4 + 0x30);" (assignment_expression "pbVar8 = *(byte **)(param_4 + 0x30)" (identifier "pbVar8") (= "=") (pointer_expression "*(byte **)(param_4 + 0x30)" (* "*") (cast_expression "(byte **)(param_4 + 0x30)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_4 + 0x30)" (( "(") (binary_expression "param_4 + 0x30" (identifier "param_4") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "pbVar9 = (byte *)"/DISCARD/";" (assignment_expression "pbVar9 = (byte *)"/DISCARD/"" (identifier "pbVar9") (= "=") (cast_expression "(byte *)"/DISCARD/"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""/DISCARD/"" (" """) (string_content "/DISCARD/") (" """)))) (; ";")) (do_statement "do {\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  } while ((bool)uVar11);" (do "do") (compound_statement "{\n    if (lVar5 == 0) break;\n    lVar5 = lVar5 + -1;\n    uVar10 = *pbVar8 < *pbVar9;\n    uVar11 = *pbVar8 == *pbVar9;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n  }" ({ "{") (if_statement "if (lVar5 == 0) break;" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + -1" (identifier "lVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar10 = *pbVar8 < *pbVar9;" (assignment_expression "uVar10 = *pbVar8 < *pbVar9" (identifier "uVar10") (= "=") (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (< "<") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "uVar11 = *pbVar8 == *pbVar9;" (assignment_expression "uVar11 = *pbVar8 == *pbVar9" (identifier "uVar11") (= "=") (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (== "==") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar12 * -2" (identifier "pbVar8") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((bool)uVar11)" (( "(") (cast_expression "(bool)uVar11" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar11")) () ")")) (; ";")) (if_statement "if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }\n  else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" (if "if") (parenthesized_expression "((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10))" (( "(") (binary_expression "(iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" (( "(") (binary_expression "(!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10" (parenthesized_expression "(!(bool)uVar10 && !(bool)uVar11)" (( "(") (binary_expression "!(bool)uVar10 && !(bool)uVar11" (unary_expression "!(bool)uVar10" (! "!") (cast_expression "(bool)uVar10" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar10"))) (&& "&&") (unary_expression "!(bool)uVar11" (! "!") (cast_expression "(bool)uVar11" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar11")))) () ")")) (!= "!=") (cast_expression "(bool)uVar10" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar10"))) () ")"))) () ")")) (compound_statement "{\n    if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }\n  }" ({ "{") (if_statement "if (((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }" (if "if") (parenthesized_expression "(((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0))" (( "(") (binary_expression "((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)" (parenthesized_expression "((param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0))" (( "(") (binary_expression "(param_3 == 0) ||\n        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)" (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0)" (( "(") (comma_expression "iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),\n        iVar2 != 0" (assignment_expression "iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2)" (parenthesized_expression "(**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))" (( "(") (pointer_expression "**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" (* "*") (pointer_expression "*(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" (* "*") (cast_expression "(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(DAT_00185a50 + 8) + 0x2f8)" (( "(") (binary_expression "*(long *)(DAT_00185a50 + 8) + 0x2f8" (pointer_expression "*(long *)(DAT_00185a50 + 8)" (* "*") (cast_expression "(long *)(DAT_00185a50 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00185a50 + 8)" (( "(") (binary_expression "DAT_00185a50 + 8" (identifier "DAT_00185a50") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x2f8")) () ")"))))) () ")")) (argument_list "(&DAT_00185a00,param_3,param_2)" (( "(") (pointer_expression "&DAT_00185a00" (& "&") (identifier "DAT_00185a00")) (, ",") (identifier "param_3") (, ",") (identifier "param_2") () ")")))) (, ",") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(param_2 + 0x68) == 0)" (( "(") (binary_expression "*(long *)(param_2 + 0x68) == 0" (pointer_expression "*(long *)(param_2 + 0x68)" (* "*") (cast_expression "(long *)(param_2 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x68)" (( "(") (binary_expression "param_2 + 0x68" (identifier "param_2") (+ "+") (number_literal "0x68")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }\n      if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }\n      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);\n      *(uint *)(lVar5 + 0x20) = uVar3;\n      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }\n      if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }\n      lVar5 = *(long *)(param_4 + 0x38);\n      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }\n      iVar2 = DAT_001853a0;\n      *(long *)(param_2 + 0x68) = lVar5;\n      if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }\n      puVar4 = (undefined8 *)FUN_001155a0(0x18);\n      *(undefined4 *)(puVar4 + 1) = 5;\n      *puVar4 = 0;\n      **(undefined8 **)(param_1 + 8) = puVar4;\n      *(undefined8 **)(param_1 + 8) = puVar4;\n      puVar4[2] = param_2;\n      return;\n    }" ({ "{") (if_statement "if ((uVar3 & 0x2020000) == 0x2020000) {\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }\n      else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" (if "if") (parenthesized_expression "((uVar3 & 0x2020000) == 0x2020000)" (( "(") (binary_expression "(uVar3 & 0x2020000) == 0x2020000" (parenthesized_expression "(uVar3 & 0x2020000)" (( "(") (binary_expression "uVar3 & 0x2020000" (identifier "uVar3") (& "&") (number_literal "0x2020000")) () ")")) (== "==") (number_literal "0x2020000")) () ")")) (compound_statement "{\n        uVar7 = uVar3 & 0xfff3fdfb;\n        if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }\n      }" ({ "{") (expression_statement "uVar7 = uVar3 & 0xfff3fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff3fdfb" (identifier "uVar7") (= "=") (binary_expression "uVar3 & 0xfff3fdfb" (identifier "uVar3") (& "&") (number_literal "0xfff3fdfb"))) (; ";")) (if_statement "if ((DAT_00185a01 & 0x10) != 0) {\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }" (if "if") (parenthesized_expression "((DAT_00185a01 & 0x10) != 0)" (( "(") (binary_expression "(DAT_00185a01 & 0x10) != 0" (parenthesized_expression "(DAT_00185a01 & 0x10)" (( "(") (binary_expression "DAT_00185a01 & 0x10" (identifier "DAT_00185a01") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar7 = uVar3 & 0xfff1fdfb;\n        }" ({ "{") (expression_statement "uVar7 = uVar3 & 0xfff1fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff1fdfb" (identifier "uVar7") (= "=") (binary_expression "uVar3 & 0xfff1fdfb" (identifier "uVar3") (& "&") (number_literal "0xfff1fdfb"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" (else "else") (compound_statement "{\n        uVar7 = uVar3 & 0xfff1fdfb;\n        if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }\n      }" ({ "{") (expression_statement "uVar7 = uVar3 & 0xfff1fdfb;" (assignment_expression "uVar7 = uVar3 & 0xfff1fdfb" (identifier "uVar7") (= "=") (binary_expression "uVar3 & 0xfff1fdfb" (identifier "uVar3") (& "&") (number_literal "0xfff1fdfb"))) (; ";")) (if_statement "if ((DAT_00185a00 & 3) == 2) {\n          uVar7 = uVar3 & 0xfffffdff;\n        }" (if "if") (parenthesized_expression "((DAT_00185a00 & 3) == 2)" (( "(") (binary_expression "(DAT_00185a00 & 3) == 2" (parenthesized_expression "(DAT_00185a00 & 3)" (( "(") (binary_expression "DAT_00185a00 & 3" (identifier "DAT_00185a00") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          uVar7 = uVar3 & 0xfffffdff;\n        }" ({ "{") (expression_statement "uVar7 = uVar3 & 0xfffffdff;" (assignment_expression "uVar7 = uVar3 & 0xfffffdff" (identifier "uVar7") (= "=") (binary_expression "uVar3 & 0xfffffdff" (identifier "uVar3") (& "&") (number_literal "0xfffffdff"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (*(int *)(param_4 + 0x8c) == 2) {\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }\n      else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_4 + 0x8c) == 2)" (( "(") (binary_expression "*(int *)(param_4 + 0x8c) == 2" (pointer_expression "*(int *)(param_4 + 0x8c)" (* "*") (cast_expression "(int *)(param_4 + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x8c)" (( "(") (binary_expression "param_4 + 0x8c" (identifier "param_4") (+ "+") (number_literal "0x8c")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }\n      }" ({ "{") (if_statement "if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }\n        else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5)" (( "(") (binary_expression "*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(DAT_00185a50 + 8) + 8)" (* "*") (cast_expression "(int *)(*(long *)(DAT_00185a50 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(DAT_00185a50 + 8) + 8)" (( "(") (binary_expression "*(long *)(DAT_00185a50 + 8) + 8" (pointer_expression "*(long *)(DAT_00185a50 + 8)" (* "*") (cast_expression "(long *)(DAT_00185a50 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00185a50 + 8)" (( "(") (binary_expression "DAT_00185a50 + 8" (identifier "DAT_00185a50") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n          uVar7 = uVar7 & 0xfffffefd | 0x200;\n        }" ({ "{") (expression_statement "uVar7 = uVar7 & 0xfffffefd | 0x200;" (assignment_expression "uVar7 = uVar7 & 0xfffffefd | 0x200" (identifier "uVar7") (= "=") (binary_expression "uVar7 & 0xfffffefd | 0x200" (binary_expression "uVar7 & 0xfffffefd" (identifier "uVar7") (& "&") (number_literal "0xfffffefd")) (| "|") (number_literal "0x200"))) (; ";")) (} "}")) (else_clause "else {\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" (else "else") (compound_statement "{\n          uVar7 = uVar7 & 0xfffffffc | 0x200;\n        }" ({ "{") (expression_statement "uVar7 = uVar7 & 0xfffffffc | 0x200;" (assignment_expression "uVar7 = uVar7 & 0xfffffffc | 0x200" (identifier "uVar7") (= "=") (binary_expression "uVar7 & 0xfffffffc | 0x200" (binary_expression "uVar7 & 0xfffffffc" (identifier "uVar7") (& "&") (number_literal "0xfffffffc")) (| "|") (number_literal "0x200"))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" (else "else") (if_statement "if (*(int *)(param_4 + 0x8c) == 3) {\n        uVar7 = uVar7 & 0xfffffffe;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_4 + 0x8c) == 3)" (( "(") (binary_expression "*(int *)(param_4 + 0x8c) == 3" (pointer_expression "*(int *)(param_4 + 0x8c)" (* "*") (cast_expression "(int *)(param_4 + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x8c)" (( "(") (binary_expression "param_4 + 0x8c" (identifier "param_4") (+ "+") (number_literal "0x8c")) () ")")))) (== "==") (number_literal "3")) () ")")) (compound_statement "{\n        uVar7 = uVar7 & 0xfffffffe;\n      }" ({ "{") (expression_statement "uVar7 = uVar7 & 0xfffffffe;" (assignment_expression "uVar7 = uVar7 & 0xfffffffe" (identifier "uVar7") (= "=") (binary_expression "uVar7 & 0xfffffffe" (identifier "uVar7") (& "&") (number_literal "0xfffffffe"))) (; ";")) (} "}"))))) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_4 + 0x38)" (* "*") (cast_expression "(long *)(param_4 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x38)" (( "(") (binary_expression "param_4 + 0x38" (identifier "param_4") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (if_statement "if (lVar5 == 0) {\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00117140(param_4,uVar7);\n        lVar5 = *(long *)(param_4 + 0x38);\n      }" ({ "{") (expression_statement "FUN_00117140(param_4,uVar7);" (call_expression "FUN_00117140(param_4,uVar7)" (identifier "FUN_00117140") (argument_list "(param_4,uVar7)" (( "(") (identifier "param_4") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_4 + 0x38)" (* "*") (cast_expression "(long *)(param_4 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x38)" (( "(") (binary_expression "param_4 + 0x38" (identifier "param_4") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);" (assignment_expression "uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20)" (identifier "uVar3") (= "=") (binary_expression "(uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20)" (parenthesized_expression "(uVar7 | 0xfffffff7)" (( "(") (binary_expression "uVar7 | 0xfffffff7" (identifier "uVar7") (| "|") (number_literal "0xfffffff7")) () ")")) (& "&") (pointer_expression "*(uint *)(lVar5 + 0x20)" (* "*") (cast_expression "(uint *)(lVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x20)" (( "(") (binary_expression "lVar5 + 0x20" (identifier "lVar5") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3" (pointer_expression "*(uint *)(lVar5 + 0x20)" (* "*") (cast_expression "(uint *)(lVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x20)" (( "(") (binary_expression "lVar5 + 0x20" (identifier "lVar5") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }\n      else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" (if "if") (parenthesized_expression "((*(byte *)(lVar5 + 0x24) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(lVar5 + 0x24) & 4) == 0" (parenthesized_expression "(*(byte *)(lVar5 + 0x24) & 4)" (( "(") (binary_expression "*(byte *)(lVar5 + 0x24) & 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" (* "*") (cast_expression "(byte *)(lVar5 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x24)" (( "(") (binary_expression "lVar5 + 0x24" (identifier "lVar5") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;\n        lVar1 = DAT_00185a50;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n        (**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);\n        if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }\n      }" ({ "{") (expression_statement "*(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;" (assignment_expression "*(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" (* "*") (cast_expression "(byte *)(lVar5 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x24)" (( "(") (binary_expression "lVar5 + 0x24" (identifier "lVar5") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (binary_expression "*(byte *)(lVar5 + 0x24) | 4" (pointer_expression "*(byte *)(lVar5 + 0x24)" (* "*") (cast_expression "(byte *)(lVar5 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x24)" (( "(") (binary_expression "lVar5 + 0x24" (identifier "lVar5") (+ "+") (number_literal "0x24")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (expression_statement "lVar1 = DAT_00185a50;" (assignment_expression "lVar1 = DAT_00185a50" (identifier "lVar1") (= "=") (identifier "DAT_00185a50")) (; ";")) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7" (pointer_expression "*(uint *)(lVar5 + 0x20)" (* "*") (cast_expression "(uint *)(lVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x20)" (( "(") (binary_expression "lVar5 + 0x20" (identifier "lVar5") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "uVar3 | uVar7" (identifier "uVar3") (| "|") (identifier "uVar7"))) (; ";")) (expression_statement "(**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);" (call_expression "(**(code **)(*(long *)(lVar1 + 8) + 0x148))\n                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00)" (parenthesized_expression "(**(code **)(*(long *)(lVar1 + 8) + 0x148))" (( "(") (pointer_expression "**(code **)(*(long *)(lVar1 + 8) + 0x148)" (* "*") (pointer_expression "*(code **)(*(long *)(lVar1 + 8) + 0x148)" (* "*") (cast_expression "(code **)(*(long *)(lVar1 + 8) + 0x148)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(lVar1 + 8) + 0x148)" (( "(") (binary_expression "*(long *)(lVar1 + 8) + 0x148" (pointer_expression "*(long *)(lVar1 + 8)" (* "*") (cast_expression "(long *)(lVar1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 8)" (( "(") (binary_expression "lVar1 + 8" (identifier "lVar1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x148")) () ")"))))) () ")")) (argument_list "(*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00)" (( "(") (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0xf0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xf0)" (( "(") (binary_expression "param_2 + 0xf0" (identifier "param_2") (+ "+") (number_literal "0xf0")) () ")")))) (, ",") (identifier "param_2") (, ",") (identifier "lVar1") (, ",") (identifier "lVar5") (, ",") (pointer_expression "&DAT_00185a00" (& "&") (identifier "DAT_00185a00")) () ")"))) (; ";")) (if_statement "if ((uVar7 & 0x800000) != 0) {\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }" (if "if") (parenthesized_expression "((uVar7 & 0x800000) != 0)" (( "(") (binary_expression "(uVar7 & 0x800000) != 0" (parenthesized_expression "(uVar7 & 0x800000)" (( "(") (binary_expression "uVar7 & 0x800000" (identifier "uVar7") (& "&") (number_literal "0x800000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);\n        }" ({ "{") (expression_statement "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);" (assignment_expression "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4)" (pointer_expression "*(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4)" (* "*") (cast_expression "(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_4 + 0x38) + 0xc4)" (( "(") (binary_expression "*(long *)(param_4 + 0x38) + 0xc4" (pointer_expression "*(long *)(param_4 + 0x38)" (* "*") (cast_expression "(long *)(param_4 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x38)" (( "(") (binary_expression "param_4 + 0x38" (identifier "param_4") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "0xc4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0xc4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc4)" (( "(") (binary_expression "param_2 + 0xc4" (identifier "param_2") (+ "+") (number_literal "0xc4")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" (else "else") (compound_statement "{\n        uVar6 = uVar7 & 0xfffffff7;\n        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }\n        uVar7 = uVar6;\n        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;\n      }" ({ "{") (expression_statement "uVar6 = uVar7 & 0xfffffff7;" (assignment_expression "uVar6 = uVar7 & 0xfffffff7" (identifier "uVar6") (= "=") (binary_expression "uVar7 & 0xfffffff7" (identifier "uVar7") (& "&") (number_literal "0xfffffff7"))) (; ";")) (if_statement "if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }" (if "if") (parenthesized_expression "((((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)))))" (( "(") (binary_expression "(((uVar3 ^ uVar6) & 0x1800000) != 0) ||\n           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))" (parenthesized_expression "(((uVar3 ^ uVar6) & 0x1800000) != 0)" (( "(") (binary_expression "((uVar3 ^ uVar6) & 0x1800000) != 0" (parenthesized_expression "((uVar3 ^ uVar6) & 0x1800000)" (( "(") (binary_expression "(uVar3 ^ uVar6) & 0x1800000" (parenthesized_expression "(uVar3 ^ uVar6)" (( "(") (binary_expression "uVar3 ^ uVar6" (identifier "uVar3") (^ "^") (identifier "uVar6")) () ")")) (& "&") (number_literal "0x1800000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))" (( "(") (parenthesized_expression "((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)))" (( "(") (binary_expression "(uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))" (binary_expression "(uVar7 & 0x800000) != 0" (parenthesized_expression "(uVar7 & 0x800000)" (( "(") (binary_expression "uVar7 & 0x800000" (identifier "uVar7") (& "&") (number_literal "0x800000")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))" (( "(") (binary_expression "*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4)" (pointer_expression "*(int *)(lVar5 + 0xc4)" (* "*") (cast_expression "(int *)(lVar5 + 0xc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0xc4)" (( "(") (binary_expression "lVar5 + 0xc4" (identifier "lVar5") (+ "+") (number_literal "0xc4")) () ")")))) (!= "!=") (pointer_expression "*(int *)(param_2 + 0xc4)" (* "*") (cast_expression "(int *)(param_2 + 0xc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc4)" (( "(") (binary_expression "param_2 + 0xc4" (identifier "param_2") (+ "+") (number_literal "0xc4")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          uVar3 = uVar3 & 0xfe7fffff;\n          uVar6 = uVar7 & 0xfe7ffff7;\n        }" ({ "{") (expression_statement "uVar3 = uVar3 & 0xfe7fffff;" (assignment_expression "uVar3 = uVar3 & 0xfe7fffff" (identifier "uVar3") (= "=") (binary_expression "uVar3 & 0xfe7fffff" (identifier "uVar3") (& "&") (number_literal "0xfe7fffff"))) (; ";")) (expression_statement "uVar6 = uVar7 & 0xfe7ffff7;" (assignment_expression "uVar6 = uVar7 & 0xfe7ffff7" (identifier "uVar6") (= "=") (binary_expression "uVar7 & 0xfe7ffff7" (identifier "uVar7") (& "&") (number_literal "0xfe7ffff7"))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" (identifier "uVar7") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7;" (assignment_expression "*(uint *)(lVar5 + 0x20) = uVar3 | uVar7" (pointer_expression "*(uint *)(lVar5 + 0x20)" (* "*") (cast_expression "(uint *)(lVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x20)" (( "(") (binary_expression "lVar5 + 0x20" (identifier "lVar5") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "uVar3 | uVar7" (identifier "uVar3") (| "|") (identifier "uVar7"))) (; ";")) (} "}")))) (if_statement "if (((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }" (if "if") (parenthesized_expression "(((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26))" (( "(") (binary_expression "((uVar7 & 0x10000000) != 0) &&\n         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)" (parenthesized_expression "((uVar7 & 0x10000000) != 0)" (( "(") (binary_expression "(uVar7 & 0x10000000) != 0" (parenthesized_expression "(uVar7 & 0x10000000)" (( "(") (binary_expression "uVar7 & 0x10000000" (identifier "uVar7") (& "&") (number_literal "0x10000000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)" (( "(") (comma_expression "iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26" (assignment_expression "iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0))" (identifier "iVar2") (= "=") (call_expression "bfd_get_arch(*(undefined8 *)(param_2 + 0xf0))" (identifier "bfd_get_arch") (argument_list "(*(undefined8 *)(param_2 + 0xf0))" (( "(") (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0xf0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xf0)" (( "(") (binary_expression "param_2 + 0xf0" (identifier "param_2") (+ "+") (number_literal "0xf0")) () ")")))) () ")")))) (, ",") (binary_expression "iVar2 == 0x26" (identifier "iVar2") (== "==") (number_literal "0x26"))) () ")"))) () ")")) (compound_statement "{\n        *(undefined4 *)(param_4 + 0x78) = 0x80;\n      }" ({ "{") (expression_statement "*(undefined4 *)(param_4 + 0x78) = 0x80;" (assignment_expression "*(undefined4 *)(param_4 + 0x78) = 0x80" (pointer_expression "*(undefined4 *)(param_4 + 0x78)" (* "*") (cast_expression "(undefined4 *)(param_4 + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x78)" (( "(") (binary_expression "param_4 + 0x78" (identifier "param_4") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (number_literal "0x80")) (; ";")) (} "}"))) (expression_statement "lVar5 = *(long *)(param_4 + 0x38);" (assignment_expression "lVar5 = *(long *)(param_4 + 0x38)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_4 + 0x38)" (* "*") (cast_expression "(long *)(param_4 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x38)" (( "(") (binary_expression "param_4 + 0x38" (identifier "param_4") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (if_statement "if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }" (if "if") (parenthesized_expression "(*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70))" (( "(") (binary_expression "*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)" (pointer_expression "*(uint *)(lVar5 + 0x70)" (* "*") (cast_expression "(uint *)(lVar5 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x70)" (( "(") (binary_expression "lVar5 + 0x70" (identifier "lVar5") (+ "+") (number_literal "0x70")) () ")")))) (< "<") (pointer_expression "*(uint *)(param_2 + 0x70)" (* "*") (cast_expression "(uint *)(param_2 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")"))))) () ")")) (compound_statement "{\n        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);\n      }" ({ "{") (expression_statement "*(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);" (assignment_expression "*(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70)" (pointer_expression "*(uint *)(lVar5 + 0x70)" (* "*") (cast_expression "(uint *)(lVar5 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x70)" (( "(") (binary_expression "lVar5 + 0x70" (identifier "lVar5") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (pointer_expression "*(uint *)(param_2 + 0x70)" (* "*") (cast_expression "(uint *)(param_2 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar2 = DAT_001853a0;" (assignment_expression "iVar2 = DAT_001853a0" (identifier "iVar2") (= "=") (identifier "DAT_001853a0")) (; ";")) (expression_statement "*(long *)(param_2 + 0x68) = lVar5;" (assignment_expression "*(long *)(param_2 + 0x68) = lVar5" (pointer_expression "*(long *)(param_2 + 0x68)" (* "*") (cast_expression "(long *)(param_2 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x68)" (( "(") (binary_expression "param_2 + 0x68" (identifier "param_2") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (if_statement "if (iVar2 == 0) {\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        lVar1 = *(long *)(lVar5 + 0x110);\n        *(long *)(lVar5 + 0x110) = param_2;\n        *(undefined8 *)(param_2 + 0x108) = 0;\n        *(long *)(param_2 + 0x110) = lVar1;\n        if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }\n      }" ({ "{") (expression_statement "lVar1 = *(long *)(lVar5 + 0x110);" (assignment_expression "lVar1 = *(long *)(lVar5 + 0x110)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(lVar5 + 0x110)" (* "*") (cast_expression "(long *)(lVar5 + 0x110)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x110)" (( "(") (binary_expression "lVar5 + 0x110" (identifier "lVar5") (+ "+") (number_literal "0x110")) () ")"))))) (; ";")) (expression_statement "*(long *)(lVar5 + 0x110) = param_2;" (assignment_expression "*(long *)(lVar5 + 0x110) = param_2" (pointer_expression "*(long *)(lVar5 + 0x110)" (* "*") (cast_expression "(long *)(lVar5 + 0x110)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x110)" (( "(") (binary_expression "lVar5 + 0x110" (identifier "lVar5") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0x108) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x108) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x108)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x108)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x108)" (( "(") (binary_expression "param_2 + 0x108" (identifier "param_2") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(long *)(param_2 + 0x110) = lVar1;" (assignment_expression "*(long *)(param_2 + 0x110) = lVar1" (pointer_expression "*(long *)(param_2 + 0x110)" (* "*") (cast_expression "(long *)(param_2 + 0x110)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x110)" (( "(") (binary_expression "param_2 + 0x110" (identifier "param_2") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (identifier "lVar1")) (; ";")) (if_statement "if (lVar1 == 0) {\n          *(long *)(lVar5 + 0x108) = param_2;\n        }\n        else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" (if "if") (parenthesized_expression "(lVar1 == 0)" (( "(") (binary_expression "lVar1 == 0" (identifier "lVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(long *)(lVar5 + 0x108) = param_2;\n        }" ({ "{") (expression_statement "*(long *)(lVar5 + 0x108) = param_2;" (assignment_expression "*(long *)(lVar5 + 0x108) = param_2" (pointer_expression "*(long *)(lVar5 + 0x108)" (* "*") (cast_expression "(long *)(lVar5 + 0x108)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x108)" (( "(") (binary_expression "lVar5 + 0x108" (identifier "lVar5") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else {\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" (else "else") (compound_statement "{\n          *(long *)(lVar1 + 0x108) = param_2;\n        }" ({ "{") (expression_statement "*(long *)(lVar1 + 0x108) = param_2;" (assignment_expression "*(long *)(lVar1 + 0x108) = param_2" (pointer_expression "*(long *)(lVar1 + 0x108)" (* "*") (cast_expression "(long *)(lVar1 + 0x108)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x108)" (( "(") (binary_expression "lVar1 + 0x108" (identifier "lVar1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (} "}")))) (} "}"))) (expression_statement "puVar4 = (undefined8 *)FUN_001155a0(0x18);" (assignment_expression "puVar4 = (undefined8 *)FUN_001155a0(0x18)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)FUN_001155a0(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001155a0(0x18)" (identifier "FUN_001155a0") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 1) = 5;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 5" (pointer_expression "*(undefined4 *)(puVar4 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "5")) (; ";")) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "**(undefined8 **)(param_1 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(param_1 + 8) = puVar4" (pointer_expression "**(undefined8 **)(param_1 + 8)" (* "*") (pointer_expression "*(undefined8 **)(param_1 + 8)" (* "*") (cast_expression "(undefined8 **)(param_1 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(param_1 + 8) = puVar4" (pointer_expression "*(undefined8 **)(param_1 + 8)" (* "*") (cast_expression "(undefined8 **)(param_1 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar4[2] = param_2;" (assignment_expression "puVar4[2] = param_2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" (else "else") (if_statement "if (*(long *)(param_2 + 0x68) == 0) {\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" (if "if") (parenthesized_expression "(*(long *)(param_2 + 0x68) == 0)" (( "(") (binary_expression "*(long *)(param_2 + 0x68) == 0" (pointer_expression "*(long *)(param_2 + 0x68)" (* "*") (cast_expression "(long *)(param_2 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x68)" (( "(") (binary_expression "param_2 + 0x68" (identifier "param_2") (+ "+") (number_literal "0x68")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined8 *)(param_2 + 0x68) = 0x184c90;\n    return;\n  }" ({ "{") (expression_statement "*(undefined8 *)(param_2 + 0x68) = 0x184c90;" (assignment_expression "*(undefined8 *)(param_2 + 0x68) = 0x184c90" (pointer_expression "*(undefined8 *)(param_2 + 0x68)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x68)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x68)" (( "(") (binary_expression "param_2 + 0x68" (identifier "param_2") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (number_literal "0x184c90")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *ptr,type_2 *section,type_3 *var_6,
                     type_4 *output)

{
  type_5 *var_17;
  type_6 *pbVar2;
  type_7 var_5;
  type_8 var_7;
  int var_16;
  type_9 *plVar6;
  long var_2;
  type_2 *var_12;
  type_8 var_14;
  type_8 var_10;
  type_10 *var_3;
  type_10 *var_4;
  type_11 uVar12;
  type_11 uVar13;
  type_10 bVar14;
  
  bVar14 = 0;
  uVar12 = &stack0xffffffffffffffe0 < &DAT_00000008;
  uVar13 = &stack0x00000000 == (type_11 *)0x28;
  var_7 = section->var_10;
  var_5 = var_1((type_2 *)(type_12)var_7);
  var_2 = 10;
  var_3 = (type_10 *)output->name;
  var_4 = (type_10 *)"/DISCARD/";
  do {
    if (var_2 == 0) break;
    var_2 = var_2 + -1;
    uVar12 = *var_3 < *var_4;
    uVar13 = *var_3 == *var_4;
    var_3 = var_3 + (type_12)bVar14 * -2 + 1;
    var_4 = var_4 + (type_12)bVar14 * -2 + 1;
  } while ((bool)uVar13);
  if ((var_5 == 0) && ((!(bool)uVar12 && !(bool)uVar13) != (bool)uVar12)) {
    if (((var_6 == (type_3 *)0x0) ||
        (var_5 = (*(link_info.output_bfd)->xvec->_bfd_lookup_section_flags)
                           (&link_info,var_6,section), var_5 != 0)) &&
       (section->output_section == (type_5 *)0x0)) {
      if ((var_7 & 0x2020000) == 0x2020000) {
        var_10 = var_7 & 0xfff3fdfb;
        if ((link_info._1_1_ & 0x10) != 0) {
          var_10 = var_7 & 0xfff1fdfb;
        }
      }
      else {
        var_10 = var_7 & 0xfff1fdfb;
        if ((link_info._0_1_ & 3) == 2) {
          var_10 = var_7 & 0xfffffdff;
        }
      }
      if (output->sectype == var_8) {
        if ((link_info.output_bfd)->xvec->flavour == var_9) {
          var_10 = var_10 & 0xfffffefd | 0x200;
        }
        else {
          var_10 = var_10 & 0xfffffffc | 0x200;
        }
      }
      else if (output->sectype == var_11) {
        var_10 = var_10 & 0xfffffffe;
      }
      var_12 = output->type_5;
      if (var_12 == (type_2 *)0x0) {
        var_13(output,var_10);
        var_12 = output->type_5;
      }
      var_7 = (var_10 | 0xfffffff7) & var_12->var_10;
      var_12->var_10 = var_7;
      if ((var_12->field_0x24 & 4) == 0) {
        var_12->field_0x24 = var_12->field_0x24 | 4;
        pbVar2 = link_info.output_bfd;
        var_12->var_10 = var_7 | var_10;
        (*pbVar2->xvec->_bfd_init_private_section_data)
                  (section->owner,section,pbVar2,var_12,&link_info);
        if ((var_10 & 0x800000) != 0) {
          output->type_5->entsize = section->entsize;
        }
      }
      else {
        var_14 = var_10 & 0xfffffff7;
        if ((((var_7 ^ var_14) & 0x1800000) != 0) ||
           (((var_10 & 0x800000) != 0 && (var_12->entsize != section->entsize)))) {
          var_7 = var_7 & 0xfe7fffff;
          var_14 = var_10 & 0xfe7ffff7;
        }
        var_10 = var_14;
        var_12->var_10 = var_7 | var_10;
      }
      if (((var_10 & 0x10000000) != 0) && (var_16 = var_15(section->owner), var_16 == 0x26)) {
        output->block_value = 0x80;
      }
      var_12 = output->type_5;
      if (var_12->alignment_power < section->alignment_power) {
        var_12->alignment_power = section->alignment_power;
      }
      var_5 = map_head_is_link_order;
      section->output_section = var_12;
      if (var_5 == 0) {
        var_17 = (var_12->map_tail).s;
        (var_12->map_tail).link_order = (type_13 *)section;
        (section->map_head).link_order = (type_13 *)0x0;
        (section->map_tail).s = var_17;
        if (var_17 == (type_5 *)0x0) {
          (var_12->map_head).link_order = (type_13 *)section;
        }
        else {
          (var_17->map_head).link_order = (type_13 *)section;
        }
      }
      plVar6 = (type_9 *)var_18(0x18);
      (plVar6->header).type = lang_input_section_enum;
      (plVar6->header).next = (type_9 *)0x0;
      *ptr->tail = plVar6;
      ptr->tail = (type_9 **)plVar6;
      (plVar6->input_section).section = section;
      return;
    }
  }
  else if (section->output_section == (type_5 *)0x0) {
    section->output_section = (type_5 *)(var_19 + 0x230);
    return;
  }
  return;
}


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

void MASKED(long param_1,long param_2,long param_3,long param_4)

{
  long lVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  long lVar5;
  uint uVar6;
  uint uVar7;
  byte *pbVar8;
  byte *pbVar9;
  undefined1 uVar10;
  undefined1 uVar11;
  byte bVar12;
  
  bVar12 = 0;
  uVar10 = &stack0xffffffffffffffe0 < &DAT_00000008;
  uVar11 = &stack0x00000000 == (undefined1 *)0x28;
  uVar3 = *(uint *)(param_2 + 0x20);
  iVar2 = FUN_00113360(uVar3);
  lVar5 = 10;
  pbVar8 = *(byte **)(param_4 + 0x30);
  pbVar9 = (byte *)"/DISCARD/";
  do {
    if (lVar5 == 0) break;
    lVar5 = lVar5 + -1;
    uVar10 = *pbVar8 < *pbVar9;
    uVar11 = *pbVar8 == *pbVar9;
    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;
    pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
  } while ((bool)uVar11);
  if ((iVar2 == 0) && ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)) {
    if (((param_3 == 0) ||
        (iVar2 = (**(code **)(*(long *)(DAT_00185a50 + 8) + 0x2f8))(&DAT_00185a00,param_3,param_2),
        iVar2 != 0)) && (*(long *)(param_2 + 0x68) == 0)) {
      if ((uVar3 & 0x2020000) == 0x2020000) {
        uVar7 = uVar3 & 0xfff3fdfb;
        if ((DAT_00185a01 & 0x10) != 0) {
          uVar7 = uVar3 & 0xfff1fdfb;
        }
      }
      else {
        uVar7 = uVar3 & 0xfff1fdfb;
        if ((DAT_00185a00 & 3) == 2) {
          uVar7 = uVar3 & 0xfffffdff;
        }
      }
      if (*(int *)(param_4 + 0x8c) == 2) {
        if (*(int *)(*(long *)(DAT_00185a50 + 8) + 8) == 5) {
          uVar7 = uVar7 & 0xfffffefd | 0x200;
        }
        else {
          uVar7 = uVar7 & 0xfffffffc | 0x200;
        }
      }
      else if (*(int *)(param_4 + 0x8c) == 3) {
        uVar7 = uVar7 & 0xfffffffe;
      }
      lVar5 = *(long *)(param_4 + 0x38);
      if (lVar5 == 0) {
        FUN_00117140(param_4,uVar7);
        lVar5 = *(long *)(param_4 + 0x38);
      }
      uVar3 = (uVar7 | 0xfffffff7) & *(uint *)(lVar5 + 0x20);
      *(uint *)(lVar5 + 0x20) = uVar3;
      if ((*(byte *)(lVar5 + 0x24) & 4) == 0) {
        *(byte *)(lVar5 + 0x24) = *(byte *)(lVar5 + 0x24) | 4;
        lVar1 = DAT_00185a50;
        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;
        (**(code **)(*(long *)(lVar1 + 8) + 0x148))
                  (*(undefined8 *)(param_2 + 0xf0),param_2,lVar1,lVar5,&DAT_00185a00);
        if ((uVar7 & 0x800000) != 0) {
          *(undefined4 *)(*(long *)(param_4 + 0x38) + 0xc4) = *(undefined4 *)(param_2 + 0xc4);
        }
      }
      else {
        uVar6 = uVar7 & 0xfffffff7;
        if ((((uVar3 ^ uVar6) & 0x1800000) != 0) ||
           (((uVar7 & 0x800000) != 0 && (*(int *)(lVar5 + 0xc4) != *(int *)(param_2 + 0xc4))))) {
          uVar3 = uVar3 & 0xfe7fffff;
          uVar6 = uVar7 & 0xfe7ffff7;
        }
        uVar7 = uVar6;
        *(uint *)(lVar5 + 0x20) = uVar3 | uVar7;
      }
      if (((uVar7 & 0x10000000) != 0) &&
         (iVar2 = bfd_get_arch(*(undefined8 *)(param_2 + 0xf0)), iVar2 == 0x26)) {
        *(undefined4 *)(param_4 + 0x78) = 0x80;
      }
      lVar5 = *(long *)(param_4 + 0x38);
      if (*(uint *)(lVar5 + 0x70) < *(uint *)(param_2 + 0x70)) {
        *(uint *)(lVar5 + 0x70) = *(uint *)(param_2 + 0x70);
      }
      iVar2 = DAT_001853a0;
      *(long *)(param_2 + 0x68) = lVar5;
      if (iVar2 == 0) {
        lVar1 = *(long *)(lVar5 + 0x110);
        *(long *)(lVar5 + 0x110) = param_2;
        *(undefined8 *)(param_2 + 0x108) = 0;
        *(long *)(param_2 + 0x110) = lVar1;
        if (lVar1 == 0) {
          *(long *)(lVar5 + 0x108) = param_2;
        }
        else {
          *(long *)(lVar1 + 0x108) = param_2;
        }
      }
      puVar4 = (undefined8 *)FUN_001155a0(0x18);
      *(undefined4 *)(puVar4 + 1) = 5;
      *puVar4 = 0;
      **(undefined8 **)(param_1 + 8) = puVar4;
      *(undefined8 **)(param_1 + 8) = puVar4;
      puVar4[2] = param_2;
      return;
    }
  }
  else if (*(long *)(param_2 + 0x68) == 0) {
    *(undefined8 *)(param_2 + 0x68) = 0x184c90;
    return;
  }
  return;
}

