
void map_input_to_output_sections
               (lang_statement_union_type *s,char *target,lang_output_section_statement_type *os)

{
  flagword *pfVar1;
  lang_statement_union *plVar2;
  lang_output_section_statement_type *plVar3;
  lang_output_section_statement_type *s_00;
  long lVar4;
  uint flags;
  byte *pbVar5;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  byte bVar9;
  
  bVar9 = 0;
  if (s == (lang_statement_union_type *)0x0) {
    return;
  }
  do {
    plVar3 = default_common_section;
    switch(*(statement_enum *)((long)&s->header + 8)) {
    case lang_output_section_statement_enum:
      if ((s->output_section_statement).constraint != 0) {
        if ((s->output_section_statement).constraint - 0x17cU < 2) {
          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;
          check_input_sections
                    ((s->output_section_statement).children.head,&s->output_section_statement);
          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==
              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;
          (s->output_section_statement).constraint = -1;
          plVar3 = default_common_section;
        }
        goto switchD_00119564_caseD_5;
      }
LAB_00119800:
      map_input_to_output_sections
                ((s->output_section_statement).children.head,target,&s->output_section_statement);
      s = ((lang_statement_header_type *)&(s->header).next)->next;
      break;
    case lang_assignment_statement_enum:
      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))
      {
        init_os(os,0);
      }
      exp_init_os((etree_type *)(s->output_section_statement).children.head);
      s = ((lang_statement_header_type *)&(s->header).next)->next;
      break;
    case lang_input_statement_enum:
    case lang_object_symbols_statement_enum:
    case lang_fill_statement_enum:
    case lang_reloc_statement_enum:
    case lang_padding_statement_enum:
      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))
      goto switchD_00119564_caseD_5;
      flags = 0;
LAB_00119706:
      init_os(os,flags);
      s = ((lang_statement_header_type *)&(s->header).next)->next;
      break;
    case lang_address_statement_enum:
      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||
         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {
        s_00 = lang_output_section_statement_lookup
                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,
                          0,1);
        s_00->addr_tree = (s->data_statement).exp;
        plVar3 = default_common_section;
        if (s_00->bfd_section == (asection *)0x0) {
          init_os(s_00,0);
          plVar3 = default_common_section;
        }
      }
    default:
switchD_00119564_caseD_5:
      default_common_section = plVar3;
      s = ((lang_statement_header_type *)&(s->header).next)->next;
      break;
    case lang_wild_statement_enum:
      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||
          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||
         ((s->wild_statement).filenames_sorted != 0)) {
        walk_wild(&s->wild_statement,output_section_callback,os);
      }
      else {
        walk_wild(&s->wild_statement,output_section_callback_fast,os);
        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {
          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);
          (s->wild_statement).tree = (lang_section_bst_type *)0x0;
        }
      }
      plVar3 = default_common_section;
      if (default_common_section == (lang_output_section_statement_type *)0x0) {
        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;
            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;
            plVar2 = (plVar2->wild_statement).header.next) {
          bVar7 = false;
          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;
          if (!bVar8) {
            lVar4 = 7;
            pbVar5 = *(byte **)((long)plVar2 + 8);
            pbVar6 = (byte *)"COMMON";
            do {
              if (lVar4 == 0) break;
              lVar4 = lVar4 + -1;
              bVar7 = *pbVar5 < *pbVar6;
              bVar8 = *pbVar5 == *pbVar6;
              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;
              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;
            } while (bVar8);
            plVar3 = os;
            if ((!bVar7 && !bVar8) == bVar7) break;
          }
        }
      }
      goto switchD_00119564_caseD_5;
    case lang_data_statement_enum:
      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));
      if (os->sectype == noload_section) {
        flags = 0x300;
        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {
          flags = 0x201;
        }
      }
      else {
        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;
      }
      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;
      pfVar1 = &os->bfd_section->flags;
      *pfVar1 = *pfVar1 | flags;
      plVar3 = default_common_section;
      goto switchD_00119564_caseD_5;
    case lang_target_statement_enum:
      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;
      s = ((lang_statement_header_type *)&(s->header).next)->next;
      break;
    case lang_group_statement_enum:
      map_input_to_output_sections((s->output_section_statement).children.head,target,os);
      s = ((lang_statement_header_type *)&(s->header).next)->next;
      break;
    case lang_constructors_statement_enum:
      map_input_to_output_sections(constructor_list.head,target,os);
      s = ((lang_statement_header_type *)&(s->header).next)->next;
    }
    if (s == (lang_statement_union *)0x0) {
      return;
    }
  } while( true );
}



void FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)

{
  uint *puVar1;
  undefined8 *puVar2;
  long lVar3;
  long lVar4;
  uint uVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  
  bVar10 = 0;
  if (param_1 == (undefined8 *)0x0) {
    return;
  }
  do {
    lVar4 = DAT_00182618;
    switch(*(undefined4 *)(param_1 + 1)) {
    case 0:
      if (*(int *)((long)param_1 + 0x84) != 0) {
        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {
          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;
          FUN_00119480(param_1[2]);
          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==
              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;
          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;
          lVar4 = DAT_00182618;
        }
        goto switchD_00119564_caseD_5;
      }
LAB_00119800:
      FUN_00119520(param_1[2],param_2,param_1);
      param_1 = (undefined8 *)*param_1;
      break;
    case 1:
      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {
        FUN_00117130(param_3);
      }
      FUN_00117080(param_1[2]);
      param_1 = (undefined8 *)*param_1;
      break;
    case 2:
    case 6:
    case 7:
    case 9:
    case 0xc:
      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;
LAB_00119706:
      FUN_00117130(param_3);
      param_1 = (undefined8 *)*param_1;
      break;
    case 3:
      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {
        lVar3 = FUN_00116e20(param_1[2],0,1);
        *(undefined8 *)(lVar3 + 0x58) = param_1[3];
        lVar4 = DAT_00182618;
        if (*(long *)(lVar3 + 0x38) == 0) {
          FUN_00117130(lVar3);
          lVar4 = DAT_00182618;
        }
      }
    default:
switchD_00119564_caseD_5:
      DAT_00182618 = lVar4;
      param_1 = (undefined8 *)*param_1;
      break;
    case 4:
      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||
         (*(int *)(param_1 + 3) != 0)) {
        FUN_00119290(param_1,FUN_00117e70,param_3);
      }
      else {
        FUN_00119290(param_1,FUN_00115330,param_3);
        if (param_1[0xe] != 0) {
          FUN_00118100(param_1,param_1[0xe],param_3);
          param_1[0xe] = 0;
        }
      }
      lVar4 = DAT_00182618;
      if (DAT_00182618 == 0) {
        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;
            puVar2 = (undefined8 *)*puVar2) {
          bVar8 = false;
          bVar9 = (byte *)puVar2[1] == (byte *)0x0;
          if (!bVar9) {
            lVar4 = 7;
            pbVar6 = (byte *)puVar2[1];
            pbVar7 = (byte *)"COMMON";
            do {
              if (lVar4 == 0) break;
              lVar4 = lVar4 + -1;
              bVar8 = *pbVar6 < *pbVar7;
              bVar9 = *pbVar6 == *pbVar7;
              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;
              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;
            } while (bVar9);
            lVar4 = param_3;
            if ((!bVar8 && !bVar9) == bVar8) break;
          }
        }
      }
      goto switchD_00119564_caseD_5;
    case 8:
      FUN_00117080(param_1[3]);
      if (*(int *)(param_3 + 0x8c) == 2) {
        uVar5 = 0x300;
        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {
          uVar5 = 0x201;
        }
      }
      else {
        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;
      }
      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;
      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);
      *puVar1 = *puVar1 | uVar5;
      lVar4 = DAT_00182618;
      goto switchD_00119564_caseD_5;
    case 10:
      param_2 = param_1[2];
      param_1 = (undefined8 *)*param_1;
      break;
    case 0xd:
      FUN_00119520(param_1[2],param_2,param_3);
      param_1 = (undefined8 *)*param_1;
      break;
    case 0xf:
      FUN_00119520(DAT_00182d20,param_2,param_3);
      param_1 = (undefined8 *)*param_1;
    }
    if (param_1 == (undefined8 *)0x0) {
      return;
    }
  } while( true );
}


TEST RDI,RDI
JZ 0x001197b0
PUSH R15
LEA R15,[0x141d28]
PUSH R14
MOV R14D,0x201
PUSH R13
LEA R13,[0x1421fc]
PUSH R12
MOV R12,RSI
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
CMP dword ptr [RBX + 0x8],0xf
JA 0x001195b0
MOV EAX,dword ptr [RBX + 0x8]
MOVSXD RAX,dword ptr [R15 + RAX*0x4]
ADD RAX,R15
JMP RAX
MOV RDI,qword ptr [RBX + 0x18]
CALL 0x00117080
MOV EAX,dword ptr [RBP + 0x8c]
CMP EAX,0x2
JZ 0x00119820
XOR ESI,ESI
CMP EAX,0x3
SETNZ SIL
LEA ESI,[RSI + RSI*0x2 + 0x100]
MOV RAX,qword ptr [RBP + 0x38]
TEST RAX,RAX
JZ 0x00119706
OR dword ptr [RAX + 0x20],ESI
NOP dword ptr [RAX + RAX*0x1]
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00119554
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [0x00182d20]
MOV RDX,RBP
MOV RSI,R12
CALL 0x00119520
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00119554
JMP 0x001195b8
MOV R12,qword ptr [RBX + 0x10]
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00119554
JMP 0x001195b8
MOV RDI,qword ptr [RBX + 0x10]
MOV RDX,RBP
MOV RSI,R12
CALL 0x00119520
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00119554
JMP 0x001195b8
MOV RAX,qword ptr [RBX + 0x50]
TEST RAX,RAX
JZ 0x0011963b
CMP dword ptr [RAX + 0x18],0x1
JZ 0x001197b8
MOV RDX,RBP
LEA RSI,[0x117e70]
MOV RDI,RBX
CALL 0x00119290
CMP qword ptr [0x00182618],0x0
JNZ 0x001195b0
MOV RAX,qword ptr [RBX + 0x20]
TEST RAX,RAX
JZ 0x001195b0
NOP dword ptr [RAX + RAX*0x1]
MOV RSI,qword ptr [RAX + 0x8]
TEST RSI,RSI
JZ 0x00119691
MOV ECX,0x7
MOV RDI,R13
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0011984c
MOV RAX,qword ptr [RAX]
TEST RAX,RAX
JNZ 0x00119670
JMP 0x001195b0
MOV RAX,qword ptr [RBX + 0x20]
TEST RAX,RAX
JZ 0x001196b4
MOV EAX,dword ptr [RAX + 0x18]
TEST EAX,EAX
JNZ 0x001195b0
MOV RDI,qword ptr [RBX + 0x10]
MOV EDX,0x1
XOR ESI,ESI
CALL 0x00116e20
MOV RDX,qword ptr [RBX + 0x18]
CMP qword ptr [RAX + 0x38],0x0
MOV qword ptr [RAX + 0x58],RDX
JNZ 0x001195b0
XOR ESI,ESI
MOV RDI,RAX
CALL 0x00117130
JMP 0x001195b0
TEST RBP,RBP
JZ 0x001195b0
CMP qword ptr [RBP + 0x38],0x0
JNZ 0x001195b0
XOR ESI,ESI
MOV RDI,RBP
CALL 0x00117130
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00119554
JMP 0x001195b8
MOV EAX,dword ptr [RBX + 0x84]
TEST EAX,EAX
JZ 0x00119800
SUB EAX,0x17c
CMP EAX,0x1
JA 0x001195b0
OR byte ptr [RBX + 0x90],0x4
MOV RDI,qword ptr [RBX + 0x10]
MOV RSI,RBX
CALL 0x00119480
MOVZX EAX,byte ptr [RBX + 0x90]
SHR AL,0x2
AND EAX,0x1
CMP dword ptr [RBX + 0x84],0x17c
SETZ DL
CMP AL,DL
JZ 0x00119800
MOV dword ptr [RBX + 0x84],0xffffffff
JMP 0x001195b0
TEST RBP,RBP
JZ 0x00119790
CMP qword ptr [RBP + 0x38],0x0
JZ 0x0011983d
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x00117080
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00119554
JMP 0x001195b8
RET
MOV EDX,dword ptr [RBX + 0x18]
TEST EDX,EDX
JNZ 0x0011963b
LEA RSI,[0x115330]
MOV RDX,RBP
MOV RDI,RBX
CALL 0x00119290
MOV RSI,qword ptr [RBX + 0x70]
TEST RSI,RSI
JZ 0x0011964d
MOV RDX,RBP
MOV RDI,RBX
CALL 0x00118100
MOV qword ptr [RBX + 0x70],0x0
JMP 0x0011964d
MOV RDI,qword ptr [RBX + 0x10]
MOV RDX,RBX
MOV RSI,R12
CALL 0x00119520
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00119554
JMP 0x001195b8
MOV RAX,qword ptr [0x00182db0]
MOV ESI,0x300
MOV RAX,qword ptr [RAX + 0x8]
CMP dword ptr [RAX + 0x8],0x5
CMOVZ ESI,R14D
JMP 0x00119598
XOR ESI,ESI
MOV RDI,RBP
CALL 0x00117130
JMP 0x00119790
MOV qword ptr [0x00182618],RBP
JMP 0x001195b0
(translation_unit "void FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  long lVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  long lVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2,long param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  long lVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  }" { (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) (switch_statement "switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }" switch (parenthesized_expression "(*(undefined4 *)(param_1 + 1))" ( (pointer_expression "*(undefined4 *)(param_1 + 1)" * (cast_expression "(undefined4 *)(param_1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) )) (compound_statement "{\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }" { (case_statement "case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (if_statement "if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }" if (parenthesized_expression "(*(int *)((long)param_1 + 0x84) != 0)" ( (binary_expression "*(int *)((long)param_1 + 0x84) != 0" (pointer_expression "*(int *)((long)param_1 + 0x84)" * (cast_expression "(int *)((long)param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x84)" ( (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }" { (if_statement "if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }" if (parenthesized_expression "(*(int *)((long)param_1 + 0x84) - 0x17cU < 2)" ( (binary_expression "*(int *)((long)param_1 + 0x84) - 0x17cU < 2" (binary_expression "*(int *)((long)param_1 + 0x84) - 0x17cU" (pointer_expression "*(int *)((long)param_1 + 0x84)" * (cast_expression "(int *)((long)param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x84)" ( (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) - number_literal) < number_literal) )) (compound_statement "{\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }" { (expression_statement "*(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;" (assignment_expression "*(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4" (pointer_expression "*(byte *)(param_1 + 0x12)" * (cast_expression "(byte *)(param_1 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x12) | 4" (pointer_expression "*(byte *)(param_1 + 0x12)" * (cast_expression "(byte *)(param_1 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "FUN_00119480(param_1[2]);" (call_expression "FUN_00119480(param_1[2])" identifier (argument_list "(param_1[2])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) ))) ;) (if_statement "if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;" if (parenthesized_expression "((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c))" ( (binary_expression "(bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)" (cast_expression "(bool)(*(byte *)(param_1 + 0x12) >> 2 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(*(byte *)(param_1 + 0x12) >> 2 & 1)" ( (binary_expression "*(byte *)(param_1 + 0x12) >> 2 & 1" (binary_expression "*(byte *)(param_1 + 0x12) >> 2" (pointer_expression "*(byte *)(param_1 + 0x12)" * (cast_expression "(byte *)(param_1 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) >> number_literal) & number_literal) ))) == (parenthesized_expression "(*(int *)((long)param_1 + 0x84) == 0x17c)" ( (binary_expression "*(int *)((long)param_1 + 0x84) == 0x17c" (pointer_expression "*(int *)((long)param_1 + 0x84)" * (cast_expression "(int *)((long)param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x84)" ( (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) ))) )) (goto_statement "goto LAB_00119800;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x84) = 0xffffffff" (pointer_expression "*(undefined4 *)((long)param_1 + 0x84)" * (cast_expression "(undefined4 *)((long)param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x84)" ( (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) })) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;) })) (labeled_statement "LAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);" statement_identifier : (expression_statement "FUN_00119520(param_1[2],param_2,param_1);" (call_expression "FUN_00119520(param_1[2],param_2,param_1)" identifier (argument_list "(param_1[2],param_2,param_1)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , identifier , identifier ))) ;)) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (if_statement "if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }" if (parenthesized_expression "((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0))" ( (binary_expression "(param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(long *)(param_3 + 0x38) == 0)" ( (binary_expression "*(long *)(param_3 + 0x38) == 0" (pointer_expression "*(long *)(param_3 + 0x38)" * (cast_expression "(long *)(param_3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        FUN_00117130(param_3);\n      }" { (expression_statement "FUN_00117130(param_3);" (call_expression "FUN_00117130(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) })) (expression_statement "FUN_00117080(param_1[2]);" (call_expression "FUN_00117080(param_1[2])" identifier (argument_list "(param_1[2])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 2:" case number_literal :) (case_statement "case 6:" case number_literal :) (case_statement "case 7:" case number_literal :) (case_statement "case 9:" case number_literal :) (case_statement "case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (if_statement "if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;" if (parenthesized_expression "((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0))" ( (binary_expression "(param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(long *)(param_3 + 0x38) != 0)" ( (binary_expression "*(long *)(param_3 + 0x38) != 0" (pointer_expression "*(long *)(param_3 + 0x38)" * (cast_expression "(long *)(param_3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) != number_literal) ))) )) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (labeled_statement "LAB_00119706:\n      FUN_00117130(param_3);" statement_identifier : (expression_statement "FUN_00117130(param_3);" (call_expression "FUN_00117130(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;)) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" case number_literal : (if_statement "if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" if (parenthesized_expression "((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0))" ( (binary_expression "(param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)" (parenthesized_expression "(param_1[4] == 0)" ( (binary_expression "param_1[4] == 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1[4] + 0x18) == 0)" ( (binary_expression "*(int *)(param_1[4] + 0x18) == 0" (pointer_expression "*(int *)(param_1[4] + 0x18)" * (cast_expression "(int *)(param_1[4] + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[4] + 0x18)" ( (binary_expression "param_1[4] + 0x18" (subscript_expression "param_1[4]" identifier [ number_literal ]) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" { (expression_statement "lVar3 = FUN_00116e20(param_1[2],0,1);" (assignment_expression "lVar3 = FUN_00116e20(param_1[2],0,1)" identifier = (call_expression "FUN_00116e20(param_1[2],0,1)" identifier (argument_list "(param_1[2],0,1)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , number_literal , number_literal )))) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x58) = param_1[3];" (assignment_expression "*(undefined8 *)(lVar3 + 0x58) = param_1[3]" (pointer_expression "*(undefined8 *)(lVar3 + 0x58)" * (cast_expression "(undefined8 *)(lVar3 + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x58)" ( (binary_expression "lVar3 + 0x58" identifier + number_literal) )))) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) (if_statement "if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }" if (parenthesized_expression "(*(long *)(lVar3 + 0x38) == 0)" ( (binary_expression "*(long *)(lVar3 + 0x38) == 0" (pointer_expression "*(long *)(lVar3 + 0x38)" * (cast_expression "(long *)(lVar3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x38)" ( (binary_expression "lVar3 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }" { (expression_statement "FUN_00117130(lVar3);" (call_expression "FUN_00117130(lVar3)" identifier (argument_list "(lVar3)" ( identifier ))) ;) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) })) }))) (case_statement "default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;" default : (labeled_statement "switchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;" statement_identifier : (expression_statement "DAT_00182618 = lVar4;" (assignment_expression "DAT_00182618 = lVar4" identifier = identifier) ;)) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;" case number_literal : (if_statement "if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" if (parenthesized_expression "(((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0))" ( (binary_expression "((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)" (parenthesized_expression "((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1))" ( (binary_expression "(param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)" (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1[10] + 0x18) != 1)" ( (binary_expression "*(int *)(param_1[10] + 0x18) != 1" (pointer_expression "*(int *)(param_1[10] + 0x18)" * (cast_expression "(int *)(param_1[10] + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + 0x18)" ( (binary_expression "param_1[10] + 0x18" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(param_1 + 3) != 0)" ( (binary_expression "*(int *)(param_1 + 3) != 0" (pointer_expression "*(int *)(param_1 + 3)" * (cast_expression "(int *)(param_1 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }" { (expression_statement "FUN_00119290(param_1,FUN_00117e70,param_3);" (call_expression "FUN_00119290(param_1,FUN_00117e70,param_3)" identifier (argument_list "(param_1,FUN_00117e70,param_3)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" else (compound_statement "{\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" { (expression_statement "FUN_00119290(param_1,FUN_00115330,param_3);" (call_expression "FUN_00119290(param_1,FUN_00115330,param_3)" identifier (argument_list "(param_1,FUN_00115330,param_3)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }" if (parenthesized_expression "(param_1[0xe] != 0)" ( (binary_expression "param_1[0xe] != 0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }" { (expression_statement "FUN_00118100(param_1,param_1[0xe],param_3);" (call_expression "FUN_00118100(param_1,param_1[0xe],param_3)" identifier (argument_list "(param_1,param_1[0xe],param_3)" ( identifier , (subscript_expression "param_1[0xe]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = number_literal) ;) })) }))) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) (if_statement "if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }" if (parenthesized_expression "(DAT_00182618 == 0)" ( (binary_expression "DAT_00182618 == 0" identifier == number_literal) )) (compound_statement "{\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }" { (for_statement "for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }" for ( (assignment_expression "puVar2 = (undefined8 *)param_1[4]" identifier = (cast_expression "(undefined8 *)param_1[4]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ; (comma_expression "lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) , (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ; (assignment_expression "puVar2 = (undefined8 *)*puVar2" identifier = (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ) (compound_statement "{\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }" { (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar9 = (byte *)puVar2[1] == (byte *)0x0;" (assignment_expression "bVar9 = (byte *)puVar2[1] == (byte *)0x0" identifier = (binary_expression "(byte *)puVar2[1] == (byte *)0x0" (cast_expression "(byte *)puVar2[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ])) == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }" { (expression_statement "lVar4 = 7;" (assignment_expression "lVar4 = 7" identifier = number_literal) ;) (expression_statement "pbVar6 = (byte *)puVar2[1];" (assignment_expression "pbVar6 = (byte *)puVar2[1]" identifier = (cast_expression "(byte *)puVar2[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar7 = (byte *)"COMMON";" (assignment_expression "pbVar7 = (byte *)"COMMON"" identifier = (cast_expression "(byte *)"COMMON"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""COMMON"" " string_content "))) ;) (do_statement "do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);" do (compound_statement "{\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            }" { (if_statement "if (lVar4 == 0) break;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = lVar4 + -1;" (assignment_expression "lVar4 = lVar4 + -1" identifier = (binary_expression "lVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "lVar4 = param_3;" (assignment_expression "lVar4 = param_3" identifier = identifier) ;) (if_statement "if ((!bVar8 && !bVar9) == bVar8) break;" if (parenthesized_expression "((!bVar8 && !bVar9) == bVar8)" ( (binary_expression "(!bVar8 && !bVar9) == bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier) )) (break_statement "break;" break ;)) })) })) })) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (case_statement "case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;" case number_literal : (expression_statement "FUN_00117080(param_1[3]);" (call_expression "FUN_00117080(param_1[3])" identifier (argument_list "(param_1[3])" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) ))) ;) (if_statement "if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" if (parenthesized_expression "(*(int *)(param_3 + 0x8c) == 2)" ( (binary_expression "*(int *)(param_3 + 0x8c) == 2" (pointer_expression "*(int *)(param_3 + 0x8c)" * (cast_expression "(int *)(param_3 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x8c)" ( (binary_expression "param_3 + 0x8c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }" { (expression_statement "uVar5 = 0x300;" (assignment_expression "uVar5 = 0x300" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5)" ( (binary_expression "*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(DAT_00182db0 + 8) + 8)" * (cast_expression "(int *)(*(long *)(DAT_00182db0 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(DAT_00182db0 + 8) + 8)" ( (binary_expression "*(long *)(DAT_00182db0 + 8) + 8" (pointer_expression "*(long *)(DAT_00182db0 + 8)" * (cast_expression "(long *)(DAT_00182db0 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00182db0 + 8)" ( (binary_expression "DAT_00182db0 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          uVar5 = 0x201;\n        }" { (expression_statement "uVar5 = 0x201;" (assignment_expression "uVar5 = 0x201" identifier = number_literal) ;) })) }) (else_clause "else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" else (compound_statement "{\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" { (expression_statement "uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;" (assignment_expression "uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100" identifier = (binary_expression "(uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100" (binary_expression "(uint)(*(int *)(param_3 + 0x8c) != 3) * 3" (call_expression "(uint)(*(int *)(param_3 + 0x8c) != 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_3 + 0x8c) != 3)" ( (binary_expression "*(int *)(param_3 + 0x8c) != 3" (pointer_expression "*(int *)(param_3 + 0x8c)" * (cast_expression "(int *)(param_3 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x8c)" ( (binary_expression "param_3 + 0x8c" identifier + number_literal) )))) != number_literal) ))) * number_literal) + number_literal)) ;) }))) (if_statement "if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;" if (parenthesized_expression "(*(long *)(param_3 + 0x38) == 0)" ( (binary_expression "*(long *)(param_3 + 0x38) == 0" (pointer_expression "*(long *)(param_3 + 0x38)" * (cast_expression "(long *)(param_3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00119706;" goto statement_identifier ;)) (expression_statement "puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);" (assignment_expression "puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20)" identifier = (cast_expression "(uint *)(*(long *)(param_3 + 0x38) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x38) + 0x20)" ( (binary_expression "*(long *)(param_3 + 0x38) + 0x20" (pointer_expression "*(long *)(param_3 + 0x38)" * (cast_expression "(long *)(param_3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 | uVar5;" (assignment_expression "*puVar1 = *puVar1 | uVar5" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | uVar5" (pointer_expression "*puVar1" * identifier) | identifier)) ;) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (case_statement "case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (expression_statement "param_2 = param_1[2];" (assignment_expression "param_2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (expression_statement "FUN_00119520(param_1[2],param_2,param_3);" (call_expression "FUN_00119520(param_1[2],param_2,param_3)" identifier (argument_list "(param_1[2],param_2,param_3)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , identifier , identifier ))) ;) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;" case number_literal : (expression_statement "FUN_00119520(DAT_00182d20,param_2,param_3);" (call_expression "FUN_00119520(DAT_00182d20,param_2,param_3)" identifier (argument_list "(DAT_00182d20,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;)) })) (if_statement "if (param_1 == (undefined8 *)0x0) {\n      return;\n    }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void map_input_to_output_sections\n               (lang_statement_union_type *s,char *target,lang_output_section_statement_type *os)\n\n{\n  flagword *pfVar1;\n  lang_statement_union *plVar2;\n  lang_output_section_statement_type *plVar3;\n  lang_output_section_statement_type *s_00;\n  long lVar4;\n  uint flags;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if (s == (lang_statement_union_type *)0x0) {\n    return;\n  }\n  do {\n    plVar3 = default_common_section;\n    switch(*(statement_enum *)((long)&s->header + 8)) {\n    case lang_output_section_statement_enum:\n      if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_assignment_statement_enum:\n      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }\n      exp_init_os((etree_type *)(s->output_section_statement).children.head);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_input_statement_enum:\n    case lang_object_symbols_statement_enum:\n    case lang_fill_statement_enum:\n    case lang_reloc_statement_enum:\n    case lang_padding_statement_enum:\n      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;\n      flags = 0;\nLAB_00119706:\n      init_os(os,flags);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_address_statement_enum:\n      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      default_common_section = plVar3;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_wild_statement_enum:\n      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }\n      plVar3 = default_common_section;\n      if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case lang_data_statement_enum:\n      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));\n      if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }\n      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;\n      pfVar1 = &os->bfd_section->flags;\n      *pfVar1 = *pfVar1 | flags;\n      plVar3 = default_common_section;\n      goto switchD_00119564_caseD_5;\n    case lang_target_statement_enum:\n      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_group_statement_enum:\n      map_input_to_output_sections((s->output_section_statement).children.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_constructors_statement_enum:\n      map_input_to_output_sections(constructor_list.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n    }\n    if (s == (lang_statement_union *)0x0) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void map_input_to_output_sections\n               (lang_statement_union_type *s,char *target,lang_output_section_statement_type *os)\n\n{\n  flagword *pfVar1;\n  lang_statement_union *plVar2;\n  lang_output_section_statement_type *plVar3;\n  lang_output_section_statement_type *s_00;\n  long lVar4;\n  uint flags;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if (s == (lang_statement_union_type *)0x0) {\n    return;\n  }\n  do {\n    plVar3 = default_common_section;\n    switch(*(statement_enum *)((long)&s->header + 8)) {\n    case lang_output_section_statement_enum:\n      if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_assignment_statement_enum:\n      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }\n      exp_init_os((etree_type *)(s->output_section_statement).children.head);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_input_statement_enum:\n    case lang_object_symbols_statement_enum:\n    case lang_fill_statement_enum:\n    case lang_reloc_statement_enum:\n    case lang_padding_statement_enum:\n      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;\n      flags = 0;\nLAB_00119706:\n      init_os(os,flags);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_address_statement_enum:\n      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      default_common_section = plVar3;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_wild_statement_enum:\n      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }\n      plVar3 = default_common_section;\n      if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case lang_data_statement_enum:\n      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));\n      if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }\n      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;\n      pfVar1 = &os->bfd_section->flags;\n      *pfVar1 = *pfVar1 | flags;\n      plVar3 = default_common_section;\n      goto switchD_00119564_caseD_5;\n    case lang_target_statement_enum:\n      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_group_statement_enum:\n      map_input_to_output_sections((s->output_section_statement).children.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_constructors_statement_enum:\n      map_input_to_output_sections(constructor_list.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n    }\n    if (s == (lang_statement_union *)0x0) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "map_input_to_output_sections\n               (lang_statement_union_type *s,char *target,lang_output_section_statement_type *os)" identifier (parameter_list "(lang_statement_union_type *s,char *target,lang_output_section_statement_type *os)" ( (parameter_declaration "lang_statement_union_type *s" type_identifier (pointer_declarator "*s" * identifier)) , (parameter_declaration "char *target" primitive_type (pointer_declarator "*target" * identifier)) , (parameter_declaration "lang_output_section_statement_type *os" type_identifier (pointer_declarator "*os" * identifier)) ))) (compound_statement "{\n  flagword *pfVar1;\n  lang_statement_union *plVar2;\n  lang_output_section_statement_type *plVar3;\n  lang_output_section_statement_type *s_00;\n  long lVar4;\n  uint flags;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if (s == (lang_statement_union_type *)0x0) {\n    return;\n  }\n  do {\n    plVar3 = default_common_section;\n    switch(*(statement_enum *)((long)&s->header + 8)) {\n    case lang_output_section_statement_enum:\n      if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_assignment_statement_enum:\n      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }\n      exp_init_os((etree_type *)(s->output_section_statement).children.head);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_input_statement_enum:\n    case lang_object_symbols_statement_enum:\n    case lang_fill_statement_enum:\n    case lang_reloc_statement_enum:\n    case lang_padding_statement_enum:\n      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;\n      flags = 0;\nLAB_00119706:\n      init_os(os,flags);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_address_statement_enum:\n      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      default_common_section = plVar3;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_wild_statement_enum:\n      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }\n      plVar3 = default_common_section;\n      if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case lang_data_statement_enum:\n      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));\n      if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }\n      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;\n      pfVar1 = &os->bfd_section->flags;\n      *pfVar1 = *pfVar1 | flags;\n      plVar3 = default_common_section;\n      goto switchD_00119564_caseD_5;\n    case lang_target_statement_enum:\n      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_group_statement_enum:\n      map_input_to_output_sections((s->output_section_statement).children.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_constructors_statement_enum:\n      map_input_to_output_sections(constructor_list.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n    }\n    if (s == (lang_statement_union *)0x0) {\n      return;\n    }\n  } while( true );\n}" { (declaration "flagword *pfVar1;" type_identifier (pointer_declarator "*pfVar1" * identifier) ;) (declaration "lang_statement_union *plVar2;" type_identifier (pointer_declarator "*plVar2" * identifier) ;) (declaration "lang_output_section_statement_type *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "lang_output_section_statement_type *s_00;" type_identifier (pointer_declarator "*s_00" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "uint flags;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (if_statement "if (s == (lang_statement_union_type *)0x0) {\n    return;\n  }" if (parenthesized_expression "(s == (lang_statement_union_type *)0x0)" ( (binary_expression "s == (lang_statement_union_type *)0x0" identifier == (cast_expression "(lang_statement_union_type *)0x0" ( (type_descriptor "lang_statement_union_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    plVar3 = default_common_section;\n    switch(*(statement_enum *)((long)&s->header + 8)) {\n    case lang_output_section_statement_enum:\n      if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_assignment_statement_enum:\n      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }\n      exp_init_os((etree_type *)(s->output_section_statement).children.head);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_input_statement_enum:\n    case lang_object_symbols_statement_enum:\n    case lang_fill_statement_enum:\n    case lang_reloc_statement_enum:\n    case lang_padding_statement_enum:\n      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;\n      flags = 0;\nLAB_00119706:\n      init_os(os,flags);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_address_statement_enum:\n      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      default_common_section = plVar3;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_wild_statement_enum:\n      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }\n      plVar3 = default_common_section;\n      if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case lang_data_statement_enum:\n      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));\n      if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }\n      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;\n      pfVar1 = &os->bfd_section->flags;\n      *pfVar1 = *pfVar1 | flags;\n      plVar3 = default_common_section;\n      goto switchD_00119564_caseD_5;\n    case lang_target_statement_enum:\n      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_group_statement_enum:\n      map_input_to_output_sections((s->output_section_statement).children.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_constructors_statement_enum:\n      map_input_to_output_sections(constructor_list.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n    }\n    if (s == (lang_statement_union *)0x0) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    plVar3 = default_common_section;\n    switch(*(statement_enum *)((long)&s->header + 8)) {\n    case lang_output_section_statement_enum:\n      if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_assignment_statement_enum:\n      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }\n      exp_init_os((etree_type *)(s->output_section_statement).children.head);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_input_statement_enum:\n    case lang_object_symbols_statement_enum:\n    case lang_fill_statement_enum:\n    case lang_reloc_statement_enum:\n    case lang_padding_statement_enum:\n      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;\n      flags = 0;\nLAB_00119706:\n      init_os(os,flags);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_address_statement_enum:\n      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      default_common_section = plVar3;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_wild_statement_enum:\n      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }\n      plVar3 = default_common_section;\n      if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case lang_data_statement_enum:\n      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));\n      if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }\n      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;\n      pfVar1 = &os->bfd_section->flags;\n      *pfVar1 = *pfVar1 | flags;\n      plVar3 = default_common_section;\n      goto switchD_00119564_caseD_5;\n    case lang_target_statement_enum:\n      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_group_statement_enum:\n      map_input_to_output_sections((s->output_section_statement).children.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_constructors_statement_enum:\n      map_input_to_output_sections(constructor_list.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n    }\n    if (s == (lang_statement_union *)0x0) {\n      return;\n    }\n  }" { (expression_statement "plVar3 = default_common_section;" (assignment_expression "plVar3 = default_common_section" identifier = identifier) ;) (switch_statement "switch(*(statement_enum *)((long)&s->header + 8)) {\n    case lang_output_section_statement_enum:\n      if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_assignment_statement_enum:\n      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }\n      exp_init_os((etree_type *)(s->output_section_statement).children.head);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_input_statement_enum:\n    case lang_object_symbols_statement_enum:\n    case lang_fill_statement_enum:\n    case lang_reloc_statement_enum:\n    case lang_padding_statement_enum:\n      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;\n      flags = 0;\nLAB_00119706:\n      init_os(os,flags);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_address_statement_enum:\n      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      default_common_section = plVar3;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_wild_statement_enum:\n      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }\n      plVar3 = default_common_section;\n      if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case lang_data_statement_enum:\n      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));\n      if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }\n      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;\n      pfVar1 = &os->bfd_section->flags;\n      *pfVar1 = *pfVar1 | flags;\n      plVar3 = default_common_section;\n      goto switchD_00119564_caseD_5;\n    case lang_target_statement_enum:\n      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_group_statement_enum:\n      map_input_to_output_sections((s->output_section_statement).children.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_constructors_statement_enum:\n      map_input_to_output_sections(constructor_list.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n    }" switch (parenthesized_expression "(*(statement_enum *)((long)&s->header + 8))" ( (pointer_expression "*(statement_enum *)((long)&s->header + 8)" * (cast_expression "(statement_enum *)((long)&s->header + 8)" ( (type_descriptor "statement_enum *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&s->header + 8)" ( (binary_expression "(long)&s->header + 8" (cast_expression "(long)&s->header" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&s->header" & (field_expression "s->header" identifier -> field_identifier))) + number_literal) )))) )) (compound_statement "{\n    case lang_output_section_statement_enum:\n      if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_assignment_statement_enum:\n      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }\n      exp_init_os((etree_type *)(s->output_section_statement).children.head);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_input_statement_enum:\n    case lang_object_symbols_statement_enum:\n    case lang_fill_statement_enum:\n    case lang_reloc_statement_enum:\n    case lang_padding_statement_enum:\n      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;\n      flags = 0;\nLAB_00119706:\n      init_os(os,flags);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_address_statement_enum:\n      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      default_common_section = plVar3;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_wild_statement_enum:\n      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }\n      plVar3 = default_common_section;\n      if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case lang_data_statement_enum:\n      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));\n      if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }\n      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;\n      pfVar1 = &os->bfd_section->flags;\n      *pfVar1 = *pfVar1 | flags;\n      plVar3 = default_common_section;\n      goto switchD_00119564_caseD_5;\n    case lang_target_statement_enum:\n      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_group_statement_enum:\n      map_input_to_output_sections((s->output_section_statement).children.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;\n    case lang_constructors_statement_enum:\n      map_input_to_output_sections(constructor_list.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n    }" { (case_statement "case lang_output_section_statement_enum:\n      if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;" case identifier : (if_statement "if ((s->output_section_statement).constraint != 0) {\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }" if (parenthesized_expression "((s->output_section_statement).constraint != 0)" ( (binary_expression "(s->output_section_statement).constraint != 0" (field_expression "(s->output_section_statement).constraint" (parenthesized_expression "(s->output_section_statement)" ( (field_expression "s->output_section_statement" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n        if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }\n        goto switchD_00119564_caseD_5;\n      }" { (if_statement "if ((s->output_section_statement).constraint - 0x17cU < 2) {\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }" if (parenthesized_expression "((s->output_section_statement).constraint - 0x17cU < 2)" ( (binary_expression "(s->output_section_statement).constraint - 0x17cU < 2" (binary_expression "(s->output_section_statement).constraint - 0x17cU" (field_expression "(s->output_section_statement).constraint" (parenthesized_expression "(s->output_section_statement)" ( (field_expression "s->output_section_statement" identifier -> field_identifier) )) . field_identifier) - number_literal) < number_literal) )) (compound_statement "{\n          *(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;\n          check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);\n          if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;\n          (s->output_section_statement).constraint = -1;\n          plVar3 = default_common_section;\n        }" { (expression_statement "*(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4;" (assignment_expression "*(byte *)((long)s + 0x90) = *(byte *)((long)s + 0x90) | 4" (pointer_expression "*(byte *)((long)s + 0x90)" * (cast_expression "(byte *)((long)s + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)s + 0x90)" ( (binary_expression "(long)s + 0x90" (cast_expression "(long)s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)s + 0x90) | 4" (pointer_expression "*(byte *)((long)s + 0x90)" * (cast_expression "(byte *)((long)s + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)s + 0x90)" ( (binary_expression "(long)s + 0x90" (cast_expression "(long)s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement);" (call_expression "check_input_sections\n                    ((s->output_section_statement).children.head,&s->output_section_statement)" identifier (argument_list "((s->output_section_statement).children.head,&s->output_section_statement)" ( (field_expression "(s->output_section_statement).children.head" (field_expression "(s->output_section_statement).children" (parenthesized_expression "(s->output_section_statement)" ( (field_expression "s->output_section_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (pointer_expression "&s->output_section_statement" & (field_expression "s->output_section_statement" identifier -> field_identifier)) ))) ;) (if_statement "if ((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)) goto LAB_00119800;" if (parenthesized_expression "((bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c))" ( (binary_expression "(bool)(*(byte *)((long)s + 0x90) >> 2 & 1) ==\n              ((s->output_section_statement).constraint == 0x17c)" (cast_expression "(bool)(*(byte *)((long)s + 0x90) >> 2 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(*(byte *)((long)s + 0x90) >> 2 & 1)" ( (binary_expression "*(byte *)((long)s + 0x90) >> 2 & 1" (binary_expression "*(byte *)((long)s + 0x90) >> 2" (pointer_expression "*(byte *)((long)s + 0x90)" * (cast_expression "(byte *)((long)s + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)s + 0x90)" ( (binary_expression "(long)s + 0x90" (cast_expression "(long)s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal) ))) == (parenthesized_expression "((s->output_section_statement).constraint == 0x17c)" ( (binary_expression "(s->output_section_statement).constraint == 0x17c" (field_expression "(s->output_section_statement).constraint" (parenthesized_expression "(s->output_section_statement)" ( (field_expression "s->output_section_statement" identifier -> field_identifier) )) . field_identifier) == number_literal) ))) )) (goto_statement "goto LAB_00119800;" goto statement_identifier ;)) (expression_statement "(s->output_section_statement).constraint = -1;" (assignment_expression "(s->output_section_statement).constraint = -1" (field_expression "(s->output_section_statement).constraint" (parenthesized_expression "(s->output_section_statement)" ( (field_expression "s->output_section_statement" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "plVar3 = default_common_section;" (assignment_expression "plVar3 = default_common_section" identifier = identifier) ;) })) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;) })) (labeled_statement "LAB_00119800:\n      map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);" statement_identifier : (expression_statement "map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement);" (call_expression "map_input_to_output_sections\n                ((s->output_section_statement).children.head,target,&s->output_section_statement)" identifier (argument_list "((s->output_section_statement).children.head,target,&s->output_section_statement)" ( (field_expression "(s->output_section_statement).children.head" (field_expression "(s->output_section_statement).children" (parenthesized_expression "(s->output_section_statement)" ( (field_expression "s->output_section_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier) , identifier , (pointer_expression "&s->output_section_statement" & (field_expression "s->output_section_statement" identifier -> field_identifier)) ))) ;)) (expression_statement "s = ((lang_statement_header_type *)&(s->header).next)->next;" (assignment_expression "s = ((lang_statement_header_type *)&(s->header).next)->next" identifier = (field_expression "((lang_statement_header_type *)&(s->header).next)->next" (parenthesized_expression "((lang_statement_header_type *)&(s->header).next)" ( (cast_expression "(lang_statement_header_type *)&(s->header).next" ( (type_descriptor "lang_statement_header_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->header).next" & (field_expression "(s->header).next" (parenthesized_expression "(s->header)" ( (field_expression "s->header" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case lang_assignment_statement_enum:\n      if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }\n      exp_init_os((etree_type *)(s->output_section_statement).children.head);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;" case identifier : (if_statement "if ((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))\n      {\n        init_os(os,0);\n      }" if (parenthesized_expression "((os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0))" ( (binary_expression "(os != (lang_output_section_statement_type *)0x0) && (os->bfd_section == (asection *)0x0)" (parenthesized_expression "(os != (lang_output_section_statement_type *)0x0)" ( (binary_expression "os != (lang_output_section_statement_type *)0x0" identifier != (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(os->bfd_section == (asection *)0x0)" ( (binary_expression "os->bfd_section == (asection *)0x0" (field_expression "os->bfd_section" identifier -> field_identifier) == (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        init_os(os,0);\n      }" { (expression_statement "init_os(os,0);" (call_expression "init_os(os,0)" identifier (argument_list "(os,0)" ( identifier , number_literal ))) ;) })) (expression_statement "exp_init_os((etree_type *)(s->output_section_statement).children.head);" (call_expression "exp_init_os((etree_type *)(s->output_section_statement).children.head)" identifier (argument_list "((etree_type *)(s->output_section_statement).children.head)" ( (cast_expression "(etree_type *)(s->output_section_statement).children.head" ( (type_descriptor "etree_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(s->output_section_statement).children.head" (field_expression "(s->output_section_statement).children" (parenthesized_expression "(s->output_section_statement)" ( (field_expression "s->output_section_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ))) ;) (expression_statement "s = ((lang_statement_header_type *)&(s->header).next)->next;" (assignment_expression "s = ((lang_statement_header_type *)&(s->header).next)->next" identifier = (field_expression "((lang_statement_header_type *)&(s->header).next)->next" (parenthesized_expression "((lang_statement_header_type *)&(s->header).next)" ( (cast_expression "(lang_statement_header_type *)&(s->header).next" ( (type_descriptor "lang_statement_header_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->header).next" & (field_expression "(s->header).next" (parenthesized_expression "(s->header)" ( (field_expression "s->header" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case lang_input_statement_enum:" case identifier :) (case_statement "case lang_object_symbols_statement_enum:" case identifier :) (case_statement "case lang_fill_statement_enum:" case identifier :) (case_statement "case lang_reloc_statement_enum:" case identifier :) (case_statement "case lang_padding_statement_enum:\n      if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;\n      flags = 0;\nLAB_00119706:\n      init_os(os,flags);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;" case identifier : (if_statement "if ((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))\n      goto switchD_00119564_caseD_5;" if (parenthesized_expression "((os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0))" ( (binary_expression "(os == (lang_output_section_statement_type *)0x0) || (os->bfd_section != (asection *)0x0)" (parenthesized_expression "(os == (lang_output_section_statement_type *)0x0)" ( (binary_expression "os == (lang_output_section_statement_type *)0x0" identifier == (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(os->bfd_section != (asection *)0x0)" ( (binary_expression "os->bfd_section != (asection *)0x0" (field_expression "os->bfd_section" identifier -> field_identifier) != (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (expression_statement "flags = 0;" (assignment_expression "flags = 0" identifier = number_literal) ;) (labeled_statement "LAB_00119706:\n      init_os(os,flags);" statement_identifier : (expression_statement "init_os(os,flags);" (call_expression "init_os(os,flags)" identifier (argument_list "(os,flags)" ( identifier , identifier ))) ;)) (expression_statement "s = ((lang_statement_header_type *)&(s->header).next)->next;" (assignment_expression "s = ((lang_statement_header_type *)&(s->header).next)->next" identifier = (field_expression "((lang_statement_header_type *)&(s->header).next)->next" (parenthesized_expression "((lang_statement_header_type *)&(s->header).next)" ( (cast_expression "(lang_statement_header_type *)&(s->header).next" ( (type_descriptor "lang_statement_header_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->header).next" & (field_expression "(s->header).next" (parenthesized_expression "(s->header)" ( (field_expression "s->header" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case lang_address_statement_enum:\n      if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }" case identifier : (if_statement "if (((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)) {\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }" if (parenthesized_expression "(((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none))" ( (binary_expression "((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0) ||\n         ((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)" (parenthesized_expression "((wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0)" ( (binary_expression "(wildcard_list *)(s->address_statement).segment == (wildcard_list *)0x0" (cast_expression "(wildcard_list *)(s->address_statement).segment" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(s->address_statement).segment" (parenthesized_expression "(s->address_statement)" ( (field_expression "s->address_statement" identifier -> field_identifier) )) . field_identifier)) == (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((((wildcard_list *)(s->address_statement).segment)->spec).sorted == none)" ( (binary_expression "(((wildcard_list *)(s->address_statement).segment)->spec).sorted == none" (field_expression "(((wildcard_list *)(s->address_statement).segment)->spec).sorted" (parenthesized_expression "(((wildcard_list *)(s->address_statement).segment)->spec)" ( (field_expression "((wildcard_list *)(s->address_statement).segment)->spec" (parenthesized_expression "((wildcard_list *)(s->address_statement).segment)" ( (cast_expression "(wildcard_list *)(s->address_statement).segment" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(s->address_statement).segment" (parenthesized_expression "(s->address_statement)" ( (field_expression "s->address_statement" identifier -> field_identifier) )) . field_identifier)) )) -> field_identifier) )) . field_identifier) == identifier) ))) )) (compound_statement "{\n        s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);\n        s_00->addr_tree = (s->data_statement).exp;\n        plVar3 = default_common_section;\n        if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }\n      }" { (expression_statement "s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1);" (assignment_expression "s_00 = lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1)" identifier = (call_expression "lang_output_section_statement_lookup\n                         ((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1)" identifier (argument_list "((char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head,\n                          0,1)" ( (cast_expression "(char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "((lang_statement_list_type *)&(s->wild_statement).filename)->head" (parenthesized_expression "((lang_statement_list_type *)&(s->wild_statement).filename)" ( (cast_expression "(lang_statement_list_type *)&(s->wild_statement).filename" ( (type_descriptor "lang_statement_list_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->wild_statement).filename" & (field_expression "(s->wild_statement).filename" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier)) , number_literal , number_literal )))) ;) (expression_statement "s_00->addr_tree = (s->data_statement).exp;" (assignment_expression "s_00->addr_tree = (s->data_statement).exp" (field_expression "s_00->addr_tree" identifier -> field_identifier) = (field_expression "(s->data_statement).exp" (parenthesized_expression "(s->data_statement)" ( (field_expression "s->data_statement" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "plVar3 = default_common_section;" (assignment_expression "plVar3 = default_common_section" identifier = identifier) ;) (if_statement "if (s_00->bfd_section == (asection *)0x0) {\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }" if (parenthesized_expression "(s_00->bfd_section == (asection *)0x0)" ( (binary_expression "s_00->bfd_section == (asection *)0x0" (field_expression "s_00->bfd_section" identifier -> field_identifier) == (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          init_os(s_00,0);\n          plVar3 = default_common_section;\n        }" { (expression_statement "init_os(s_00,0);" (call_expression "init_os(s_00,0)" identifier (argument_list "(s_00,0)" ( identifier , number_literal ))) ;) (expression_statement "plVar3 = default_common_section;" (assignment_expression "plVar3 = default_common_section" identifier = identifier) ;) })) }))) (case_statement "default:\nswitchD_00119564_caseD_5:\n      default_common_section = plVar3;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;" default : (labeled_statement "switchD_00119564_caseD_5:\n      default_common_section = plVar3;" statement_identifier : (expression_statement "default_common_section = plVar3;" (assignment_expression "default_common_section = plVar3" identifier = identifier) ;)) (expression_statement "s = ((lang_statement_header_type *)&(s->header).next)->next;" (assignment_expression "s = ((lang_statement_header_type *)&(s->header).next)->next" identifier = (field_expression "((lang_statement_header_type *)&(s->header).next)->next" (parenthesized_expression "((lang_statement_header_type *)&(s->header).next)" ( (cast_expression "(lang_statement_header_type *)&(s->header).next" ( (type_descriptor "lang_statement_header_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->header).next" & (field_expression "(s->header).next" (parenthesized_expression "(s->header)" ( (field_expression "s->header" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case lang_wild_statement_enum:\n      if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }\n      plVar3 = default_common_section;\n      if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;" case identifier : (if_statement "if ((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)) {\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }\n      else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }" if (parenthesized_expression "((((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0))" ( (binary_expression "(((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)) ||\n         ((s->wild_statement).filenames_sorted != 0)" (parenthesized_expression "(((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name))" ( (binary_expression "((s->wild_statement).handler_data[0] == (wildcard_list *)0x0) ||\n          (((s->wild_statement).handler_data[0]->spec).sorted != by_name)" (parenthesized_expression "((s->wild_statement).handler_data[0] == (wildcard_list *)0x0)" ( (binary_expression "(s->wild_statement).handler_data[0] == (wildcard_list *)0x0" (subscript_expression "(s->wild_statement).handler_data[0]" (field_expression "(s->wild_statement).handler_data" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) == (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(((s->wild_statement).handler_data[0]->spec).sorted != by_name)" ( (binary_expression "((s->wild_statement).handler_data[0]->spec).sorted != by_name" (field_expression "((s->wild_statement).handler_data[0]->spec).sorted" (parenthesized_expression "((s->wild_statement).handler_data[0]->spec)" ( (field_expression "(s->wild_statement).handler_data[0]->spec" (subscript_expression "(s->wild_statement).handler_data[0]" (field_expression "(s->wild_statement).handler_data" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) -> field_identifier) )) . field_identifier) != identifier) ))) )) || (parenthesized_expression "((s->wild_statement).filenames_sorted != 0)" ( (binary_expression "(s->wild_statement).filenames_sorted != 0" (field_expression "(s->wild_statement).filenames_sorted" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier) != number_literal) ))) )) (compound_statement "{\n        walk_wild(&s->wild_statement,output_section_callback,os);\n      }" { (expression_statement "walk_wild(&s->wild_statement,output_section_callback,os);" (call_expression "walk_wild(&s->wild_statement,output_section_callback,os)" identifier (argument_list "(&s->wild_statement,output_section_callback,os)" ( (pointer_expression "&s->wild_statement" & (field_expression "s->wild_statement" identifier -> field_identifier)) , identifier , identifier ))) ;) }) (else_clause "else {\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }" else (compound_statement "{\n        walk_wild(&s->wild_statement,output_section_callback_fast,os);\n        if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }\n      }" { (expression_statement "walk_wild(&s->wild_statement,output_section_callback_fast,os);" (call_expression "walk_wild(&s->wild_statement,output_section_callback_fast,os)" identifier (argument_list "(&s->wild_statement,output_section_callback_fast,os)" ( (pointer_expression "&s->wild_statement" & (field_expression "s->wild_statement" identifier -> field_identifier)) , identifier , identifier ))) ;) (if_statement "if ((s->wild_statement).tree != (lang_section_bst_type *)0x0) {\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }" if (parenthesized_expression "((s->wild_statement).tree != (lang_section_bst_type *)0x0)" ( (binary_expression "(s->wild_statement).tree != (lang_section_bst_type *)0x0" (field_expression "(s->wild_statement).tree" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier) != (cast_expression "(lang_section_bst_type *)0x0" ( (type_descriptor "lang_section_bst_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);\n          (s->wild_statement).tree = (lang_section_bst_type *)0x0;\n        }" { (expression_statement "output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os);" (call_expression "output_section_callback_tree_to_list(&s->wild_statement,(s->wild_statement).tree,os)" identifier (argument_list "(&s->wild_statement,(s->wild_statement).tree,os)" ( (pointer_expression "&s->wild_statement" & (field_expression "s->wild_statement" identifier -> field_identifier)) , (field_expression "(s->wild_statement).tree" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier) , identifier ))) ;) (expression_statement "(s->wild_statement).tree = (lang_section_bst_type *)0x0;" (assignment_expression "(s->wild_statement).tree = (lang_section_bst_type *)0x0" (field_expression "(s->wild_statement).tree" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(lang_section_bst_type *)0x0" ( (type_descriptor "lang_section_bst_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))) (expression_statement "plVar3 = default_common_section;" (assignment_expression "plVar3 = default_common_section" identifier = identifier) ;) (if_statement "if (default_common_section == (lang_output_section_statement_type *)0x0) {\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }" if (parenthesized_expression "(default_common_section == (lang_output_section_statement_type *)0x0)" ( (binary_expression "default_common_section == (lang_output_section_statement_type *)0x0" identifier == (cast_expression "(lang_output_section_statement_type *)0x0" ( (type_descriptor "lang_output_section_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }\n      }" { (for_statement "for (plVar2 = (lang_statement_union *)(s->wild_statement).section_list;\n            plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0;\n            plVar2 = (plVar2->wild_statement).header.next) {\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }" for ( (assignment_expression "plVar2 = (lang_statement_union *)(s->wild_statement).section_list" identifier = (cast_expression "(lang_statement_union *)(s->wild_statement).section_list" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(s->wild_statement).section_list" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier))) ; (comma_expression "plVar3 = default_common_section, plVar2 != (lang_statement_union *)0x0" (assignment_expression "plVar3 = default_common_section" identifier = identifier) , (binary_expression "plVar2 != (lang_statement_union *)0x0" identifier != (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ; (assignment_expression "plVar2 = (plVar2->wild_statement).header.next" identifier = (field_expression "(plVar2->wild_statement).header.next" (field_expression "(plVar2->wild_statement).header" (parenthesized_expression "(plVar2->wild_statement)" ( (field_expression "plVar2->wild_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ) (compound_statement "{\n          bVar7 = false;\n          bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;\n          if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }\n        }" { (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (expression_statement "bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0;" (assignment_expression "bVar8 = *(byte **)((long)plVar2 + 8) == (byte *)0x0" identifier = (binary_expression "*(byte **)((long)plVar2 + 8) == (byte *)0x0" (pointer_expression "*(byte **)((long)plVar2 + 8)" * (cast_expression "(byte **)((long)plVar2 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)plVar2 + 8)" ( (binary_expression "(long)plVar2 + 8" (cast_expression "(long)plVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar8) {\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }" if (parenthesized_expression "(!bVar8)" ( (unary_expression "!bVar8" ! identifier) )) (compound_statement "{\n            lVar4 = 7;\n            pbVar5 = *(byte **)((long)plVar2 + 8);\n            pbVar6 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);\n            plVar3 = os;\n            if ((!bVar7 && !bVar8) == bVar7) break;\n          }" { (expression_statement "lVar4 = 7;" (assignment_expression "lVar4 = 7" identifier = number_literal) ;) (expression_statement "pbVar5 = *(byte **)((long)plVar2 + 8);" (assignment_expression "pbVar5 = *(byte **)((long)plVar2 + 8)" identifier = (pointer_expression "*(byte **)((long)plVar2 + 8)" * (cast_expression "(byte **)((long)plVar2 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)plVar2 + 8)" ( (binary_expression "(long)plVar2 + 8" (cast_expression "(long)plVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)"COMMON";" (assignment_expression "pbVar6 = (byte *)"COMMON"" identifier = (cast_expression "(byte *)"COMMON"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""COMMON"" " string_content "))) ;) (do_statement "do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            } while (bVar8);" do (compound_statement "{\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar7 = *pbVar5 < *pbVar6;\n              bVar8 = *pbVar5 == *pbVar6;\n              pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;\n              pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;\n            }" { (if_statement "if (lVar4 == 0) break;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = lVar4 + -1;" (assignment_expression "lVar4 = lVar4 + -1" identifier = (binary_expression "lVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = *pbVar5 < *pbVar6;" (assignment_expression "bVar7 = *pbVar5 < *pbVar6" identifier = (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "bVar8 = *pbVar5 == *pbVar6;" (assignment_expression "bVar8 = *pbVar5 == *pbVar6" identifier = (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar9 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar9 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar8)" ( identifier )) ;) (expression_statement "plVar3 = os;" (assignment_expression "plVar3 = os" identifier = identifier) ;) (if_statement "if ((!bVar7 && !bVar8) == bVar7) break;" if (parenthesized_expression "((!bVar7 && !bVar8) == bVar7)" ( (binary_expression "(!bVar7 && !bVar8) == bVar7" (parenthesized_expression "(!bVar7 && !bVar8)" ( (binary_expression "!bVar7 && !bVar8" (unary_expression "!bVar7" ! identifier) && (unary_expression "!bVar8" ! identifier)) )) == identifier) )) (break_statement "break;" break ;)) })) })) })) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (case_statement "case lang_data_statement_enum:\n      exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));\n      if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }\n      if (os->bfd_section == (asection *)0x0) goto LAB_00119706;\n      pfVar1 = &os->bfd_section->flags;\n      *pfVar1 = *pfVar1 | flags;\n      plVar3 = default_common_section;\n      goto switchD_00119564_caseD_5;" case identifier : (expression_statement "exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18));" (call_expression "exp_init_os(*(etree_type **)((long)&s->data_statement + 0x18))" identifier (argument_list "(*(etree_type **)((long)&s->data_statement + 0x18))" ( (pointer_expression "*(etree_type **)((long)&s->data_statement + 0x18)" * (cast_expression "(etree_type **)((long)&s->data_statement + 0x18)" ( (type_descriptor "etree_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)&s->data_statement + 0x18)" ( (binary_expression "(long)&s->data_statement + 0x18" (cast_expression "(long)&s->data_statement" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&s->data_statement" & (field_expression "s->data_statement" identifier -> field_identifier))) + number_literal) )))) ))) ;) (if_statement "if (os->sectype == noload_section) {\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }\n      else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }" if (parenthesized_expression "(os->sectype == noload_section)" ( (binary_expression "os->sectype == noload_section" (field_expression "os->sectype" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        flags = 0x300;\n        if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\n        }\n      }" { (expression_statement "flags = 0x300;" (assignment_expression "flags = 0x300" identifier = number_literal) ;) (if_statement "if ((link_info.output_bfd)->xvec->flavour == bfd_target_elf_flavour) {\n          flags = 0x201;\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 = 0x201;\n        }" { (expression_statement "flags = 0x201;" (assignment_expression "flags = 0x201" identifier = number_literal) ;) })) }) (else_clause "else {\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }" else (compound_statement "{\n        flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;\n      }" { (expression_statement "flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100;" (assignment_expression "flags = (uint)(os->sectype != noalloc_section) * 3 + 0x100" identifier = (binary_expression "(uint)(os->sectype != noalloc_section) * 3 + 0x100" (binary_expression "(uint)(os->sectype != noalloc_section) * 3" (call_expression "(uint)(os->sectype != noalloc_section)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(os->sectype != noalloc_section)" ( (binary_expression "os->sectype != noalloc_section" (field_expression "os->sectype" identifier -> field_identifier) != identifier) ))) * number_literal) + number_literal)) ;) }))) (if_statement "if (os->bfd_section == (asection *)0x0) goto LAB_00119706;" if (parenthesized_expression "(os->bfd_section == (asection *)0x0)" ( (binary_expression "os->bfd_section == (asection *)0x0" (field_expression "os->bfd_section" identifier -> field_identifier) == (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00119706;" goto statement_identifier ;)) (expression_statement "pfVar1 = &os->bfd_section->flags;" (assignment_expression "pfVar1 = &os->bfd_section->flags" identifier = (pointer_expression "&os->bfd_section->flags" & (field_expression "os->bfd_section->flags" (field_expression "os->bfd_section" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "*pfVar1 = *pfVar1 | flags;" (assignment_expression "*pfVar1 = *pfVar1 | flags" (pointer_expression "*pfVar1" * identifier) = (binary_expression "*pfVar1 | flags" (pointer_expression "*pfVar1" * identifier) | identifier)) ;) (expression_statement "plVar3 = default_common_section;" (assignment_expression "plVar3 = default_common_section" identifier = identifier) ;) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (case_statement "case lang_target_statement_enum:\n      target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;" case identifier : (expression_statement "target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head;" (assignment_expression "target = (char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head" identifier = (cast_expression "(char *)((lang_statement_list_type *)&(s->wild_statement).filename)->head" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "((lang_statement_list_type *)&(s->wild_statement).filename)->head" (parenthesized_expression "((lang_statement_list_type *)&(s->wild_statement).filename)" ( (cast_expression "(lang_statement_list_type *)&(s->wild_statement).filename" ( (type_descriptor "lang_statement_list_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->wild_statement).filename" & (field_expression "(s->wild_statement).filename" (parenthesized_expression "(s->wild_statement)" ( (field_expression "s->wild_statement" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier))) ;) (expression_statement "s = ((lang_statement_header_type *)&(s->header).next)->next;" (assignment_expression "s = ((lang_statement_header_type *)&(s->header).next)->next" identifier = (field_expression "((lang_statement_header_type *)&(s->header).next)->next" (parenthesized_expression "((lang_statement_header_type *)&(s->header).next)" ( (cast_expression "(lang_statement_header_type *)&(s->header).next" ( (type_descriptor "lang_statement_header_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->header).next" & (field_expression "(s->header).next" (parenthesized_expression "(s->header)" ( (field_expression "s->header" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case lang_group_statement_enum:\n      map_input_to_output_sections((s->output_section_statement).children.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;\n      break;" case identifier : (expression_statement "map_input_to_output_sections((s->output_section_statement).children.head,target,os);" (call_expression "map_input_to_output_sections((s->output_section_statement).children.head,target,os)" identifier (argument_list "((s->output_section_statement).children.head,target,os)" ( (field_expression "(s->output_section_statement).children.head" (field_expression "(s->output_section_statement).children" (parenthesized_expression "(s->output_section_statement)" ( (field_expression "s->output_section_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier) , identifier , identifier ))) ;) (expression_statement "s = ((lang_statement_header_type *)&(s->header).next)->next;" (assignment_expression "s = ((lang_statement_header_type *)&(s->header).next)->next" identifier = (field_expression "((lang_statement_header_type *)&(s->header).next)->next" (parenthesized_expression "((lang_statement_header_type *)&(s->header).next)" ( (cast_expression "(lang_statement_header_type *)&(s->header).next" ( (type_descriptor "lang_statement_header_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->header).next" & (field_expression "(s->header).next" (parenthesized_expression "(s->header)" ( (field_expression "s->header" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case lang_constructors_statement_enum:\n      map_input_to_output_sections(constructor_list.head,target,os);\n      s = ((lang_statement_header_type *)&(s->header).next)->next;" case identifier : (expression_statement "map_input_to_output_sections(constructor_list.head,target,os);" (call_expression "map_input_to_output_sections(constructor_list.head,target,os)" identifier (argument_list "(constructor_list.head,target,os)" ( (field_expression "constructor_list.head" identifier . field_identifier) , identifier , identifier ))) ;) (expression_statement "s = ((lang_statement_header_type *)&(s->header).next)->next;" (assignment_expression "s = ((lang_statement_header_type *)&(s->header).next)->next" identifier = (field_expression "((lang_statement_header_type *)&(s->header).next)->next" (parenthesized_expression "((lang_statement_header_type *)&(s->header).next)" ( (cast_expression "(lang_statement_header_type *)&(s->header).next" ( (type_descriptor "lang_statement_header_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->header).next" & (field_expression "(s->header).next" (parenthesized_expression "(s->header)" ( (field_expression "s->header" identifier -> field_identifier) )) . field_identifier))) )) -> field_identifier)) ;)) })) (if_statement "if (s == (lang_statement_union *)0x0) {\n      return;\n    }" if (parenthesized_expression "(s == (lang_statement_union *)0x0)" ( (binary_expression "s == (lang_statement_union *)0x0" identifier == (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  long lVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  long lVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2,long param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  long lVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  }" { (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) (switch_statement "switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }" switch (parenthesized_expression "(*(undefined4 *)(param_1 + 1))" ( (pointer_expression "*(undefined4 *)(param_1 + 1)" * (cast_expression "(undefined4 *)(param_1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) )) (compound_statement "{\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }" { (case_statement "case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (if_statement "if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }" if (parenthesized_expression "(*(int *)((long)param_1 + 0x84) != 0)" ( (binary_expression "*(int *)((long)param_1 + 0x84) != 0" (pointer_expression "*(int *)((long)param_1 + 0x84)" * (cast_expression "(int *)((long)param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x84)" ( (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }" { (if_statement "if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }" if (parenthesized_expression "(*(int *)((long)param_1 + 0x84) - 0x17cU < 2)" ( (binary_expression "*(int *)((long)param_1 + 0x84) - 0x17cU < 2" (binary_expression "*(int *)((long)param_1 + 0x84) - 0x17cU" (pointer_expression "*(int *)((long)param_1 + 0x84)" * (cast_expression "(int *)((long)param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x84)" ( (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) - number_literal) < number_literal) )) (compound_statement "{\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }" { (expression_statement "*(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;" (assignment_expression "*(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4" (pointer_expression "*(byte *)(param_1 + 0x12)" * (cast_expression "(byte *)(param_1 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x12) | 4" (pointer_expression "*(byte *)(param_1 + 0x12)" * (cast_expression "(byte *)(param_1 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "FUN_00119480(param_1[2]);" (call_expression "FUN_00119480(param_1[2])" identifier (argument_list "(param_1[2])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) ))) ;) (if_statement "if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;" if (parenthesized_expression "((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c))" ( (binary_expression "(bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)" (cast_expression "(bool)(*(byte *)(param_1 + 0x12) >> 2 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(*(byte *)(param_1 + 0x12) >> 2 & 1)" ( (binary_expression "*(byte *)(param_1 + 0x12) >> 2 & 1" (binary_expression "*(byte *)(param_1 + 0x12) >> 2" (pointer_expression "*(byte *)(param_1 + 0x12)" * (cast_expression "(byte *)(param_1 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) >> number_literal) & number_literal) ))) == (parenthesized_expression "(*(int *)((long)param_1 + 0x84) == 0x17c)" ( (binary_expression "*(int *)((long)param_1 + 0x84) == 0x17c" (pointer_expression "*(int *)((long)param_1 + 0x84)" * (cast_expression "(int *)((long)param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x84)" ( (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) ))) )) (goto_statement "goto LAB_00119800;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x84) = 0xffffffff" (pointer_expression "*(undefined4 *)((long)param_1 + 0x84)" * (cast_expression "(undefined4 *)((long)param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x84)" ( (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) })) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;) })) (labeled_statement "LAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);" statement_identifier : (expression_statement "FUN_00119520(param_1[2],param_2,param_1);" (call_expression "FUN_00119520(param_1[2],param_2,param_1)" identifier (argument_list "(param_1[2],param_2,param_1)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , identifier , identifier ))) ;)) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (if_statement "if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }" if (parenthesized_expression "((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0))" ( (binary_expression "(param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(long *)(param_3 + 0x38) == 0)" ( (binary_expression "*(long *)(param_3 + 0x38) == 0" (pointer_expression "*(long *)(param_3 + 0x38)" * (cast_expression "(long *)(param_3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        FUN_00117130(param_3);\n      }" { (expression_statement "FUN_00117130(param_3);" (call_expression "FUN_00117130(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) })) (expression_statement "FUN_00117080(param_1[2]);" (call_expression "FUN_00117080(param_1[2])" identifier (argument_list "(param_1[2])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 2:" case number_literal :) (case_statement "case 6:" case number_literal :) (case_statement "case 7:" case number_literal :) (case_statement "case 9:" case number_literal :) (case_statement "case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (if_statement "if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;" if (parenthesized_expression "((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0))" ( (binary_expression "(param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(long *)(param_3 + 0x38) != 0)" ( (binary_expression "*(long *)(param_3 + 0x38) != 0" (pointer_expression "*(long *)(param_3 + 0x38)" * (cast_expression "(long *)(param_3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) != number_literal) ))) )) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (labeled_statement "LAB_00119706:\n      FUN_00117130(param_3);" statement_identifier : (expression_statement "FUN_00117130(param_3);" (call_expression "FUN_00117130(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;)) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" case number_literal : (if_statement "if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" if (parenthesized_expression "((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0))" ( (binary_expression "(param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)" (parenthesized_expression "(param_1[4] == 0)" ( (binary_expression "param_1[4] == 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1[4] + 0x18) == 0)" ( (binary_expression "*(int *)(param_1[4] + 0x18) == 0" (pointer_expression "*(int *)(param_1[4] + 0x18)" * (cast_expression "(int *)(param_1[4] + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[4] + 0x18)" ( (binary_expression "param_1[4] + 0x18" (subscript_expression "param_1[4]" identifier [ number_literal ]) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" { (expression_statement "lVar3 = FUN_00116e20(param_1[2],0,1);" (assignment_expression "lVar3 = FUN_00116e20(param_1[2],0,1)" identifier = (call_expression "FUN_00116e20(param_1[2],0,1)" identifier (argument_list "(param_1[2],0,1)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , number_literal , number_literal )))) ;) (expression_statement "*(undefined8 *)(lVar3 + 0x58) = param_1[3];" (assignment_expression "*(undefined8 *)(lVar3 + 0x58) = param_1[3]" (pointer_expression "*(undefined8 *)(lVar3 + 0x58)" * (cast_expression "(undefined8 *)(lVar3 + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x58)" ( (binary_expression "lVar3 + 0x58" identifier + number_literal) )))) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) (if_statement "if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }" if (parenthesized_expression "(*(long *)(lVar3 + 0x38) == 0)" ( (binary_expression "*(long *)(lVar3 + 0x38) == 0" (pointer_expression "*(long *)(lVar3 + 0x38)" * (cast_expression "(long *)(lVar3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x38)" ( (binary_expression "lVar3 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }" { (expression_statement "FUN_00117130(lVar3);" (call_expression "FUN_00117130(lVar3)" identifier (argument_list "(lVar3)" ( identifier ))) ;) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) })) }))) (case_statement "default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;" default : (labeled_statement "switchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;" statement_identifier : (expression_statement "DAT_00182618 = lVar4;" (assignment_expression "DAT_00182618 = lVar4" identifier = identifier) ;)) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;" case number_literal : (if_statement "if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" if (parenthesized_expression "(((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0))" ( (binary_expression "((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)" (parenthesized_expression "((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1))" ( (binary_expression "(param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)" (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1[10] + 0x18) != 1)" ( (binary_expression "*(int *)(param_1[10] + 0x18) != 1" (pointer_expression "*(int *)(param_1[10] + 0x18)" * (cast_expression "(int *)(param_1[10] + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + 0x18)" ( (binary_expression "param_1[10] + 0x18" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(param_1 + 3) != 0)" ( (binary_expression "*(int *)(param_1 + 3) != 0" (pointer_expression "*(int *)(param_1 + 3)" * (cast_expression "(int *)(param_1 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }" { (expression_statement "FUN_00119290(param_1,FUN_00117e70,param_3);" (call_expression "FUN_00119290(param_1,FUN_00117e70,param_3)" identifier (argument_list "(param_1,FUN_00117e70,param_3)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" else (compound_statement "{\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" { (expression_statement "FUN_00119290(param_1,FUN_00115330,param_3);" (call_expression "FUN_00119290(param_1,FUN_00115330,param_3)" identifier (argument_list "(param_1,FUN_00115330,param_3)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }" if (parenthesized_expression "(param_1[0xe] != 0)" ( (binary_expression "param_1[0xe] != 0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }" { (expression_statement "FUN_00118100(param_1,param_1[0xe],param_3);" (call_expression "FUN_00118100(param_1,param_1[0xe],param_3)" identifier (argument_list "(param_1,param_1[0xe],param_3)" ( identifier , (subscript_expression "param_1[0xe]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = number_literal) ;) })) }))) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) (if_statement "if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }" if (parenthesized_expression "(DAT_00182618 == 0)" ( (binary_expression "DAT_00182618 == 0" identifier == number_literal) )) (compound_statement "{\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }" { (for_statement "for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }" for ( (assignment_expression "puVar2 = (undefined8 *)param_1[4]" identifier = (cast_expression "(undefined8 *)param_1[4]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ; (comma_expression "lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) , (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ; (assignment_expression "puVar2 = (undefined8 *)*puVar2" identifier = (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ) (compound_statement "{\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }" { (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar9 = (byte *)puVar2[1] == (byte *)0x0;" (assignment_expression "bVar9 = (byte *)puVar2[1] == (byte *)0x0" identifier = (binary_expression "(byte *)puVar2[1] == (byte *)0x0" (cast_expression "(byte *)puVar2[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ])) == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }" { (expression_statement "lVar4 = 7;" (assignment_expression "lVar4 = 7" identifier = number_literal) ;) (expression_statement "pbVar6 = (byte *)puVar2[1];" (assignment_expression "pbVar6 = (byte *)puVar2[1]" identifier = (cast_expression "(byte *)puVar2[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar7 = (byte *)"COMMON";" (assignment_expression "pbVar7 = (byte *)"COMMON"" identifier = (cast_expression "(byte *)"COMMON"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""COMMON"" " string_content "))) ;) (do_statement "do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);" do (compound_statement "{\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            }" { (if_statement "if (lVar4 == 0) break;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = lVar4 + -1;" (assignment_expression "lVar4 = lVar4 + -1" identifier = (binary_expression "lVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "lVar4 = param_3;" (assignment_expression "lVar4 = param_3" identifier = identifier) ;) (if_statement "if ((!bVar8 && !bVar9) == bVar8) break;" if (parenthesized_expression "((!bVar8 && !bVar9) == bVar8)" ( (binary_expression "(!bVar8 && !bVar9) == bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier) )) (break_statement "break;" break ;)) })) })) })) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (case_statement "case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;" case number_literal : (expression_statement "FUN_00117080(param_1[3]);" (call_expression "FUN_00117080(param_1[3])" identifier (argument_list "(param_1[3])" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) ))) ;) (if_statement "if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" if (parenthesized_expression "(*(int *)(param_3 + 0x8c) == 2)" ( (binary_expression "*(int *)(param_3 + 0x8c) == 2" (pointer_expression "*(int *)(param_3 + 0x8c)" * (cast_expression "(int *)(param_3 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x8c)" ( (binary_expression "param_3 + 0x8c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }" { (expression_statement "uVar5 = 0x300;" (assignment_expression "uVar5 = 0x300" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5)" ( (binary_expression "*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(DAT_00182db0 + 8) + 8)" * (cast_expression "(int *)(*(long *)(DAT_00182db0 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(DAT_00182db0 + 8) + 8)" ( (binary_expression "*(long *)(DAT_00182db0 + 8) + 8" (pointer_expression "*(long *)(DAT_00182db0 + 8)" * (cast_expression "(long *)(DAT_00182db0 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00182db0 + 8)" ( (binary_expression "DAT_00182db0 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          uVar5 = 0x201;\n        }" { (expression_statement "uVar5 = 0x201;" (assignment_expression "uVar5 = 0x201" identifier = number_literal) ;) })) }) (else_clause "else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" else (compound_statement "{\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" { (expression_statement "uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;" (assignment_expression "uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100" identifier = (binary_expression "(uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100" (binary_expression "(uint)(*(int *)(param_3 + 0x8c) != 3) * 3" (call_expression "(uint)(*(int *)(param_3 + 0x8c) != 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_3 + 0x8c) != 3)" ( (binary_expression "*(int *)(param_3 + 0x8c) != 3" (pointer_expression "*(int *)(param_3 + 0x8c)" * (cast_expression "(int *)(param_3 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x8c)" ( (binary_expression "param_3 + 0x8c" identifier + number_literal) )))) != number_literal) ))) * number_literal) + number_literal)) ;) }))) (if_statement "if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;" if (parenthesized_expression "(*(long *)(param_3 + 0x38) == 0)" ( (binary_expression "*(long *)(param_3 + 0x38) == 0" (pointer_expression "*(long *)(param_3 + 0x38)" * (cast_expression "(long *)(param_3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00119706;" goto statement_identifier ;)) (expression_statement "puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);" (assignment_expression "puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20)" identifier = (cast_expression "(uint *)(*(long *)(param_3 + 0x38) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x38) + 0x20)" ( (binary_expression "*(long *)(param_3 + 0x38) + 0x20" (pointer_expression "*(long *)(param_3 + 0x38)" * (cast_expression "(long *)(param_3 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 | uVar5;" (assignment_expression "*puVar1 = *puVar1 | uVar5" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | uVar5" (pointer_expression "*puVar1" * identifier) | identifier)) ;) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" identifier = identifier) ;) (goto_statement "goto switchD_00119564_caseD_5;" goto statement_identifier ;)) (case_statement "case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (expression_statement "param_2 = param_1[2];" (assignment_expression "param_2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;" case number_literal : (expression_statement "FUN_00119520(param_1[2],param_2,param_3);" (call_expression "FUN_00119520(param_1[2],param_2,param_3)" identifier (argument_list "(param_1[2],param_2,param_3)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , identifier , identifier ))) ;) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;" case number_literal : (expression_statement "FUN_00119520(DAT_00182d20,param_2,param_3);" (call_expression "FUN_00119520(DAT_00182d20,param_2,param_3)" identifier (argument_list "(DAT_00182d20,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;)) })) (if_statement "if (param_1 == (undefined8 *)0x0) {\n      return;\n    }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (switch_statement switch (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) & LIT) ))) == (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (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 { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (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) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) (case_statement default : (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ; (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_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 ( IDENT )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (break_statement break ;)) })) })) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (subscript_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 { (expression_statement (assignment_expression IDENT = LIT) ;) (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 = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) * LIT) + LIT)) ;) }))) (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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (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) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  long lVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00119520(undefined8 *param_1,undefined8 param_2,long param_3)" (identifier "FUN_00119520") (parameter_list "(undefined8 *param_1,undefined8 param_2,long param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  long lVar4;\n  uint uVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" (identifier "bVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_1 == (undefined8 *)0x0)" (( "(") (binary_expression "param_1 == (undefined8 *)0x0" (identifier "param_1") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    lVar4 = DAT_00182618;\n    switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }\n    if (param_1 == (undefined8 *)0x0) {\n      return;\n    }\n  }" ({ "{") (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" (identifier "lVar4") (= "=") (identifier "DAT_00182618")) (; ";")) (switch_statement "switch(*(undefined4 *)(param_1 + 1)) {\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }" (switch "switch") (parenthesized_expression "(*(undefined4 *)(param_1 + 1))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 1)" (* "*") (cast_expression "(undefined4 *)(param_1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) () ")")) (compound_statement "{\n    case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 2:\n    case 6:\n    case 7:\n    case 9:\n    case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }\n    default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;\n    case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;\n    case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;\n    case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n    }" ({ "{") (case_statement "case 0:\n      if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }\nLAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);\n      param_1 = (undefined8 *)*param_1;\n      break;" (case "case") (number_literal "0") (: ":") (if_statement "if (*(int *)((long)param_1 + 0x84) != 0) {\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }" (if "if") (parenthesized_expression "(*(int *)((long)param_1 + 0x84) != 0)" (( "(") (binary_expression "*(int *)((long)param_1 + 0x84) != 0" (pointer_expression "*(int *)((long)param_1 + 0x84)" (* "*") (cast_expression "(int *)((long)param_1 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x84)" (( "(") (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x84")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }\n        goto switchD_00119564_caseD_5;\n      }" ({ "{") (if_statement "if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }" (if "if") (parenthesized_expression "(*(int *)((long)param_1 + 0x84) - 0x17cU < 2)" (( "(") (binary_expression "*(int *)((long)param_1 + 0x84) - 0x17cU < 2" (binary_expression "*(int *)((long)param_1 + 0x84) - 0x17cU" (pointer_expression "*(int *)((long)param_1 + 0x84)" (* "*") (cast_expression "(int *)((long)param_1 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x84)" (( "(") (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x84")) () ")")))) (- "-") (number_literal "0x17cU")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;\n          FUN_00119480(param_1[2]);\n          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;\n          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;\n          lVar4 = DAT_00182618;\n        }" ({ "{") (expression_statement "*(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;" (assignment_expression "*(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4" (pointer_expression "*(byte *)(param_1 + 0x12)" (* "*") (cast_expression "(byte *)(param_1 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x12)" (( "(") (binary_expression "param_1 + 0x12" (identifier "param_1") (+ "+") (number_literal "0x12")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0x12) | 4" (pointer_expression "*(byte *)(param_1 + 0x12)" (* "*") (cast_expression "(byte *)(param_1 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x12)" (( "(") (binary_expression "param_1 + 0x12" (identifier "param_1") (+ "+") (number_literal "0x12")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (expression_statement "FUN_00119480(param_1[2]);" (call_expression "FUN_00119480(param_1[2])" (identifier "FUN_00119480") (argument_list "(param_1[2])" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (if_statement "if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;" (if "if") (parenthesized_expression "((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c))" (( "(") (binary_expression "(bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==\n              (*(int *)((long)param_1 + 0x84) == 0x17c)" (cast_expression "(bool)(*(byte *)(param_1 + 0x12) >> 2 & 1)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(*(byte *)(param_1 + 0x12) >> 2 & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0x12) >> 2 & 1" (binary_expression "*(byte *)(param_1 + 0x12) >> 2" (pointer_expression "*(byte *)(param_1 + 0x12)" (* "*") (cast_expression "(byte *)(param_1 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x12)" (( "(") (binary_expression "param_1 + 0x12" (identifier "param_1") (+ "+") (number_literal "0x12")) () ")")))) (>> ">>") (number_literal "2")) (& "&") (number_literal "1")) () ")"))) (== "==") (parenthesized_expression "(*(int *)((long)param_1 + 0x84) == 0x17c)" (( "(") (binary_expression "*(int *)((long)param_1 + 0x84) == 0x17c" (pointer_expression "*(int *)((long)param_1 + 0x84)" (* "*") (cast_expression "(int *)((long)param_1 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x84)" (( "(") (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x84")) () ")")))) (== "==") (number_literal "0x17c")) () ")"))) () ")")) (goto_statement "goto LAB_00119800;" (goto "goto") (statement_identifier "LAB_00119800") (; ";"))) (expression_statement "*(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x84) = 0xffffffff" (pointer_expression "*(undefined4 *)((long)param_1 + 0x84)" (* "*") (cast_expression "(undefined4 *)((long)param_1 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x84)" (( "(") (binary_expression "(long)param_1 + 0x84" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x84")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" (identifier "lVar4") (= "=") (identifier "DAT_00182618")) (; ";")) (} "}"))) (goto_statement "goto switchD_00119564_caseD_5;" (goto "goto") (statement_identifier "switchD_00119564_caseD_5") (; ";")) (} "}"))) (labeled_statement "LAB_00119800:\n      FUN_00119520(param_1[2],param_2,param_1);" (statement_identifier "LAB_00119800") (: ":") (expression_statement "FUN_00119520(param_1[2],param_2,param_1);" (call_expression "FUN_00119520(param_1[2],param_2,param_1)" (identifier "FUN_00119520") (argument_list "(param_1[2],param_2,param_1)" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "param_2") (, ",") (identifier "param_1") () ")"))) (; ";"))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:\n      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }\n      FUN_00117080(param_1[2]);\n      param_1 = (undefined8 *)*param_1;\n      break;" (case "case") (number_literal "1") (: ":") (if_statement "if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {\n        FUN_00117130(param_3);\n      }" (if "if") (parenthesized_expression "((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0))" (( "(") (binary_expression "(param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)" (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(param_3 + 0x38) == 0)" (( "(") (binary_expression "*(long *)(param_3 + 0x38) == 0" (pointer_expression "*(long *)(param_3 + 0x38)" (* "*") (cast_expression "(long *)(param_3 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        FUN_00117130(param_3);\n      }" ({ "{") (expression_statement "FUN_00117130(param_3);" (call_expression "FUN_00117130(param_3)" (identifier "FUN_00117130") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00117080(param_1[2]);" (call_expression "FUN_00117080(param_1[2])" (identifier "FUN_00117080") (argument_list "(param_1[2])" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:" (case "case") (number_literal "2") (: ":")) (case_statement "case 6:" (case "case") (number_literal "6") (: ":")) (case_statement "case 7:" (case "case") (number_literal "7") (: ":")) (case_statement "case 9:" (case "case") (number_literal "9") (: ":")) (case_statement "case 0xc:\n      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;\nLAB_00119706:\n      FUN_00117130(param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;" (case "case") (number_literal "0xc") (: ":") (if_statement "if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;" (if "if") (parenthesized_expression "((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0))" (( "(") (binary_expression "(param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)" (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(long *)(param_3 + 0x38) != 0)" (( "(") (binary_expression "*(long *)(param_3 + 0x38) != 0" (pointer_expression "*(long *)(param_3 + 0x38)" (* "*") (cast_expression "(long *)(param_3 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto switchD_00119564_caseD_5;" (goto "goto") (statement_identifier "switchD_00119564_caseD_5") (; ";"))) (labeled_statement "LAB_00119706:\n      FUN_00117130(param_3);" (statement_identifier "LAB_00119706") (: ":") (expression_statement "FUN_00117130(param_3);" (call_expression "FUN_00117130(param_3)" (identifier "FUN_00117130") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";"))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" (case "case") (number_literal "3") (: ":") (if_statement "if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" (if "if") (parenthesized_expression "((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0))" (( "(") (binary_expression "(param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)" (parenthesized_expression "(param_1[4] == 0)" (( "(") (binary_expression "param_1[4] == 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1[4] + 0x18) == 0)" (( "(") (binary_expression "*(int *)(param_1[4] + 0x18) == 0" (pointer_expression "*(int *)(param_1[4] + 0x18)" (* "*") (cast_expression "(int *)(param_1[4] + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[4] + 0x18)" (( "(") (binary_expression "param_1[4] + 0x18" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        lVar3 = FUN_00116e20(param_1[2],0,1);\n        *(undefined8 *)(lVar3 + 0x58) = param_1[3];\n        lVar4 = DAT_00182618;\n        if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }\n      }" ({ "{") (expression_statement "lVar3 = FUN_00116e20(param_1[2],0,1);" (assignment_expression "lVar3 = FUN_00116e20(param_1[2],0,1)" (identifier "lVar3") (= "=") (call_expression "FUN_00116e20(param_1[2],0,1)" (identifier "FUN_00116e20") (argument_list "(param_1[2],0,1)" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(lVar3 + 0x58) = param_1[3];" (assignment_expression "*(undefined8 *)(lVar3 + 0x58) = param_1[3]" (pointer_expression "*(undefined8 *)(lVar3 + 0x58)" (* "*") (cast_expression "(undefined8 *)(lVar3 + 0x58)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x58)" (( "(") (binary_expression "lVar3 + 0x58" (identifier "lVar3") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" (identifier "lVar4") (= "=") (identifier "DAT_00182618")) (; ";")) (if_statement "if (*(long *)(lVar3 + 0x38) == 0) {\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }" (if "if") (parenthesized_expression "(*(long *)(lVar3 + 0x38) == 0)" (( "(") (binary_expression "*(long *)(lVar3 + 0x38) == 0" (pointer_expression "*(long *)(lVar3 + 0x38)" (* "*") (cast_expression "(long *)(lVar3 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x38)" (( "(") (binary_expression "lVar3 + 0x38" (identifier "lVar3") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00117130(lVar3);\n          lVar4 = DAT_00182618;\n        }" ({ "{") (expression_statement "FUN_00117130(lVar3);" (call_expression "FUN_00117130(lVar3)" (identifier "FUN_00117130") (argument_list "(lVar3)" (( "(") (identifier "lVar3") () ")"))) (; ";")) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" (identifier "lVar4") (= "=") (identifier "DAT_00182618")) (; ";")) (} "}"))) (} "}")))) (case_statement "default:\nswitchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;\n      param_1 = (undefined8 *)*param_1;\n      break;" (default "default") (: ":") (labeled_statement "switchD_00119564_caseD_5:\n      DAT_00182618 = lVar4;" (statement_identifier "switchD_00119564_caseD_5") (: ":") (expression_statement "DAT_00182618 = lVar4;" (assignment_expression "DAT_00182618 = lVar4" (identifier "DAT_00182618") (= "=") (identifier "lVar4")) (; ";"))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }\n      lVar4 = DAT_00182618;\n      if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }\n      goto switchD_00119564_caseD_5;" (case "case") (number_literal "4") (: ":") (if_statement "if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)) {\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }\n      else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" (if "if") (parenthesized_expression "(((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0))" (( "(") (binary_expression "((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||\n         (*(int *)(param_1 + 3) != 0)" (parenthesized_expression "((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1))" (( "(") (binary_expression "(param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)" (parenthesized_expression "(param_1[10] == 0)" (( "(") (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1[10] + 0x18) != 1)" (( "(") (binary_expression "*(int *)(param_1[10] + 0x18) != 1" (pointer_expression "*(int *)(param_1[10] + 0x18)" (* "*") (cast_expression "(int *)(param_1[10] + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[10] + 0x18)" (( "(") (binary_expression "param_1[10] + 0x18" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "1")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 3) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 3) != 0" (pointer_expression "*(int *)(param_1 + 3)" (* "*") (cast_expression "(int *)(param_1 + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        FUN_00119290(param_1,FUN_00117e70,param_3);\n      }" ({ "{") (expression_statement "FUN_00119290(param_1,FUN_00117e70,param_3);" (call_expression "FUN_00119290(param_1,FUN_00117e70,param_3)" (identifier "FUN_00119290") (argument_list "(param_1,FUN_00117e70,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "FUN_00117e70") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" (else "else") (compound_statement "{\n        FUN_00119290(param_1,FUN_00115330,param_3);\n        if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }\n      }" ({ "{") (expression_statement "FUN_00119290(param_1,FUN_00115330,param_3);" (call_expression "FUN_00119290(param_1,FUN_00115330,param_3)" (identifier "FUN_00119290") (argument_list "(param_1,FUN_00115330,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "FUN_00115330") (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if (param_1[0xe] != 0) {\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }" (if "if") (parenthesized_expression "(param_1[0xe] != 0)" (( "(") (binary_expression "param_1[0xe] != 0" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00118100(param_1,param_1[0xe],param_3);\n          param_1[0xe] = 0;\n        }" ({ "{") (expression_statement "FUN_00118100(param_1,param_1[0xe],param_3);" (call_expression "FUN_00118100(param_1,param_1[0xe],param_3)" (identifier "FUN_00118100") (argument_list "(param_1,param_1[0xe],param_3)" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")))) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" (identifier "lVar4") (= "=") (identifier "DAT_00182618")) (; ";")) (if_statement "if (DAT_00182618 == 0) {\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(DAT_00182618 == 0)" (( "(") (binary_expression "DAT_00182618 == 0" (identifier "DAT_00182618") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }\n      }" ({ "{") (for_statement "for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;\n            puVar2 = (undefined8 *)*puVar2) {\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }" (for "for") (( "(") (assignment_expression "puVar2 = (undefined8 *)param_1[4]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)param_1[4]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";") (comma_expression "lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0" (assignment_expression "lVar4 = DAT_00182618" (identifier "lVar4") (= "=") (identifier "DAT_00182618")) (, ",") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";") (assignment_expression "puVar2 = (undefined8 *)*puVar2" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)*puVar2" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) () ")") (compound_statement "{\n          bVar8 = false;\n          bVar9 = (byte *)puVar2[1] == (byte *)0x0;\n          if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }\n        }" ({ "{") (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" (identifier "bVar8") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (byte *)puVar2[1] == (byte *)0x0;" (assignment_expression "bVar9 = (byte *)puVar2[1] == (byte *)0x0" (identifier "bVar9") (= "=") (binary_expression "(byte *)puVar2[1] == (byte *)0x0" (cast_expression "(byte *)puVar2[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!bVar9) {\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }" (if "if") (parenthesized_expression "(!bVar9)" (( "(") (unary_expression "!bVar9" (! "!") (identifier "bVar9")) () ")")) (compound_statement "{\n            lVar4 = 7;\n            pbVar6 = (byte *)puVar2[1];\n            pbVar7 = (byte *)"COMMON";\n            do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);\n            lVar4 = param_3;\n            if ((!bVar8 && !bVar9) == bVar8) break;\n          }" ({ "{") (expression_statement "lVar4 = 7;" (assignment_expression "lVar4 = 7" (identifier "lVar4") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar6 = (byte *)puVar2[1];" (assignment_expression "pbVar6 = (byte *)puVar2[1]" (identifier "pbVar6") (= "=") (cast_expression "(byte *)puVar2[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pbVar7 = (byte *)"COMMON";" (assignment_expression "pbVar7 = (byte *)"COMMON"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)"COMMON"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""COMMON"" (" """) (string_content "COMMON") (" """)))) (; ";")) (do_statement "do {\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            } while (bVar9);" (do "do") (compound_statement "{\n              if (lVar4 == 0) break;\n              lVar4 = lVar4 + -1;\n              bVar8 = *pbVar6 < *pbVar7;\n              bVar9 = *pbVar6 == *pbVar7;\n              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n            }" ({ "{") (if_statement "if (lVar4 == 0) break;" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar4 = lVar4 + -1;" (assignment_expression "lVar4 = lVar4 + -1" (identifier "lVar4") (= "=") (binary_expression "lVar4 + -1" (identifier "lVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" (identifier "bVar8") (= "=") (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar10 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar10 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (expression_statement "lVar4 = param_3;" (assignment_expression "lVar4 = param_3" (identifier "lVar4") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((!bVar8 && !bVar9) == bVar8) break;" (if "if") (parenthesized_expression "((!bVar8 && !bVar9) == bVar8)" (( "(") (binary_expression "(!bVar8 && !bVar9) == bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" (( "(") (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" (! "!") (identifier "bVar8")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar8")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (} "}"))) (} "}"))) (goto_statement "goto switchD_00119564_caseD_5;" (goto "goto") (statement_identifier "switchD_00119564_caseD_5") (; ";"))) (case_statement "case 8:\n      FUN_00117080(param_1[3]);\n      if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }\n      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;\n      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);\n      *puVar1 = *puVar1 | uVar5;\n      lVar4 = DAT_00182618;\n      goto switchD_00119564_caseD_5;" (case "case") (number_literal "8") (: ":") (expression_statement "FUN_00117080(param_1[3]);" (call_expression "FUN_00117080(param_1[3])" (identifier "FUN_00117080") (argument_list "(param_1[3])" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (if_statement "if (*(int *)(param_3 + 0x8c) == 2) {\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }\n      else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x8c) == 2)" (( "(") (binary_expression "*(int *)(param_3 + 0x8c) == 2" (pointer_expression "*(int *)(param_3 + 0x8c)" (* "*") (cast_expression "(int *)(param_3 + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x8c)" (( "(") (binary_expression "param_3 + 0x8c" (identifier "param_3") (+ "+") (number_literal "0x8c")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        uVar5 = 0x300;\n        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }\n      }" ({ "{") (expression_statement "uVar5 = 0x300;" (assignment_expression "uVar5 = 0x300" (identifier "uVar5") (= "=") (number_literal "0x300")) (; ";")) (if_statement "if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {\n          uVar5 = 0x201;\n        }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5)" (( "(") (binary_expression "*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(DAT_00182db0 + 8) + 8)" (* "*") (cast_expression "(int *)(*(long *)(DAT_00182db0 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(DAT_00182db0 + 8) + 8)" (( "(") (binary_expression "*(long *)(DAT_00182db0 + 8) + 8" (pointer_expression "*(long *)(DAT_00182db0 + 8)" (* "*") (cast_expression "(long *)(DAT_00182db0 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00182db0 + 8)" (( "(") (binary_expression "DAT_00182db0 + 8" (identifier "DAT_00182db0") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n          uVar5 = 0x201;\n        }" ({ "{") (expression_statement "uVar5 = 0x201;" (assignment_expression "uVar5 = 0x201" (identifier "uVar5") (= "=") (number_literal "0x201")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" (else "else") (compound_statement "{\n        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;\n      }" ({ "{") (expression_statement "uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;" (assignment_expression "uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100" (identifier "uVar5") (= "=") (binary_expression "(uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100" (binary_expression "(uint)(*(int *)(param_3 + 0x8c) != 3) * 3" (call_expression "(uint)(*(int *)(param_3 + 0x8c) != 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_3 + 0x8c) != 3)" (( "(") (binary_expression "*(int *)(param_3 + 0x8c) != 3" (pointer_expression "*(int *)(param_3 + 0x8c)" (* "*") (cast_expression "(int *)(param_3 + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x8c)" (( "(") (binary_expression "param_3 + 0x8c" (identifier "param_3") (+ "+") (number_literal "0x8c")) () ")")))) (!= "!=") (number_literal "3")) () ")"))) (* "*") (number_literal "3")) (+ "+") (number_literal "0x100"))) (; ";")) (} "}")))) (if_statement "if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;" (if "if") (parenthesized_expression "(*(long *)(param_3 + 0x38) == 0)" (( "(") (binary_expression "*(long *)(param_3 + 0x38) == 0" (pointer_expression "*(long *)(param_3 + 0x38)" (* "*") (cast_expression "(long *)(param_3 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00119706;" (goto "goto") (statement_identifier "LAB_00119706") (; ";"))) (expression_statement "puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);" (assignment_expression "puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(*(long *)(param_3 + 0x38) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 0x38) + 0x20)" (( "(") (binary_expression "*(long *)(param_3 + 0x38) + 0x20" (pointer_expression "*(long *)(param_3 + 0x38)" (* "*") (cast_expression "(long *)(param_3 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "*puVar1 = *puVar1 | uVar5;" (assignment_expression "*puVar1 = *puVar1 | uVar5" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 | uVar5" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (| "|") (identifier "uVar5"))) (; ";")) (expression_statement "lVar4 = DAT_00182618;" (assignment_expression "lVar4 = DAT_00182618" (identifier "lVar4") (= "=") (identifier "DAT_00182618")) (; ";")) (goto_statement "goto switchD_00119564_caseD_5;" (goto "goto") (statement_identifier "switchD_00119564_caseD_5") (; ";"))) (case_statement "case 10:\n      param_2 = param_1[2];\n      param_1 = (undefined8 *)*param_1;\n      break;" (case "case") (number_literal "10") (: ":") (expression_statement "param_2 = param_1[2];" (assignment_expression "param_2 = param_1[2]" (identifier "param_2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xd:\n      FUN_00119520(param_1[2],param_2,param_3);\n      param_1 = (undefined8 *)*param_1;\n      break;" (case "case") (number_literal "0xd") (: ":") (expression_statement "FUN_00119520(param_1[2],param_2,param_3);" (call_expression "FUN_00119520(param_1[2],param_2,param_3)" (identifier "FUN_00119520") (argument_list "(param_1[2],param_2,param_3)" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xf:\n      FUN_00119520(DAT_00182d20,param_2,param_3);\n      param_1 = (undefined8 *)*param_1;" (case "case") (number_literal "0xf") (: ":") (expression_statement "FUN_00119520(DAT_00182d20,param_2,param_3);" (call_expression "FUN_00119520(DAT_00182d20,param_2,param_3)" (identifier "FUN_00119520") (argument_list "(DAT_00182d20,param_2,param_3)" (( "(") (identifier "DAT_00182d20") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";"))) (} "}"))) (if_statement "if (param_1 == (undefined8 *)0x0) {\n      return;\n    }" (if "if") (parenthesized_expression "(param_1 == (undefined8 *)0x0)" (( "(") (binary_expression "param_1 == (undefined8 *)0x0" (identifier "param_1") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

void function_1
               (type_1 *var_1,char *target,type_2 *var_3)

{
  type_3 *pfVar1;
  type_4 *var_12;
  type_2 *plVar3;
  type_2 *s_00;
  long var_13;
  type_5 var_20;
  type_6 *var_14;
  type_6 *var_15;
  bool var_16;
  bool bVar8;
  type_6 bVar9;
  
  bVar9 = 0;
  if (var_1 == (type_1 *)0x0) {
    return;
  }
  do {
    plVar3 = var_11;
    switch(*(type_7 *)((long)&var_1->header + 8)) {
    case lang_output_section_statement_enum:
      if ((var_1->output_section_statement).constraint != 0) {
        if ((var_1->output_section_statement).constraint - 0x17cU < 2) {
          *(type_6 *)((long)var_1 + 0x90) = *(type_6 *)((long)var_1 + 0x90) | 4;
          var_2
                    ((var_1->output_section_statement).children.head,&var_1->output_section_statement);
          if ((bool)(*(type_6 *)((long)var_1 + 0x90) >> 2 & 1) ==
              ((var_1->output_section_statement).constraint == 0x17c)) goto LAB_00119800;
          (var_1->output_section_statement).constraint = -1;
          plVar3 = var_11;
        }
        goto switchD_00119564_caseD_5;
      }
LAB_00119800:
      function_1
                ((var_1->output_section_statement).children.head,target,&var_1->output_section_statement);
      var_1 = ((type_8 *)&(var_1->header).next)->next;
      break;
    case lang_assignment_statement_enum:
      if ((var_3 != (type_2 *)0x0) && (var_3->bfd_section == (type_9 *)0x0))
      {
        var_4(var_3,0);
      }
      var_5((type_10 *)(var_1->output_section_statement).children.head);
      var_1 = ((type_8 *)&(var_1->header).next)->next;
      break;
    case lang_input_statement_enum:
    case lang_object_symbols_statement_enum:
    case lang_fill_statement_enum:
    case lang_reloc_statement_enum:
    case lang_padding_statement_enum:
      if ((var_3 == (type_2 *)0x0) || (var_3->bfd_section != (type_9 *)0x0))
      goto switchD_00119564_caseD_5;
      var_20 = 0;
LAB_00119706:
      var_4(var_3,var_20);
      var_1 = ((type_8 *)&(var_1->header).next)->next;
      break;
    case lang_address_statement_enum:
      if (((type_11 *)(var_1->address_statement).segment == (type_11 *)0x0) ||
         ((((type_11 *)(var_1->address_statement).segment)->spec).sorted == var_6)) {
        s_00 = var_7
                         ((char *)((type_12 *)&(var_1->wild_statement).filename)->head,
                          0,1);
        s_00->addr_tree = (var_1->data_statement).exp;
        plVar3 = var_11;
        if (s_00->bfd_section == (type_9 *)0x0) {
          var_4(s_00,0);
          plVar3 = var_11;
        }
      }
    default:
switchD_00119564_caseD_5:
      var_11 = plVar3;
      var_1 = ((type_8 *)&(var_1->header).next)->next;
      break;
    case lang_wild_statement_enum:
      if ((((var_1->wild_statement).handler_data[0] == (type_11 *)0x0) ||
          (((var_1->wild_statement).handler_data[0]->spec).sorted != var_8)) ||
         ((var_1->wild_statement).filenames_sorted != 0)) {
        var_9(&var_1->wild_statement,output_section_callback,var_3);
      }
      else {
        var_9(&var_1->wild_statement,output_section_callback_fast,var_3);
        if ((var_1->wild_statement).tree != (type_13 *)0x0) {
          var_10(&var_1->wild_statement,(var_1->wild_statement).tree,var_3);
          (var_1->wild_statement).tree = (type_13 *)0x0;
        }
      }
      plVar3 = var_11;
      if (var_11 == (type_2 *)0x0) {
        for (var_12 = (type_4 *)(var_1->wild_statement).section_list;
            plVar3 = var_11, var_12 != (type_4 *)0x0;
            var_12 = (var_12->wild_statement).header.next) {
          var_16 = false;
          bVar8 = *(type_6 **)((long)var_12 + 8) == (type_6 *)0x0;
          if (!bVar8) {
            var_13 = 7;
            var_14 = *(type_6 **)((long)var_12 + 8);
            var_15 = (type_6 *)"COMMON";
            do {
              if (var_13 == 0) break;
              var_13 = var_13 + -1;
              var_16 = *var_14 < *var_15;
              bVar8 = *var_14 == *var_15;
              var_14 = var_14 + (type_14)bVar9 * -2 + 1;
              var_15 = var_15 + (type_14)bVar9 * -2 + 1;
            } while (bVar8);
            plVar3 = var_3;
            if ((!var_16 && !bVar8) == var_16) break;
          }
        }
      }
      goto switchD_00119564_caseD_5;
    case lang_data_statement_enum:
      var_5(*(type_10 **)((long)&var_1->data_statement + 0x18));
      if (var_3->sectype == var_17) {
        var_20 = 0x300;
        if ((link_info.output_bfd)->xvec->flavour == var_18) {
          var_20 = 0x201;
        }
      }
      else {
        var_20 = (type_5)(var_3->sectype != var_19) * 3 + 0x100;
      }
      if (var_3->bfd_section == (type_9 *)0x0) goto LAB_00119706;
      pfVar1 = &var_3->bfd_section->var_20;
      *pfVar1 = *pfVar1 | var_20;
      plVar3 = var_11;
      goto switchD_00119564_caseD_5;
    case lang_target_statement_enum:
      target = (char *)((type_12 *)&(var_1->wild_statement).filename)->head;
      var_1 = ((type_8 *)&(var_1->header).next)->next;
      break;
    case lang_group_statement_enum:
      function_1((var_1->output_section_statement).children.head,target,var_3);
      var_1 = ((type_8 *)&(var_1->header).next)->next;
      break;
    case lang_constructors_statement_enum:
      function_1(constructor_list.head,target,var_3);
      var_1 = ((type_8 *)&(var_1->header).next)->next;
    }
    if (var_1 == (type_4 *)0x0) {
      return;
    }
  } while( true );
}


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

void MASKED(undefined8 *param_1,undefined8 param_2,long param_3)

{
  uint *puVar1;
  undefined8 *puVar2;
  long lVar3;
  long lVar4;
  uint uVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  
  bVar10 = 0;
  if (param_1 == (undefined8 *)0x0) {
    return;
  }
  do {
    lVar4 = DAT_00182618;
    switch(*(undefined4 *)(param_1 + 1)) {
    case 0:
      if (*(int *)((long)param_1 + 0x84) != 0) {
        if (*(int *)((long)param_1 + 0x84) - 0x17cU < 2) {
          *(byte *)(param_1 + 0x12) = *(byte *)(param_1 + 0x12) | 4;
          FUN_00119480(param_1[2]);
          if ((bool)(*(byte *)(param_1 + 0x12) >> 2 & 1) ==
              (*(int *)((long)param_1 + 0x84) == 0x17c)) goto LAB_00119800;
          *(undefined4 *)((long)param_1 + 0x84) = 0xffffffff;
          lVar4 = DAT_00182618;
        }
        goto switchD_00119564_caseD_5;
      }
LAB_00119800:
      MASKED(param_1[2],param_2,param_1);
      param_1 = (undefined8 *)*param_1;
      break;
    case 1:
      if ((param_3 != 0) && (*(long *)(param_3 + 0x38) == 0)) {
        FUN_00117130(param_3);
      }
      FUN_00117080(param_1[2]);
      param_1 = (undefined8 *)*param_1;
      break;
    case 2:
    case 6:
    case 7:
    case 9:
    case 0xc:
      if ((param_3 == 0) || (*(long *)(param_3 + 0x38) != 0)) goto switchD_00119564_caseD_5;
LAB_00119706:
      FUN_00117130(param_3);
      param_1 = (undefined8 *)*param_1;
      break;
    case 3:
      if ((param_1[4] == 0) || (*(int *)(param_1[4] + 0x18) == 0)) {
        lVar3 = FUN_00116e20(param_1[2],0,1);
        *(undefined8 *)(lVar3 + 0x58) = param_1[3];
        lVar4 = DAT_00182618;
        if (*(long *)(lVar3 + 0x38) == 0) {
          FUN_00117130(lVar3);
          lVar4 = DAT_00182618;
        }
      }
    default:
switchD_00119564_caseD_5:
      DAT_00182618 = lVar4;
      param_1 = (undefined8 *)*param_1;
      break;
    case 4:
      if (((param_1[10] == 0) || (*(int *)(param_1[10] + 0x18) != 1)) ||
         (*(int *)(param_1 + 3) != 0)) {
        FUN_00119290(param_1,FUN_00117e70,param_3);
      }
      else {
        FUN_00119290(param_1,FUN_00115330,param_3);
        if (param_1[0xe] != 0) {
          FUN_00118100(param_1,param_1[0xe],param_3);
          param_1[0xe] = 0;
        }
      }
      lVar4 = DAT_00182618;
      if (DAT_00182618 == 0) {
        for (puVar2 = (undefined8 *)param_1[4]; lVar4 = DAT_00182618, puVar2 != (undefined8 *)0x0;
            puVar2 = (undefined8 *)*puVar2) {
          bVar8 = false;
          bVar9 = (byte *)puVar2[1] == (byte *)0x0;
          if (!bVar9) {
            lVar4 = 7;
            pbVar6 = (byte *)puVar2[1];
            pbVar7 = (byte *)"COMMON";
            do {
              if (lVar4 == 0) break;
              lVar4 = lVar4 + -1;
              bVar8 = *pbVar6 < *pbVar7;
              bVar9 = *pbVar6 == *pbVar7;
              pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;
              pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;
            } while (bVar9);
            lVar4 = param_3;
            if ((!bVar8 && !bVar9) == bVar8) break;
          }
        }
      }
      goto switchD_00119564_caseD_5;
    case 8:
      FUN_00117080(param_1[3]);
      if (*(int *)(param_3 + 0x8c) == 2) {
        uVar5 = 0x300;
        if (*(int *)(*(long *)(DAT_00182db0 + 8) + 8) == 5) {
          uVar5 = 0x201;
        }
      }
      else {
        uVar5 = (uint)(*(int *)(param_3 + 0x8c) != 3) * 3 + 0x100;
      }
      if (*(long *)(param_3 + 0x38) == 0) goto LAB_00119706;
      puVar1 = (uint *)(*(long *)(param_3 + 0x38) + 0x20);
      *puVar1 = *puVar1 | uVar5;
      lVar4 = DAT_00182618;
      goto switchD_00119564_caseD_5;
    case 10:
      param_2 = param_1[2];
      param_1 = (undefined8 *)*param_1;
      break;
    case 0xd:
      MASKED(param_1[2],param_2,param_3);
      param_1 = (undefined8 *)*param_1;
      break;
    case 0xf:
      MASKED(DAT_00182d20,param_2,param_3);
      param_1 = (undefined8 *)*param_1;
    }
    if (param_1 == (undefined8 *)0x0) {
      return;
    }
  } while( true );
}

