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

bfd_boolean __regparm3
load_specific_debug_section(dwarf_section_display_enum debug,Elf_Internal_Shdr *sec,void *data)

{
  void *__ptr;
  undefined4 uVar1;
  ushort uVar2;
  uint3 uVar3;
  bfd_vma bVar4;
  int iVar5;
  char *pcVar6;
  uint uVar7;
  bfd_boolean bVar8;
  char *pcVar9;
  Filedata *filedata;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  byte *pbVar15;
  uint uVar16;
  byte *pbVar17;
  bool bVar18;
  bool bVar19;
  byte bVar20;
  uchar *start;
  dwarf_size_type size;
  Elf_Internal_Chdr chdr;
  char buf [64];
  
  bVar20 = 0;
  __ptr = *(void **)(&DAT_000b4850 + debug * 0x40);
  if (__ptr != (void *)0x0) {
                    /* WARNING: Load size is inaccurate */
    iVar5 = strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data);
    if (iVar5 == 0) {
      return 1;
    }
    free(__ptr);
  }
  pcVar9 = "%s section data";
  iVar5 = debug * 0x40;
  uVar1 = (&DAT_000b4848)[debug * 0x10];
  pcVar6 = (char *)dcgettext(0,"%s section data",5);
  snprintf(buf,0x40,pcVar6,uVar1);
  bVar4 = sec->sh_addr;
  uVar1 = *(undefined4 *)((int)&sec->sh_addr + 4);
  *(undefined4 *)(&DAT_000b4870 + iVar5) = 0;
  *(int *)(&DAT_000b4854 + iVar5) = (int)bVar4;
  *(undefined4 *)(&DAT_000b4858 + iVar5) = uVar1;
                    /* WARNING: Load size is inaccurate */
  *(undefined4 *)(&DAT_000b484c + iVar5) = *data;
  start = (uchar *)get_data((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf);
  *(uchar **)(&DAT_000b4850 + iVar5) = start;
  if (start == (byte *)0x0) {
    *(undefined4 *)(&DAT_000b485c + iVar5) = 0;
    *(undefined4 *)(&DAT_000b4860 + iVar5) = 0;
    return 0;
  }
  size._0_4_ = (uint)sec->sh_size;
  pcVar6 = *(char **)((int)&sec->sh_size + 4);
  size._4_4_ = pcVar6;
  if ((sec->sh_flags & 0x800) == 0) {
    uVar7 = (uint)(0xc < (uint)size);
    uVar10 = -(int)pcVar6;
    bVar18 = pcVar6 != (char *)0x0 || uVar10 < uVar7;
    bVar19 = uVar10 == uVar7;
    if (pcVar6 == (char *)0x0 && uVar10 >= uVar7) goto LAB_00041a50;
    iVar5 = 5;
    pbVar15 = start;
    pbVar17 = &DAT_0007d064;
    do {
      if (iVar5 == 0) break;
      iVar5 = iVar5 + -1;
      bVar18 = *pbVar15 < *pbVar17;
      bVar19 = *pbVar15 == *pbVar17;
      pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;
      pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;
    } while (bVar19);
    if ((!bVar18 && !bVar19) != bVar18) goto LAB_00041a50;
    bVar20 = start[4];
    uVar2 = CONCAT11(bVar20,start[5]);
    uVar3 = CONCAT21(uVar2,start[6]);
    uVar7 = CONCAT31(uVar3,start[7]) * 0x100;
    uVar16 = start[8] + uVar7;
    uVar10 = uVar16 * 0x100;
    uVar11 = uVar10 + start[9];
    uVar12 = uVar11 * 0x100;
    uVar13 = start[10] + uVar12;
    uVar14 = uVar13 * 0x100;
    chdr.ch_size._0_4_ = (dwarf_size_type *)(start[0xb] + uVar14);
    chdr.ch_size._4_4_ =
         ((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +
                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +
                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +
              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +
            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +
          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +
         (uint)CARRY4((uint)start[0xb],uVar14);
    start = start + 0xc;
    bVar18 = 0xb < (uint)size;
    size._0_4_ = (uint)size - 0xc;
    size._4_4_ = pcVar6 + (bVar18 - 1);
  }
  else {
    if (pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)) {
      uVar1 = (&DAT_000b4848)[debug * 0x10];
      pcVar9 = (char *)dcgettext(0,
                                 "compressed section %s is too small to contain a compression header"
                                 ,5);
      warn(pcVar9,uVar1);
      return 0;
    }
    uVar7 = get_compression_header(&chdr,start,sec->sh_size);
    if (chdr.ch_type != 1) {
      uVar1 = (&DAT_000b4848)[debug * 0x10];
      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);
      warn(pcVar9,uVar1,chdr.ch_type);
      return 0;
    }
    start = start + uVar7;
    bVar18 = (uint)size < uVar7;
    size._0_4_ = (uint)size - uVar7;
    size._4_4_ = size._4_4_ + -(uint)bVar18;
    pcVar9 = pcVar6;
  }
  if (chdr.ch_size._4_4_ != 0 || (dwarf_size_type *)chdr.ch_size != (dwarf_size_type *)0x0) {
    bVar8 = uncompress_section_contents
                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size);
    if (bVar8 == 0) {
      pcVar9 = printable_section_name
                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),
                          (Filedata *)sec);
      pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);
      error(pcVar6,pcVar9);
      return 0;
    }
    free(*(void **)(&DAT_000b4850 + debug * 0x40));
    *(uchar **)(&DAT_000b4850 + debug * 0x40) = start;
  }
LAB_00041a50:
  iVar5 = debug * 0x40;
  *(uint *)(&DAT_000b485c + iVar5) = (uint)size;
  *(char **)(&DAT_000b4860 + iVar5) = size._4_4_;
  if (*(uchar **)(&DAT_000b4850 + iVar5) == (uchar *)0x0) {
    return 0;
  }
  if (*(int *)(&DAT_000b487c + iVar5) == 0) {
    *(undefined4 *)(&DAT_000b4868 + iVar5) = 0;
    *(undefined4 *)(&DAT_000b486c + iVar5) = 0;
    return 1;
  }
  bVar8 = apply_relocations((Filedata *)data,sec,*(uchar **)(&DAT_000b4850 + iVar5),
                            CONCAT44(size._4_4_,(uint)size),(void **)(&DAT_000b4868 + iVar5),
                            (ulong *)(&DAT_000b486c + iVar5));
  return (uint)(bVar8 != 0);
}



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

bool __regparm3 FUN_000418c0(int param_1,int param_2,undefined4 *param_3)

{
  void *__ptr;
  ushort uVar1;
  uint3 uVar2;
  int iVar3;
  char *__format;
  uint uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  byte *pbVar12;
  uint uVar13;
  byte *pbVar14;
  bool bVar15;
  bool bVar16;
  byte bVar17;
  byte *local_80;
  uint local_7c;
  uint local_78;
  int local_70;
  int local_6c;
  int local_68;
  char local_5c [72];
  undefined4 uStack_14;
  
  bVar17 = 0;
  uStack_14 = 0x418cb;
  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);
  if (__ptr != (void *)0x0) {
    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);
    if (iVar3 == 0) {
      return true;
    }
    free(__ptr);
  }
  iVar3 = param_1 * 0x40;
  uVar5 = (&DAT_000b4848)[param_1 * 0x10];
  __format = (char *)dcgettext(0,"%s section data",5);
  snprintf(local_5c,0x40,__format,uVar5);
  uVar5 = *(undefined4 *)(param_2 + 0x10);
  uVar6 = *(undefined4 *)(param_2 + 0x14);
  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;
  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;
  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;
  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;
  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),
                                  *(undefined4 *)(param_2 + 0x24),local_5c);
  *(byte **)(&DAT_000b4850 + iVar3) = local_80;
  if (local_80 == (byte *)0x0) {
    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;
    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;
    return false;
  }
  local_7c = *(uint *)(param_2 + 0x20);
  local_78 = *(uint *)(param_2 + 0x24);
  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {
    uVar4 = (uint)(0xc < local_7c);
    uVar7 = -local_78;
    bVar15 = local_78 != 0 || uVar7 < uVar4;
    bVar16 = uVar7 == uVar4;
    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;
    iVar3 = 5;
    pbVar12 = local_80;
    pbVar14 = &DAT_0007d064;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar15 = *pbVar12 < *pbVar14;
      bVar16 = *pbVar12 == *pbVar14;
      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;
    } while (bVar16);
    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;
    bVar17 = local_80[4];
    uVar1 = CONCAT11(bVar17,local_80[5]);
    uVar2 = CONCAT21(uVar1,local_80[6]);
    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;
    uVar13 = local_80[8] + uVar4;
    uVar7 = uVar13 * 0x100;
    uVar8 = uVar7 + local_80[9];
    uVar9 = uVar8 * 0x100;
    uVar10 = local_80[10] + uVar9;
    uVar11 = uVar10 * 0x100;
    local_6c = local_80[0xb] + uVar11;
    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +
                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +
                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +
                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +
                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +
                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +
               (uint)CARRY4((uint)local_80[0xb],uVar11);
    local_80 = local_80 + 0xc;
    bVar15 = 0xb < local_7c;
    local_7c = local_7c - 0xc;
    local_78 = (local_78 - 1) + (uint)bVar15;
  }
  else {
    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {
      uVar5 = (&DAT_000b4848)[param_1 * 0x10];
      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);
      warn(uVar6,uVar5);
      return false;
    }
    uVar4 = FUN_0001be30(local_7c,local_78);
    if (local_70 != 1) {
      uVar5 = (&DAT_000b4848)[param_1 * 0x10];
      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);
      warn(uVar6,uVar5,local_70);
      return false;
    }
    local_80 = local_80 + uVar4;
    bVar15 = local_7c < uVar4;
    local_7c = local_7c - uVar4;
    local_78 = local_78 - bVar15;
  }
  if (local_68 != 0 || local_6c != 0) {
    iVar3 = FUN_0001d690(&local_7c);
    if (iVar3 == 0) {
      uVar5 = FUN_00022190();
      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);
      error(uVar6,uVar5);
      return false;
    }
    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));
    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;
  }
LAB_00041a50:
  param_1 = param_1 * 0x40;
  *(uint *)(&DAT_000b485c + param_1) = local_7c;
  *(uint *)(&DAT_000b4860 + param_1) = local_78;
  if (*(int *)(&DAT_000b4850 + param_1) == 0) {
    return false;
  }
  if (*(int *)(&DAT_000b487c + param_1) == 0) {
    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;
    *(undefined4 *)(&DAT_000b486c + param_1) = 0;
    return true;
  }
  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);
  return iVar3 != 0;
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013f70
ADD EBX,0x72735
SUB ESP,0x9c
MOV dword ptr [ESP + 0x1c],EAX
SHL EAX,0x6
MOV dword ptr [ESP + 0xc],ECX
LEA EDI,[EBX + 0x840]
ADD EAX,EDI
MOV dword ptr [ESP + 0x18],EDI
MOV ESI,dword ptr [EAX + 0x10]
TEST ESI,ESI
JZ 0x0004192c
SUB ESP,0x8
PUSH dword ptr [ECX]
PUSH dword ptr [EAX + 0xc]
CALL 0x00013050
ADD ESP,0x10
MOV EDX,0x1
TEST EAX,EAX
JNZ 0x00041920
ADD ESP,0x9c
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH ESI
CALL 0x000130a0
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xfffc9054]
SUB ESP,0x4
SHL ESI,0x6
ADD ESI,dword ptr [ESP + 0x1c]
MOV EDI,dword ptr [ESI + 0x8]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000130f0
PUSH EDI
PUSH EAX
PUSH 0x40
LEA EDX,[ESP + 0x6c]
PUSH EDX
MOV dword ptr [ESP + 0x30],EDX
CALL 0x000132c0
MOV EAX,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [EBP + 0x14]
MOV dword ptr [ESI + 0x30],0x0
MOV dword ptr [ESI + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x2c]
ADD ESP,0x14
MOV dword ptr [ESI + 0x18],EDX
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESI + 0xc],EAX
MOV ECX,dword ptr [EBP + 0x18]
XOR EAX,EAX
PUSH EDX
PUSH dword ptr [EBP + 0x24]
PUSH dword ptr [EBP + 0x20]
PUSH 0x0
PUSH 0x1
MOV EDX,dword ptr [ESP + 0x2c]
CALL 0x0001bf90
ADD ESP,0x20
MOV dword ptr [ESI + 0x10],EAX
TEST EAX,EAX
JZ 0x00041b90
MOV EDI,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + 0x20]
MOV dword ptr [ESP + 0x2c],EAX
MOV ECX,dword ptr [EBP + 0x24]
AND EDI,0x800
MOV dword ptr [ESP + 0x10],EDX
MOV dword ptr [ESP + 0x30],EDX
MOV EDX,EDI
MOV dword ptr [ESP + 0x14],ECX
MOV dword ptr [ESP + 0x34],ECX
JZ 0x00041aa8
CMP dword ptr [EBX + 0x2324],0x1
MOV EDI,dword ptr [ESP + 0x14]
SBB EDX,EDX
AND EDX,0xc
ADD EDX,0xc
CMP dword ptr [ESP + 0x10],EDX
MOV EDX,0x0
SBB EDI,EDX
JC 0x00041bb0
LEA ECX,[ESP + 0x3c]
SUB ESP,0x8
MOV EDX,EAX
PUSH dword ptr [ESP + 0x1c]
MOV EAX,ECX
PUSH dword ptr [ESP + 0x1c]
CALL 0x0001be30
MOV EDI,dword ptr [ESP + 0x4c]
ADD ESP,0x10
CMP EDI,0x1
JNZ 0x00041c70
XOR EDI,EDI
ADD dword ptr [ESP + 0x2c],EAX
MOV EDX,dword ptr [ESP + 0x40]
SUB dword ptr [ESP + 0x30],EAX
MOV ECX,dword ptr [ESP + 0x44]
SBB dword ptr [ESP + 0x34],EDI
MOV ESI,ECX
OR ESI,EDX
JNZ 0x00041c20
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESP + 0x14],EDX
MOV EAX,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x10]
SHL EAX,0x6
LEA EDX,[EBX + EAX*0x1]
MOV EBX,dword ptr [ESP + 0x14]
MOV dword ptr [EDX + 0x1c],ECX
MOV ECX,dword ptr [EDX + 0x10]
MOV dword ptr [EDX + 0x20],EBX
TEST ECX,ECX
JZ 0x00041bd2
MOV EBX,dword ptr [EDX + 0x3c]
TEST EBX,EBX
JNZ 0x00041be8
MOV dword ptr [EDX + 0x28],0x0
MOV dword ptr [EDX + 0x2c],0x0
ADD ESP,0x9c
MOV EDX,0x1
POP EBX
MOV EAX,EDX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [ESP + 0x10]
MOV ECX,0xc
CMP ECX,ESI
SBB EDX,dword ptr [ESP + 0x14]
JNC 0x00041a50
MOV ECX,0x5
LEA EDI,[EBX + 0xfffc9064]
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JNZ 0x00041a50
MOVZX EDX,byte ptr [EAX + 0x4]
XOR EDI,EDI
MOVZX ESI,byte ptr [EAX + 0x5]
MOV ECX,EDI
XOR EDI,EDI
SHLD ECX,EDX,0x8
SHL EDX,0x8
ADD ESI,EDX
ADC EDI,ECX
MOV EDX,ESI
MOV ECX,EDI
SHL EDX,0x8
XOR EDI,EDI
SHLD ECX,ESI,0x8
MOVZX ESI,byte ptr [EAX + 0x6]
ADD ESI,EDX
ADC EDI,ECX
MOV EDX,ESI
MOV ECX,EDI
SHL EDX,0x8
XOR EDI,EDI
SHLD ECX,ESI,0x8
MOVZX ESI,byte ptr [EAX + 0x7]
ADD ESI,EDX
ADC EDI,ECX
MOV EDX,ESI
MOV ECX,EDI
SHL EDX,0x8
XOR EDI,EDI
SHLD ECX,ESI,0x8
MOVZX ESI,byte ptr [EAX + 0x8]
ADD ESI,EDX
ADC EDI,ECX
MOV EDX,ESI
MOV ECX,EDI
SHL EDX,0x8
XOR EDI,EDI
SHLD ECX,ESI,0x8
MOVZX ESI,byte ptr [EAX + 0x9]
ADD EDX,ESI
ADC ECX,EDI
SHLD ECX,EDX,0x8
SHL EDX,0x8
MOV ESI,EDX
MOVZX EDX,byte ptr [EAX + 0xa]
MOV EDI,ECX
XOR ECX,ECX
ADD EDX,ESI
ADC ECX,EDI
SHLD ECX,EDX,0x8
SHL EDX,0x8
MOV ESI,EDX
MOVZX EDX,byte ptr [EAX + 0xb]
MOV EDI,ECX
XOR ECX,ECX
ADD EDX,ESI
MOV ESI,dword ptr [ESP + 0x10]
ADC ECX,EDI
MOV EDI,dword ptr [ESP + 0x14]
ADD EAX,0xc
ADD ESI,-0xc
MOV dword ptr [ESP + 0x2c],EAX
ADC EDI,-0x1
MOV dword ptr [ESP + 0x30],ESI
MOV dword ptr [ESP + 0x34],EDI
JMP 0x00041a36
MOV dword ptr [ESI + 0x1c],0x0
XOR EDX,EDX
MOV dword ptr [ESI + 0x20],0x0
ADD ESP,0x9c
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
LEA EAX,[EBX + 0xfffd0efc]
MOV ESI,dword ptr [ESI + 0x8]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000130f0
POP EDI
POP EBP
PUSH ESI
PUSH EAX
CALL 0x00066bf0
ADD ESP,0x10
XOR EDX,EDX
ADD ESP,0x9c
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,dword ptr [ESP + 0x18]
LEA EDX,[EBX + EAX*0x1 + 0x2c]
LEA EAX,[EBX + EAX*0x1 + 0x28]
PUSH EDX
MOV EDX,EBP
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x0003fb10
ADD ESP,0x10
XOR EDX,EDX
TEST EAX,EAX
SETNZ DL
ADD ESP,0x9c
POP EBX
MOV EAX,EDX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[ESP + 0x2c]
SUB ESP,0xc
LEA ESI,[ESP + 0x3c]
PUSH ESI
CALL 0x0001d690
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00041ca0
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x28]
SHL ESI,0x6
ADD ESI,dword ptr [ESP + 0x24]
PUSH dword ptr [ESI + 0x10]
CALL 0x000130a0
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESI + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x24],EDX
ADD ESP,0x10
JMP 0x00041a50
SUB ESP,0x4
LEA EAX,[EBX + 0xfffd0f40]
MOV ESI,dword ptr [ESI + 0x8]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000130f0
ADD ESP,0xc
PUSH EDI
PUSH ESI
PUSH EAX
CALL 0x00066bf0
ADD ESP,0x10
XOR EDX,EDX
JMP 0x00041bd4
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,EBP
LEA EDX,[EAX + 0x68]
ADD EAX,0x64
CALL 0x00022190
SUB ESP,0x4
MOV ESI,EAX
LEA EAX,[EBX + 0xfffd0f70]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000130f0
POP EDI
POP EBP
PUSH ESI
PUSH EAX
CALL 0x000666b0
ADD ESP,0x10
XOR EDX,EDX
JMP 0x00041bd4
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool __regparm3 FUN_000418c0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  void *__ptr;\n  ushort uVar1;\n  uint3 uVar2;\n  int iVar3;\n  char *__format;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  byte *local_80;\n  uint local_7c;\n  uint local_78;\n  int local_70;\n  int local_6c;\n  int local_68;\n  char local_5c [72];\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0x418cb;\n  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);\n  if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }\n  iVar3 = param_1 * 0x40;\n  uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n  __format = (char *)dcgettext(0,"%s section data",5);\n  snprintf(local_5c,0x40,__format,uVar5);\n  uVar5 = *(undefined4 *)(param_2 + 0x10);\n  uVar6 = *(undefined4 *)(param_2 + 0x14);\n  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;\n  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;\n  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;\n  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;\n  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);\n  *(byte **)(&DAT_000b4850 + iVar3) = local_80;\n  if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }\n  local_7c = *(uint *)(param_2 + 0x20);\n  local_78 = *(uint *)(param_2 + 0x24);\n  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }\n  if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }\nLAB_00041a50:\n  param_1 = param_1 * 0x40;\n  *(uint *)(&DAT_000b485c + param_1) = local_7c;\n  *(uint *)(&DAT_000b4860 + param_1) = local_78;\n  if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }\n  if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }\n  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);\n  return iVar3 != 0;\n}\n\n" comment (function_definition "bool __regparm3 FUN_000418c0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  void *__ptr;\n  ushort uVar1;\n  uint3 uVar2;\n  int iVar3;\n  char *__format;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  byte *local_80;\n  uint local_7c;\n  uint local_78;\n  int local_70;\n  int local_6c;\n  int local_68;\n  char local_5c [72];\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0x418cb;\n  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);\n  if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }\n  iVar3 = param_1 * 0x40;\n  uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n  __format = (char *)dcgettext(0,"%s section data",5);\n  snprintf(local_5c,0x40,__format,uVar5);\n  uVar5 = *(undefined4 *)(param_2 + 0x10);\n  uVar6 = *(undefined4 *)(param_2 + 0x14);\n  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;\n  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;\n  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;\n  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;\n  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);\n  *(byte **)(&DAT_000b4850 + iVar3) = local_80;\n  if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }\n  local_7c = *(uint *)(param_2 + 0x20);\n  local_78 = *(uint *)(param_2 + 0x24);\n  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }\n  if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }\nLAB_00041a50:\n  param_1 = param_1 * 0x40;\n  *(uint *)(&DAT_000b485c + param_1) = local_7c;\n  *(uint *)(&DAT_000b4860 + param_1) = local_78;\n  if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }\n  if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }\n  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);\n  return iVar3 != 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000418c0(int param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  void *__ptr;\n  ushort uVar1;\n  uint3 uVar2;\n  int iVar3;\n  char *__format;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  byte *local_80;\n  uint local_7c;\n  uint local_78;\n  int local_70;\n  int local_6c;\n  int local_68;\n  char local_5c [72];\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0x418cb;\n  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);\n  if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }\n  iVar3 = param_1 * 0x40;\n  uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n  __format = (char *)dcgettext(0,"%s section data",5);\n  snprintf(local_5c,0x40,__format,uVar5);\n  uVar5 = *(undefined4 *)(param_2 + 0x10);\n  uVar6 = *(undefined4 *)(param_2 + 0x14);\n  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;\n  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;\n  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;\n  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;\n  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);\n  *(byte **)(&DAT_000b4850 + iVar3) = local_80;\n  if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }\n  local_7c = *(uint *)(param_2 + 0x20);\n  local_78 = *(uint *)(param_2 + 0x24);\n  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }\n  if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }\nLAB_00041a50:\n  param_1 = param_1 * 0x40;\n  *(uint *)(&DAT_000b485c + param_1) = local_7c;\n  *(uint *)(&DAT_000b4860 + param_1) = local_78;\n  if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }\n  if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }\n  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);\n  return iVar3 != 0;\n}" { (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "uint3 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "char local_5c [72];" primitive_type (array_declarator "local_5c [72]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x418cb;" (assignment_expression "uStack_14 = 0x418cb" identifier = number_literal) ;) (expression_statement "__ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);" (assignment_expression "__ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40)" identifier = (pointer_expression "*(void **)(&DAT_000b4850 + param_1 * 0x40)" * (cast_expression "(void **)(&DAT_000b4850 + param_1 * 0x40)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" ( (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "param_1 * 0x40" identifier * number_literal)) ))))) ;) (if_statement "if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(__ptr != (void *)0x0)" ( (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }" { (expression_statement "iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);" (assignment_expression "iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" identifier = (call_expression "strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" identifier (argument_list "(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" ( (pointer_expression "*(char **)(&DAT_000b484c + param_1 * 0x40)" * (cast_expression "(char **)(&DAT_000b484c + param_1 * 0x40)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b484c + param_1 * 0x40)" ( (binary_expression "&DAT_000b484c + param_1 * 0x40" (pointer_expression "&DAT_000b484c" & identifier) + (binary_expression "param_1 * 0x40" identifier * number_literal)) )))) , (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)) )))) ;) (if_statement "if (iVar3 == 0) {\n      return true;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) })) (expression_statement "iVar3 = param_1 * 0x40;" (assignment_expression "iVar3 = param_1 * 0x40" identifier = (binary_expression "param_1 * 0x40" identifier * number_literal)) ;) (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "param_1 * 0x10" identifier * number_literal) ])) ;) (expression_statement "__format = (char *)dcgettext(0,"%s section data",5);" (assignment_expression "__format = (char *)dcgettext(0,"%s section data",5)" identifier = (cast_expression "(char *)dcgettext(0,"%s section data",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%s section data",5)" identifier (argument_list "(0,"%s section data",5)" ( number_literal , (string_literal ""%s section data"" " string_content ") , number_literal ))))) ;) (expression_statement "snprintf(local_5c,0x40,__format,uVar5);" (call_expression "snprintf(local_5c,0x40,__format,uVar5)" identifier (argument_list "(local_5c,0x40,__format,uVar5)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "uVar5 = *(undefined4 *)(param_2 + 0x10);" (assignment_expression "uVar5 = *(undefined4 *)(param_2 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x10)" * (cast_expression "(undefined4 *)(param_2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(undefined4 *)(param_2 + 0x14);" (assignment_expression "uVar6 = *(undefined4 *)(param_2 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(&DAT_000b4870 + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4870 + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4870 + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b4870 + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4870 + iVar3)" ( (binary_expression "&DAT_000b4870 + iVar3" (pointer_expression "&DAT_000b4870" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;" (assignment_expression "*(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5" (pointer_expression "*(undefined4 *)(&DAT_000b4854 + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b4854 + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4854 + iVar3)" ( (binary_expression "&DAT_000b4854 + iVar3" (pointer_expression "&DAT_000b4854" & identifier) + identifier) )))) = identifier) ;) (expression_statement "*(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;" (assignment_expression "*(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6" (pointer_expression "*(undefined4 *)(&DAT_000b4858 + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b4858 + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4858 + iVar3)" ( (binary_expression "&DAT_000b4858 + iVar3" (pointer_expression "&DAT_000b4858" & identifier) + identifier) )))) = identifier) ;) (expression_statement "*(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;" (assignment_expression "*(undefined4 *)(&DAT_000b484c + iVar3) = *param_3" (pointer_expression "*(undefined4 *)(&DAT_000b484c + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b484c + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b484c + iVar3)" ( (binary_expression "&DAT_000b484c + iVar3" (pointer_expression "&DAT_000b484c" & identifier) + identifier) )))) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);" (assignment_expression "local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" identifier = (cast_expression "(byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" identifier (argument_list "(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" ( number_literal , number_literal , (pointer_expression "*(undefined4 *)(param_2 + 0x20)" * (cast_expression "(undefined4 *)(param_2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x24)" * (cast_expression "(undefined4 *)(param_2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) , identifier ))))) ;) (expression_statement "*(byte **)(&DAT_000b4850 + iVar3) = local_80;" (assignment_expression "*(byte **)(&DAT_000b4850 + iVar3) = local_80" (pointer_expression "*(byte **)(&DAT_000b4850 + iVar3)" * (cast_expression "(byte **)(&DAT_000b4850 + iVar3)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + iVar3)" ( (binary_expression "&DAT_000b4850 + iVar3" (pointer_expression "&DAT_000b4850" & identifier) + identifier) )))) = identifier) ;) (if_statement "if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }" if (parenthesized_expression "(local_80 == (byte *)0x0)" ( (binary_expression "local_80 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }" { (expression_statement "*(undefined4 *)(&DAT_000b485c + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b485c + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b485c + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b485c + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b485c + iVar3)" ( (binary_expression "&DAT_000b485c + iVar3" (pointer_expression "&DAT_000b485c" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(&DAT_000b4860 + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4860 + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4860 + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b4860 + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4860 + iVar3)" ( (binary_expression "&DAT_000b4860 + iVar3" (pointer_expression "&DAT_000b4860" & identifier) + identifier) )))) = number_literal) ;) (return_statement "return false;" return false ;) })) (expression_statement "local_7c = *(uint *)(param_2 + 0x20);" (assignment_expression "local_7c = *(uint *)(param_2 + 0x20)" identifier = (pointer_expression "*(uint *)(param_2 + 0x20)" * (cast_expression "(uint *)(param_2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_78 = *(uint *)(param_2 + 0x24);" (assignment_expression "local_78 = *(uint *)(param_2 + 0x24)" identifier = (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" if (parenthesized_expression "((*(uint *)(param_2 + 8) & 0x800) == 0)" ( (binary_expression "(*(uint *)(param_2 + 8) & 0x800) == 0" (parenthesized_expression "(*(uint *)(param_2 + 8) & 0x800)" ( (binary_expression "*(uint *)(param_2 + 8) & 0x800" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }" { (expression_statement "uVar4 = (uint)(0xc < local_7c);" (assignment_expression "uVar4 = (uint)(0xc < local_7c)" identifier = (call_expression "(uint)(0xc < local_7c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xc < local_7c)" ( (binary_expression "0xc < local_7c" number_literal < identifier) )))) ;) (expression_statement "uVar7 = -local_78;" (assignment_expression "uVar7 = -local_78" identifier = (unary_expression "-local_78" - identifier)) ;) (expression_statement "bVar15 = local_78 != 0 || uVar7 < uVar4;" (assignment_expression "bVar15 = local_78 != 0 || uVar7 < uVar4" identifier = (binary_expression "local_78 != 0 || uVar7 < uVar4" (binary_expression "local_78 != 0" identifier != number_literal) || (binary_expression "uVar7 < uVar4" identifier < identifier))) ;) (expression_statement "bVar16 = uVar7 == uVar4;" (assignment_expression "bVar16 = uVar7 == uVar4" identifier = (binary_expression "uVar7 == uVar4" identifier == identifier)) ;) (if_statement "if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;" if (parenthesized_expression "(local_78 == 0 && uVar7 >= uVar4)" ( (binary_expression "local_78 == 0 && uVar7 >= uVar4" (binary_expression "local_78 == 0" identifier == number_literal) && (binary_expression "uVar7 >= uVar4" identifier >= identifier)) )) (goto_statement "goto LAB_00041a50;" goto statement_identifier ;)) (expression_statement "iVar3 = 5;" (assignment_expression "iVar3 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = local_80;" (assignment_expression "pbVar12 = local_80" identifier = identifier) ;) (expression_statement "pbVar14 = &DAT_0007d064;" (assignment_expression "pbVar14 = &DAT_0007d064" identifier = (pointer_expression "&DAT_0007d064" & identifier)) ;) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);" do (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar14;" (assignment_expression "bVar15 = *pbVar12 < *pbVar14" identifier = (binary_expression "*pbVar12 < *pbVar14" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar14;" (assignment_expression "bVar16 = *pbVar12 == *pbVar14" identifier = (binary_expression "*pbVar12 == *pbVar14" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;" if (parenthesized_expression "((!bVar15 && !bVar16) != bVar15)" ( (binary_expression "(!bVar15 && !bVar16) != bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" ( (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_00041a50;" goto statement_identifier ;)) (expression_statement "bVar17 = local_80[4];" (assignment_expression "bVar17 = local_80[4]" identifier = (subscript_expression "local_80[4]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = CONCAT11(bVar17,local_80[5]);" (assignment_expression "uVar1 = CONCAT11(bVar17,local_80[5])" identifier = (call_expression "CONCAT11(bVar17,local_80[5])" identifier (argument_list "(bVar17,local_80[5])" ( identifier , (subscript_expression "local_80[5]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar2 = CONCAT21(uVar1,local_80[6]);" (assignment_expression "uVar2 = CONCAT21(uVar1,local_80[6])" identifier = (call_expression "CONCAT21(uVar1,local_80[6])" identifier (argument_list "(uVar1,local_80[6])" ( identifier , (subscript_expression "local_80[6]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;" (assignment_expression "uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100" identifier = (binary_expression "CONCAT31(uVar2,local_80[7]) * 0x100" (call_expression "CONCAT31(uVar2,local_80[7])" identifier (argument_list "(uVar2,local_80[7])" ( identifier , (subscript_expression "local_80[7]" identifier [ number_literal ]) ))) * number_literal)) ;) (expression_statement "uVar13 = local_80[8] + uVar4;" (assignment_expression "uVar13 = local_80[8] + uVar4" identifier = (binary_expression "local_80[8] + uVar4" (subscript_expression "local_80[8]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar7 = uVar13 * 0x100;" (assignment_expression "uVar7 = uVar13 * 0x100" identifier = (binary_expression "uVar13 * 0x100" identifier * number_literal)) ;) (expression_statement "uVar8 = uVar7 + local_80[9];" (assignment_expression "uVar8 = uVar7 + local_80[9]" identifier = (binary_expression "uVar7 + local_80[9]" identifier + (subscript_expression "local_80[9]" identifier [ number_literal ]))) ;) (expression_statement "uVar9 = uVar8 * 0x100;" (assignment_expression "uVar9 = uVar8 * 0x100" identifier = (binary_expression "uVar8 * 0x100" identifier * number_literal)) ;) (expression_statement "uVar10 = local_80[10] + uVar9;" (assignment_expression "uVar10 = local_80[10] + uVar9" identifier = (binary_expression "local_80[10] + uVar9" (subscript_expression "local_80[10]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar11 = uVar10 * 0x100;" (assignment_expression "uVar11 = uVar10 * 0x100" identifier = (binary_expression "uVar10 * 0x100" identifier * number_literal)) ;) (expression_statement "local_6c = local_80[0xb] + uVar11;" (assignment_expression "local_6c = local_80[0xb] + uVar11" identifier = (binary_expression "local_80[0xb] + uVar11" (subscript_expression "local_80[0xb]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);" (assignment_expression "local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11)" identifier = (binary_expression "((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11)" (parenthesized_expression "((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18)" ( (binary_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18" (binary_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100" (parenthesized_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9))" ( (binary_expression "((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)" (parenthesized_expression "((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18)" ( (binary_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18" (binary_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100" (parenthesized_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9]))" ( (binary_expression "((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])" (parenthesized_expression "((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18)" ( (binary_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18" (binary_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100" (parenthesized_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4))" ( (binary_expression "((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)" (parenthesized_expression "((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17)" ( (binary_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17" (binary_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100" (parenthesized_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8))" ( (binary_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)" (binary_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100" (parenthesized_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8))" ( (binary_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)" (binary_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100" (cast_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[5],(uint)bVar17 << 8)" identifier (argument_list "((uint)local_80[5],(uint)bVar17 << 8)" ( (cast_expression "(uint)local_80[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[5]" identifier [ number_literal ])) , (binary_expression "(uint)bVar17 << 8" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) )))) * number_literal) + (cast_expression "(uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[6],(uint)uVar1 << 8)" identifier (argument_list "((uint)local_80[6],(uint)uVar1 << 8)" ( (cast_expression "(uint)local_80[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[6]" identifier [ number_literal ])) , (binary_expression "(uint)uVar1 << 8" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) ))))) )) * number_literal) + (cast_expression "(uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[7],(uint)uVar2 << 8)" identifier (argument_list "((uint)local_80[7],(uint)uVar2 << 8)" ( (cast_expression "(uint)local_80[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[7]" identifier [ number_literal ])) , (binary_expression "(uint)uVar2 << 8" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) ))))) )) * number_literal) | (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) )) + (cast_expression "(uint)CARRY4((uint)local_80[8],uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[8],uVar4)" identifier (argument_list "((uint)local_80[8],uVar4)" ( (cast_expression "(uint)local_80[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[8]" identifier [ number_literal ])) , identifier ))))) )) * number_literal) | (binary_expression "uVar13 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4(uVar7,(uint)local_80[9])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar7,(uint)local_80[9])" identifier (argument_list "(uVar7,(uint)local_80[9])" ( identifier , (cast_expression "(uint)local_80[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[9]" identifier [ number_literal ])) ))))) )) * number_literal) | (binary_expression "uVar8 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4((uint)local_80[10],uVar9)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[10],uVar9)" identifier (argument_list "((uint)local_80[10],uVar9)" ( (cast_expression "(uint)local_80[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[10]" identifier [ number_literal ])) , identifier ))))) )) * number_literal) | (binary_expression "uVar10 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4((uint)local_80[0xb],uVar11)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[0xb],uVar11)" identifier (argument_list "((uint)local_80[0xb],uVar11)" ( (cast_expression "(uint)local_80[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[0xb]" identifier [ number_literal ])) , identifier )))))) ;) (expression_statement "local_80 = local_80 + 0xc;" (assignment_expression "local_80 = local_80 + 0xc" identifier = (binary_expression "local_80 + 0xc" identifier + number_literal)) ;) (expression_statement "bVar15 = 0xb < local_7c;" (assignment_expression "bVar15 = 0xb < local_7c" identifier = (binary_expression "0xb < local_7c" number_literal < identifier)) ;) (expression_statement "local_7c = local_7c - 0xc;" (assignment_expression "local_7c = local_7c - 0xc" identifier = (binary_expression "local_7c - 0xc" identifier - number_literal)) ;) (expression_statement "local_78 = (local_78 - 1) + (uint)bVar15;" (assignment_expression "local_78 = (local_78 - 1) + (uint)bVar15" identifier = (binary_expression "(local_78 - 1) + (uint)bVar15" (parenthesized_expression "(local_78 - 1)" ( (binary_expression "local_78 - 1" identifier - number_literal) )) + (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) (else_clause "else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" else (compound_statement "{\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" { (if_statement "if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }" if (parenthesized_expression "(local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc))" ( (binary_expression "local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)" identifier < (parenthesized_expression "(local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)" ( (binary_expression "local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc" identifier < (binary_expression "(-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc" (parenthesized_expression "(-(uint)(DAT_000b6324 == 0) & 0xc)" ( (binary_expression "-(uint)(DAT_000b6324 == 0) & 0xc" (unary_expression "-(uint)(DAT_000b6324 == 0)" - (call_expression "(uint)(DAT_000b6324 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_000b6324 == 0)" ( (binary_expression "DAT_000b6324 == 0" identifier == number_literal) )))) & number_literal) )) + number_literal)) ))) )) (compound_statement "{\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }" { (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "param_1 * 0x10" identifier * number_literal) ])) ;) (expression_statement "uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);" (assignment_expression "uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5)" identifier = (call_expression "dcgettext(0,"compressed section %s is too small to contain a compression header",5)" identifier (argument_list "(0,"compressed section %s is too small to contain a compression header",5)" ( number_literal , (string_literal ""compressed section %s is too small to contain a compression header"" " string_content ") , number_literal )))) ;) (expression_statement "warn(uVar6,uVar5);" (call_expression "warn(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "uVar4 = FUN_0001be30(local_7c,local_78);" (assignment_expression "uVar4 = FUN_0001be30(local_7c,local_78)" identifier = (call_expression "FUN_0001be30(local_7c,local_78)" identifier (argument_list "(local_7c,local_78)" ( identifier , identifier )))) ;) (if_statement "if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }" if (parenthesized_expression "(local_70 != 1)" ( (binary_expression "local_70 != 1" identifier != number_literal) )) (compound_statement "{\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }" { (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "param_1 * 0x10" identifier * number_literal) ])) ;) (expression_statement "uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);" (assignment_expression "uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" identifier = (call_expression "dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" identifier (argument_list "(0,"section \'%s\' has unsupported compress type: %d\n",5)" ( number_literal , (string_literal ""section \'%s\' has unsupported compress type: %d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "warn(uVar6,uVar5,local_70);" (call_expression "warn(uVar6,uVar5,local_70)" identifier (argument_list "(uVar6,uVar5,local_70)" ( identifier , identifier , identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "local_80 = local_80 + uVar4;" (assignment_expression "local_80 = local_80 + uVar4" identifier = (binary_expression "local_80 + uVar4" identifier + identifier)) ;) (expression_statement "bVar15 = local_7c < uVar4;" (assignment_expression "bVar15 = local_7c < uVar4" identifier = (binary_expression "local_7c < uVar4" identifier < identifier)) ;) (expression_statement "local_7c = local_7c - uVar4;" (assignment_expression "local_7c = local_7c - uVar4" identifier = (binary_expression "local_7c - uVar4" identifier - identifier)) ;) (expression_statement "local_78 = local_78 - bVar15;" (assignment_expression "local_78 = local_78 - bVar15" identifier = (binary_expression "local_78 - bVar15" identifier - identifier)) ;) }))) (if_statement "if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }" if (parenthesized_expression "(local_68 != 0 || local_6c != 0)" ( (binary_expression "local_68 != 0 || local_6c != 0" (binary_expression "local_68 != 0" identifier != number_literal) || (binary_expression "local_6c != 0" identifier != number_literal)) )) (compound_statement "{\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }" { (expression_statement "iVar3 = FUN_0001d690(&local_7c);" (assignment_expression "iVar3 = FUN_0001d690(&local_7c)" identifier = (call_expression "FUN_0001d690(&local_7c)" identifier (argument_list "(&local_7c)" ( (pointer_expression "&local_7c" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }" { (expression_statement "uVar5 = FUN_00022190();" (assignment_expression "uVar5 = FUN_00022190()" identifier = (call_expression "FUN_00022190()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Unable to decompress section %s\n",5)" identifier = (call_expression "dcgettext(0,"Unable to decompress section %s\n",5)" identifier (argument_list "(0,"Unable to decompress section %s\n",5)" ( number_literal , (string_literal ""Unable to decompress section %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "error(uVar6,uVar5);" (call_expression "error(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "free(*(void **)(&DAT_000b4850 + param_1 * 0x40));" (call_expression "free(*(void **)(&DAT_000b4850 + param_1 * 0x40))" identifier (argument_list "(*(void **)(&DAT_000b4850 + param_1 * 0x40))" ( (pointer_expression "*(void **)(&DAT_000b4850 + param_1 * 0x40)" * (cast_expression "(void **)(&DAT_000b4850 + param_1 * 0x40)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" ( (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "param_1 * 0x40" identifier * number_literal)) )))) ))) ;) (expression_statement "*(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;" (assignment_expression "*(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80" (pointer_expression "*(byte **)(&DAT_000b4850 + param_1 * 0x40)" * (cast_expression "(byte **)(&DAT_000b4850 + param_1 * 0x40)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" ( (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "param_1 * 0x40" identifier * number_literal)) )))) = identifier) ;) })) (labeled_statement "LAB_00041a50:\n  param_1 = param_1 * 0x40;" statement_identifier : (expression_statement "param_1 = param_1 * 0x40;" (assignment_expression "param_1 = param_1 * 0x40" identifier = (binary_expression "param_1 * 0x40" identifier * number_literal)) ;)) (expression_statement "*(uint *)(&DAT_000b485c + param_1) = local_7c;" (assignment_expression "*(uint *)(&DAT_000b485c + param_1) = local_7c" (pointer_expression "*(uint *)(&DAT_000b485c + param_1)" * (cast_expression "(uint *)(&DAT_000b485c + param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b485c + param_1)" ( (binary_expression "&DAT_000b485c + param_1" (pointer_expression "&DAT_000b485c" & identifier) + identifier) )))) = identifier) ;) (expression_statement "*(uint *)(&DAT_000b4860 + param_1) = local_78;" (assignment_expression "*(uint *)(&DAT_000b4860 + param_1) = local_78" (pointer_expression "*(uint *)(&DAT_000b4860 + param_1)" * (cast_expression "(uint *)(&DAT_000b4860 + param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4860 + param_1)" ( (binary_expression "&DAT_000b4860 + param_1" (pointer_expression "&DAT_000b4860" & identifier) + identifier) )))) = identifier) ;) (if_statement "if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }" if (parenthesized_expression "(*(int *)(&DAT_000b4850 + param_1) == 0)" ( (binary_expression "*(int *)(&DAT_000b4850 + param_1) == 0" (pointer_expression "*(int *)(&DAT_000b4850 + param_1)" * (cast_expression "(int *)(&DAT_000b4850 + param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4850 + param_1)" ( (binary_expression "&DAT_000b4850 + param_1" (pointer_expression "&DAT_000b4850" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }" if (parenthesized_expression "(*(int *)(&DAT_000b487c + param_1) == 0)" ( (binary_expression "*(int *)(&DAT_000b487c + param_1) == 0" (pointer_expression "*(int *)(&DAT_000b487c + param_1)" * (cast_expression "(int *)(&DAT_000b487c + param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b487c + param_1)" ( (binary_expression "&DAT_000b487c + param_1" (pointer_expression "&DAT_000b487c" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }" { (expression_statement "*(undefined4 *)(&DAT_000b4868 + param_1) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4868 + param_1) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4868 + param_1)" * (cast_expression "(undefined4 *)(&DAT_000b4868 + param_1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4868 + param_1)" ( (binary_expression "&DAT_000b4868 + param_1" (pointer_expression "&DAT_000b4868" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(&DAT_000b486c + param_1) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b486c + param_1) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b486c + param_1)" * (cast_expression "(undefined4 *)(&DAT_000b486c + param_1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b486c + param_1)" ( (binary_expression "&DAT_000b486c + param_1" (pointer_expression "&DAT_000b486c" & identifier) + identifier) )))) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);" (assignment_expression "iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" identifier = (call_expression "FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" identifier (argument_list "(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" ( identifier , identifier , (binary_expression "&DAT_000b4868 + param_1" (pointer_expression "&DAT_000b4868" & identifier) + identifier) , (binary_expression "&DAT_000b486c + param_1" (pointer_expression "&DAT_000b486c" & identifier) + identifier) )))) ;) (return_statement "return iVar3 != 0;" return (binary_expression "iVar3 != 0" identifier != number_literal) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbfd_boolean __regparm3\nload_specific_debug_section(dwarf_section_display_enum debug,Elf_Internal_Shdr *sec,void *data)\n\n{\n  void *__ptr;\n  undefined4 uVar1;\n  ushort uVar2;\n  uint3 uVar3;\n  bfd_vma bVar4;\n  int iVar5;\n  char *pcVar6;\n  uint uVar7;\n  bfd_boolean bVar8;\n  char *pcVar9;\n  Filedata *filedata;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  uint uVar14;\n  byte *pbVar15;\n  uint uVar16;\n  byte *pbVar17;\n  bool bVar18;\n  bool bVar19;\n  byte bVar20;\n  uchar *start;\n  dwarf_size_type size;\n  Elf_Internal_Chdr chdr;\n  char buf [64];\n  \n  bVar20 = 0;\n  __ptr = *(void **)(&DAT_000b4850 + debug * 0x40);\n  if (__ptr != (void *)0x0) {\n                    /* WARNING: Load size is inaccurate */\n    iVar5 = strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data);\n    if (iVar5 == 0) {\n      return 1;\n    }\n    free(__ptr);\n  }\n  pcVar9 = "%s section data";\n  iVar5 = debug * 0x40;\n  uVar1 = (&DAT_000b4848)[debug * 0x10];\n  pcVar6 = (char *)dcgettext(0,"%s section data",5);\n  snprintf(buf,0x40,pcVar6,uVar1);\n  bVar4 = sec->sh_addr;\n  uVar1 = *(undefined4 *)((int)&sec->sh_addr + 4);\n  *(undefined4 *)(&DAT_000b4870 + iVar5) = 0;\n  *(int *)(&DAT_000b4854 + iVar5) = (int)bVar4;\n  *(undefined4 *)(&DAT_000b4858 + iVar5) = uVar1;\n                    /* WARNING: Load size is inaccurate */\n  *(undefined4 *)(&DAT_000b484c + iVar5) = *data;\n  start = (uchar *)get_data((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf);\n  *(uchar **)(&DAT_000b4850 + iVar5) = start;\n  if (start == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar5) = 0;\n    return 0;\n  }\n  size._0_4_ = (uint)sec->sh_size;\n  pcVar6 = *(char **)((int)&sec->sh_size + 4);\n  size._4_4_ = pcVar6;\n  if ((sec->sh_flags & 0x800) == 0) {\n    uVar7 = (uint)(0xc < (uint)size);\n    uVar10 = -(int)pcVar6;\n    bVar18 = pcVar6 != (char *)0x0 || uVar10 < uVar7;\n    bVar19 = uVar10 == uVar7;\n    if (pcVar6 == (char *)0x0 && uVar10 >= uVar7) goto LAB_00041a50;\n    iVar5 = 5;\n    pbVar15 = start;\n    pbVar17 = &DAT_0007d064;\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar18 = *pbVar15 < *pbVar17;\n      bVar19 = *pbVar15 == *pbVar17;\n      pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;\n      pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;\n    } while (bVar19);\n    if ((!bVar18 && !bVar19) != bVar18) goto LAB_00041a50;\n    bVar20 = start[4];\n    uVar2 = CONCAT11(bVar20,start[5]);\n    uVar3 = CONCAT21(uVar2,start[6]);\n    uVar7 = CONCAT31(uVar3,start[7]) * 0x100;\n    uVar16 = start[8] + uVar7;\n    uVar10 = uVar16 * 0x100;\n    uVar11 = uVar10 + start[9];\n    uVar12 = uVar11 * 0x100;\n    uVar13 = start[10] + uVar12;\n    uVar14 = uVar13 * 0x100;\n    chdr.ch_size._0_4_ = (dwarf_size_type *)(start[0xb] + uVar14);\n    chdr.ch_size._4_4_ =\n         ((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +\n         (uint)CARRY4((uint)start[0xb],uVar14);\n    start = start + 0xc;\n    bVar18 = 0xb < (uint)size;\n    size._0_4_ = (uint)size - 0xc;\n    size._4_4_ = pcVar6 + (bVar18 - 1);\n  }\n  else {\n    if (pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);\n      warn(pcVar9,uVar1);\n      return 0;\n    }\n    uVar7 = get_compression_header(&chdr,start,sec->sh_size);\n    if (chdr.ch_type != 1) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(pcVar9,uVar1,chdr.ch_type);\n      return 0;\n    }\n    start = start + uVar7;\n    bVar18 = (uint)size < uVar7;\n    size._0_4_ = (uint)size - uVar7;\n    size._4_4_ = size._4_4_ + -(uint)bVar18;\n    pcVar9 = pcVar6;\n  }\n  if (chdr.ch_size._4_4_ != 0 || (dwarf_size_type *)chdr.ch_size != (dwarf_size_type *)0x0) {\n    bVar8 = uncompress_section_contents\n                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size);\n    if (bVar8 == 0) {\n      pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec);\n      pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);\n      error(pcVar6,pcVar9);\n      return 0;\n    }\n    free(*(void **)(&DAT_000b4850 + debug * 0x40));\n    *(uchar **)(&DAT_000b4850 + debug * 0x40) = start;\n  }\nLAB_00041a50:\n  iVar5 = debug * 0x40;\n  *(uint *)(&DAT_000b485c + iVar5) = (uint)size;\n  *(char **)(&DAT_000b4860 + iVar5) = size._4_4_;\n  if (*(uchar **)(&DAT_000b4850 + iVar5) == (uchar *)0x0) {\n    return 0;\n  }\n  if (*(int *)(&DAT_000b487c + iVar5) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b486c + iVar5) = 0;\n    return 1;\n  }\n  bVar8 = apply_relocations((Filedata *)data,sec,*(uchar **)(&DAT_000b4850 + iVar5),\n                            CONCAT44(size._4_4_,(uint)size),(void **)(&DAT_000b4868 + iVar5),\n                            (ulong *)(&DAT_000b486c + iVar5));\n  return (uint)(bVar8 != 0);\n}\n\n" comment (function_definition "bfd_boolean __regparm3\nload_specific_debug_section(dwarf_section_display_enum debug,Elf_Internal_Shdr *sec,void *data)\n\n{\n  void *__ptr;\n  undefined4 uVar1;\n  ushort uVar2;\n  uint3 uVar3;\n  bfd_vma bVar4;\n  int iVar5;\n  char *pcVar6;\n  uint uVar7;\n  bfd_boolean bVar8;\n  char *pcVar9;\n  Filedata *filedata;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  uint uVar14;\n  byte *pbVar15;\n  uint uVar16;\n  byte *pbVar17;\n  bool bVar18;\n  bool bVar19;\n  byte bVar20;\n  uchar *start;\n  dwarf_size_type size;\n  Elf_Internal_Chdr chdr;\n  char buf [64];\n  \n  bVar20 = 0;\n  __ptr = *(void **)(&DAT_000b4850 + debug * 0x40);\n  if (__ptr != (void *)0x0) {\n                    /* WARNING: Load size is inaccurate */\n    iVar5 = strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data);\n    if (iVar5 == 0) {\n      return 1;\n    }\n    free(__ptr);\n  }\n  pcVar9 = "%s section data";\n  iVar5 = debug * 0x40;\n  uVar1 = (&DAT_000b4848)[debug * 0x10];\n  pcVar6 = (char *)dcgettext(0,"%s section data",5);\n  snprintf(buf,0x40,pcVar6,uVar1);\n  bVar4 = sec->sh_addr;\n  uVar1 = *(undefined4 *)((int)&sec->sh_addr + 4);\n  *(undefined4 *)(&DAT_000b4870 + iVar5) = 0;\n  *(int *)(&DAT_000b4854 + iVar5) = (int)bVar4;\n  *(undefined4 *)(&DAT_000b4858 + iVar5) = uVar1;\n                    /* WARNING: Load size is inaccurate */\n  *(undefined4 *)(&DAT_000b484c + iVar5) = *data;\n  start = (uchar *)get_data((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf);\n  *(uchar **)(&DAT_000b4850 + iVar5) = start;\n  if (start == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar5) = 0;\n    return 0;\n  }\n  size._0_4_ = (uint)sec->sh_size;\n  pcVar6 = *(char **)((int)&sec->sh_size + 4);\n  size._4_4_ = pcVar6;\n  if ((sec->sh_flags & 0x800) == 0) {\n    uVar7 = (uint)(0xc < (uint)size);\n    uVar10 = -(int)pcVar6;\n    bVar18 = pcVar6 != (char *)0x0 || uVar10 < uVar7;\n    bVar19 = uVar10 == uVar7;\n    if (pcVar6 == (char *)0x0 && uVar10 >= uVar7) goto LAB_00041a50;\n    iVar5 = 5;\n    pbVar15 = start;\n    pbVar17 = &DAT_0007d064;\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar18 = *pbVar15 < *pbVar17;\n      bVar19 = *pbVar15 == *pbVar17;\n      pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;\n      pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;\n    } while (bVar19);\n    if ((!bVar18 && !bVar19) != bVar18) goto LAB_00041a50;\n    bVar20 = start[4];\n    uVar2 = CONCAT11(bVar20,start[5]);\n    uVar3 = CONCAT21(uVar2,start[6]);\n    uVar7 = CONCAT31(uVar3,start[7]) * 0x100;\n    uVar16 = start[8] + uVar7;\n    uVar10 = uVar16 * 0x100;\n    uVar11 = uVar10 + start[9];\n    uVar12 = uVar11 * 0x100;\n    uVar13 = start[10] + uVar12;\n    uVar14 = uVar13 * 0x100;\n    chdr.ch_size._0_4_ = (dwarf_size_type *)(start[0xb] + uVar14);\n    chdr.ch_size._4_4_ =\n         ((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +\n         (uint)CARRY4((uint)start[0xb],uVar14);\n    start = start + 0xc;\n    bVar18 = 0xb < (uint)size;\n    size._0_4_ = (uint)size - 0xc;\n    size._4_4_ = pcVar6 + (bVar18 - 1);\n  }\n  else {\n    if (pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);\n      warn(pcVar9,uVar1);\n      return 0;\n    }\n    uVar7 = get_compression_header(&chdr,start,sec->sh_size);\n    if (chdr.ch_type != 1) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(pcVar9,uVar1,chdr.ch_type);\n      return 0;\n    }\n    start = start + uVar7;\n    bVar18 = (uint)size < uVar7;\n    size._0_4_ = (uint)size - uVar7;\n    size._4_4_ = size._4_4_ + -(uint)bVar18;\n    pcVar9 = pcVar6;\n  }\n  if (chdr.ch_size._4_4_ != 0 || (dwarf_size_type *)chdr.ch_size != (dwarf_size_type *)0x0) {\n    bVar8 = uncompress_section_contents\n                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size);\n    if (bVar8 == 0) {\n      pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec);\n      pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);\n      error(pcVar6,pcVar9);\n      return 0;\n    }\n    free(*(void **)(&DAT_000b4850 + debug * 0x40));\n    *(uchar **)(&DAT_000b4850 + debug * 0x40) = start;\n  }\nLAB_00041a50:\n  iVar5 = debug * 0x40;\n  *(uint *)(&DAT_000b485c + iVar5) = (uint)size;\n  *(char **)(&DAT_000b4860 + iVar5) = size._4_4_;\n  if (*(uchar **)(&DAT_000b4850 + iVar5) == (uchar *)0x0) {\n    return 0;\n  }\n  if (*(int *)(&DAT_000b487c + iVar5) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b486c + iVar5) = 0;\n    return 1;\n  }\n  bVar8 = apply_relocations((Filedata *)data,sec,*(uchar **)(&DAT_000b4850 + iVar5),\n                            CONCAT44(size._4_4_,(uint)size),(void **)(&DAT_000b4868 + iVar5),\n                            (ulong *)(&DAT_000b486c + iVar5));\n  return (uint)(bVar8 != 0);\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "load_specific_debug_section(dwarf_section_display_enum debug,Elf_Internal_Shdr *sec,void *data)" identifier (parameter_list "(dwarf_section_display_enum debug,Elf_Internal_Shdr *sec,void *data)" ( (parameter_declaration "dwarf_section_display_enum debug" type_identifier identifier) , (parameter_declaration "Elf_Internal_Shdr *sec" type_identifier (pointer_declarator "*sec" * identifier)) , (parameter_declaration "void *data" primitive_type (pointer_declarator "*data" * identifier)) ))) (compound_statement "{\n  void *__ptr;\n  undefined4 uVar1;\n  ushort uVar2;\n  uint3 uVar3;\n  bfd_vma bVar4;\n  int iVar5;\n  char *pcVar6;\n  uint uVar7;\n  bfd_boolean bVar8;\n  char *pcVar9;\n  Filedata *filedata;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  uint uVar14;\n  byte *pbVar15;\n  uint uVar16;\n  byte *pbVar17;\n  bool bVar18;\n  bool bVar19;\n  byte bVar20;\n  uchar *start;\n  dwarf_size_type size;\n  Elf_Internal_Chdr chdr;\n  char buf [64];\n  \n  bVar20 = 0;\n  __ptr = *(void **)(&DAT_000b4850 + debug * 0x40);\n  if (__ptr != (void *)0x0) {\n                    /* WARNING: Load size is inaccurate */\n    iVar5 = strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data);\n    if (iVar5 == 0) {\n      return 1;\n    }\n    free(__ptr);\n  }\n  pcVar9 = "%s section data";\n  iVar5 = debug * 0x40;\n  uVar1 = (&DAT_000b4848)[debug * 0x10];\n  pcVar6 = (char *)dcgettext(0,"%s section data",5);\n  snprintf(buf,0x40,pcVar6,uVar1);\n  bVar4 = sec->sh_addr;\n  uVar1 = *(undefined4 *)((int)&sec->sh_addr + 4);\n  *(undefined4 *)(&DAT_000b4870 + iVar5) = 0;\n  *(int *)(&DAT_000b4854 + iVar5) = (int)bVar4;\n  *(undefined4 *)(&DAT_000b4858 + iVar5) = uVar1;\n                    /* WARNING: Load size is inaccurate */\n  *(undefined4 *)(&DAT_000b484c + iVar5) = *data;\n  start = (uchar *)get_data((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf);\n  *(uchar **)(&DAT_000b4850 + iVar5) = start;\n  if (start == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar5) = 0;\n    return 0;\n  }\n  size._0_4_ = (uint)sec->sh_size;\n  pcVar6 = *(char **)((int)&sec->sh_size + 4);\n  size._4_4_ = pcVar6;\n  if ((sec->sh_flags & 0x800) == 0) {\n    uVar7 = (uint)(0xc < (uint)size);\n    uVar10 = -(int)pcVar6;\n    bVar18 = pcVar6 != (char *)0x0 || uVar10 < uVar7;\n    bVar19 = uVar10 == uVar7;\n    if (pcVar6 == (char *)0x0 && uVar10 >= uVar7) goto LAB_00041a50;\n    iVar5 = 5;\n    pbVar15 = start;\n    pbVar17 = &DAT_0007d064;\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar18 = *pbVar15 < *pbVar17;\n      bVar19 = *pbVar15 == *pbVar17;\n      pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;\n      pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;\n    } while (bVar19);\n    if ((!bVar18 && !bVar19) != bVar18) goto LAB_00041a50;\n    bVar20 = start[4];\n    uVar2 = CONCAT11(bVar20,start[5]);\n    uVar3 = CONCAT21(uVar2,start[6]);\n    uVar7 = CONCAT31(uVar3,start[7]) * 0x100;\n    uVar16 = start[8] + uVar7;\n    uVar10 = uVar16 * 0x100;\n    uVar11 = uVar10 + start[9];\n    uVar12 = uVar11 * 0x100;\n    uVar13 = start[10] + uVar12;\n    uVar14 = uVar13 * 0x100;\n    chdr.ch_size._0_4_ = (dwarf_size_type *)(start[0xb] + uVar14);\n    chdr.ch_size._4_4_ =\n         ((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +\n         (uint)CARRY4((uint)start[0xb],uVar14);\n    start = start + 0xc;\n    bVar18 = 0xb < (uint)size;\n    size._0_4_ = (uint)size - 0xc;\n    size._4_4_ = pcVar6 + (bVar18 - 1);\n  }\n  else {\n    if (pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);\n      warn(pcVar9,uVar1);\n      return 0;\n    }\n    uVar7 = get_compression_header(&chdr,start,sec->sh_size);\n    if (chdr.ch_type != 1) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(pcVar9,uVar1,chdr.ch_type);\n      return 0;\n    }\n    start = start + uVar7;\n    bVar18 = (uint)size < uVar7;\n    size._0_4_ = (uint)size - uVar7;\n    size._4_4_ = size._4_4_ + -(uint)bVar18;\n    pcVar9 = pcVar6;\n  }\n  if (chdr.ch_size._4_4_ != 0 || (dwarf_size_type *)chdr.ch_size != (dwarf_size_type *)0x0) {\n    bVar8 = uncompress_section_contents\n                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size);\n    if (bVar8 == 0) {\n      pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec);\n      pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);\n      error(pcVar6,pcVar9);\n      return 0;\n    }\n    free(*(void **)(&DAT_000b4850 + debug * 0x40));\n    *(uchar **)(&DAT_000b4850 + debug * 0x40) = start;\n  }\nLAB_00041a50:\n  iVar5 = debug * 0x40;\n  *(uint *)(&DAT_000b485c + iVar5) = (uint)size;\n  *(char **)(&DAT_000b4860 + iVar5) = size._4_4_;\n  if (*(uchar **)(&DAT_000b4850 + iVar5) == (uchar *)0x0) {\n    return 0;\n  }\n  if (*(int *)(&DAT_000b487c + iVar5) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b486c + iVar5) = 0;\n    return 1;\n  }\n  bVar8 = apply_relocations((Filedata *)data,sec,*(uchar **)(&DAT_000b4850 + iVar5),\n                            CONCAT44(size._4_4_,(uint)size),(void **)(&DAT_000b4868 + iVar5),\n                            (ulong *)(&DAT_000b486c + iVar5));\n  return (uint)(bVar8 != 0);\n}" { (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint3 uVar3;" type_identifier identifier ;) (declaration "bfd_vma bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "bfd_boolean bVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "Filedata *filedata;" type_identifier (pointer_declarator "*filedata" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "uchar *start;" type_identifier (pointer_declarator "*start" * identifier) ;) (declaration "dwarf_size_type size;" type_identifier identifier ;) (declaration "Elf_Internal_Chdr chdr;" type_identifier identifier ;) (declaration "char buf [64];" primitive_type (array_declarator "buf [64]" identifier [ number_literal ]) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "__ptr = *(void **)(&DAT_000b4850 + debug * 0x40);" (assignment_expression "__ptr = *(void **)(&DAT_000b4850 + debug * 0x40)" identifier = (pointer_expression "*(void **)(&DAT_000b4850 + debug * 0x40)" * (cast_expression "(void **)(&DAT_000b4850 + debug * 0x40)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + debug * 0x40)" ( (binary_expression "&DAT_000b4850 + debug * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "debug * 0x40" identifier * number_literal)) ))))) ;) (if_statement "if (__ptr != (void *)0x0) {\n                    /* WARNING: Load size is inaccurate */\n    iVar5 = strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data);\n    if (iVar5 == 0) {\n      return 1;\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(__ptr != (void *)0x0)" ( (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Load size is inaccurate */\n    iVar5 = strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data);\n    if (iVar5 == 0) {\n      return 1;\n    }\n    free(__ptr);\n  }" { comment (expression_statement "iVar5 = strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data);" (assignment_expression "iVar5 = strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data)" identifier = (call_expression "strcmp(*(char **)(&DAT_000b484c + debug * 0x40),*data)" identifier (argument_list "(*(char **)(&DAT_000b484c + debug * 0x40),*data)" ( (pointer_expression "*(char **)(&DAT_000b484c + debug * 0x40)" * (cast_expression "(char **)(&DAT_000b484c + debug * 0x40)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b484c + debug * 0x40)" ( (binary_expression "&DAT_000b484c + debug * 0x40" (pointer_expression "&DAT_000b484c" & identifier) + (binary_expression "debug * 0x40" identifier * number_literal)) )))) , (pointer_expression "*data" * identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n      return 1;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) })) (expression_statement "pcVar9 = "%s section data";" (assignment_expression "pcVar9 = "%s section data"" identifier = (string_literal ""%s section data"" " string_content ")) ;) (expression_statement "iVar5 = debug * 0x40;" (assignment_expression "iVar5 = debug * 0x40" identifier = (binary_expression "debug * 0x40" identifier * number_literal)) ;) (expression_statement "uVar1 = (&DAT_000b4848)[debug * 0x10];" (assignment_expression "uVar1 = (&DAT_000b4848)[debug * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[debug * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "debug * 0x10" identifier * number_literal) ])) ;) (expression_statement "pcVar6 = (char *)dcgettext(0,"%s section data",5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"%s section data",5)" identifier = (cast_expression "(char *)dcgettext(0,"%s section data",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%s section data",5)" identifier (argument_list "(0,"%s section data",5)" ( number_literal , (string_literal ""%s section data"" " string_content ") , number_literal ))))) ;) (expression_statement "snprintf(buf,0x40,pcVar6,uVar1);" (call_expression "snprintf(buf,0x40,pcVar6,uVar1)" identifier (argument_list "(buf,0x40,pcVar6,uVar1)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "bVar4 = sec->sh_addr;" (assignment_expression "bVar4 = sec->sh_addr" identifier = (field_expression "sec->sh_addr" identifier -> field_identifier)) ;) (expression_statement "uVar1 = *(undefined4 *)((int)&sec->sh_addr + 4);" (assignment_expression "uVar1 = *(undefined4 *)((int)&sec->sh_addr + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&sec->sh_addr + 4)" * (cast_expression "(undefined4 *)((int)&sec->sh_addr + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sec->sh_addr + 4)" ( (binary_expression "(int)&sec->sh_addr + 4" (cast_expression "(int)&sec->sh_addr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sec->sh_addr" & (field_expression "sec->sh_addr" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(&DAT_000b4870 + iVar5) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4870 + iVar5) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4870 + iVar5)" * (cast_expression "(undefined4 *)(&DAT_000b4870 + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4870 + iVar5)" ( (binary_expression "&DAT_000b4870 + iVar5" (pointer_expression "&DAT_000b4870" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(int *)(&DAT_000b4854 + iVar5) = (int)bVar4;" (assignment_expression "*(int *)(&DAT_000b4854 + iVar5) = (int)bVar4" (pointer_expression "*(int *)(&DAT_000b4854 + iVar5)" * (cast_expression "(int *)(&DAT_000b4854 + iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4854 + iVar5)" ( (binary_expression "&DAT_000b4854 + iVar5" (pointer_expression "&DAT_000b4854" & identifier) + identifier) )))) = (cast_expression "(int)bVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)(&DAT_000b4858 + iVar5) = uVar1;" (assignment_expression "*(undefined4 *)(&DAT_000b4858 + iVar5) = uVar1" (pointer_expression "*(undefined4 *)(&DAT_000b4858 + iVar5)" * (cast_expression "(undefined4 *)(&DAT_000b4858 + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4858 + iVar5)" ( (binary_expression "&DAT_000b4858 + iVar5" (pointer_expression "&DAT_000b4858" & identifier) + identifier) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)(&DAT_000b484c + iVar5) = *data;" (assignment_expression "*(undefined4 *)(&DAT_000b484c + iVar5) = *data" (pointer_expression "*(undefined4 *)(&DAT_000b484c + iVar5)" * (cast_expression "(undefined4 *)(&DAT_000b484c + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b484c + iVar5)" ( (binary_expression "&DAT_000b484c + iVar5" (pointer_expression "&DAT_000b484c" & identifier) + identifier) )))) = (pointer_expression "*data" * identifier)) ;) (expression_statement "start = (uchar *)get_data((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf);" (assignment_expression "start = (uchar *)get_data((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf)" identifier = (cast_expression "(uchar *)get_data((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "get_data((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf)" identifier (argument_list "((void *)0x0,(Filedata *)data,(ulong)sec->sh_offset,1,sec->sh_size,buf)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Filedata *)data" ( (type_descriptor "Filedata *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ulong)sec->sh_offset" ( (type_descriptor "ulong" type_identifier) ) (field_expression "sec->sh_offset" identifier -> field_identifier)) , number_literal , (field_expression "sec->sh_size" identifier -> field_identifier) , identifier ))))) ;) (expression_statement "*(uchar **)(&DAT_000b4850 + iVar5) = start;" (assignment_expression "*(uchar **)(&DAT_000b4850 + iVar5) = start" (pointer_expression "*(uchar **)(&DAT_000b4850 + iVar5)" * (cast_expression "(uchar **)(&DAT_000b4850 + iVar5)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + iVar5)" ( (binary_expression "&DAT_000b4850 + iVar5" (pointer_expression "&DAT_000b4850" & identifier) + identifier) )))) = identifier) ;) (if_statement "if (start == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar5) = 0;\n    return 0;\n  }" if (parenthesized_expression "(start == (byte *)0x0)" ( (binary_expression "start == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(&DAT_000b485c + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar5) = 0;\n    return 0;\n  }" { (expression_statement "*(undefined4 *)(&DAT_000b485c + iVar5) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b485c + iVar5) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b485c + iVar5)" * (cast_expression "(undefined4 *)(&DAT_000b485c + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b485c + iVar5)" ( (binary_expression "&DAT_000b485c + iVar5" (pointer_expression "&DAT_000b485c" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(&DAT_000b4860 + iVar5) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4860 + iVar5) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4860 + iVar5)" * (cast_expression "(undefined4 *)(&DAT_000b4860 + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4860 + iVar5)" ( (binary_expression "&DAT_000b4860 + iVar5" (pointer_expression "&DAT_000b4860" & identifier) + identifier) )))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "size._0_4_ = (uint)sec->sh_size;" (assignment_expression "size._0_4_ = (uint)sec->sh_size" (field_expression "size._0_4_" identifier . field_identifier) = (cast_expression "(uint)sec->sh_size" ( (type_descriptor "uint" type_identifier) ) (field_expression "sec->sh_size" identifier -> field_identifier))) ;) (expression_statement "pcVar6 = *(char **)((int)&sec->sh_size + 4);" (assignment_expression "pcVar6 = *(char **)((int)&sec->sh_size + 4)" identifier = (pointer_expression "*(char **)((int)&sec->sh_size + 4)" * (cast_expression "(char **)((int)&sec->sh_size + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&sec->sh_size + 4)" ( (binary_expression "(int)&sec->sh_size + 4" (cast_expression "(int)&sec->sh_size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sec->sh_size" & (field_expression "sec->sh_size" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "size._4_4_ = pcVar6;" (assignment_expression "size._4_4_ = pcVar6" (field_expression "size._4_4_" identifier . field_identifier) = identifier) ;) (if_statement "if ((sec->sh_flags & 0x800) == 0) {\n    uVar7 = (uint)(0xc < (uint)size);\n    uVar10 = -(int)pcVar6;\n    bVar18 = pcVar6 != (char *)0x0 || uVar10 < uVar7;\n    bVar19 = uVar10 == uVar7;\n    if (pcVar6 == (char *)0x0 && uVar10 >= uVar7) goto LAB_00041a50;\n    iVar5 = 5;\n    pbVar15 = start;\n    pbVar17 = &DAT_0007d064;\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar18 = *pbVar15 < *pbVar17;\n      bVar19 = *pbVar15 == *pbVar17;\n      pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;\n      pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;\n    } while (bVar19);\n    if ((!bVar18 && !bVar19) != bVar18) goto LAB_00041a50;\n    bVar20 = start[4];\n    uVar2 = CONCAT11(bVar20,start[5]);\n    uVar3 = CONCAT21(uVar2,start[6]);\n    uVar7 = CONCAT31(uVar3,start[7]) * 0x100;\n    uVar16 = start[8] + uVar7;\n    uVar10 = uVar16 * 0x100;\n    uVar11 = uVar10 + start[9];\n    uVar12 = uVar11 * 0x100;\n    uVar13 = start[10] + uVar12;\n    uVar14 = uVar13 * 0x100;\n    chdr.ch_size._0_4_ = (dwarf_size_type *)(start[0xb] + uVar14);\n    chdr.ch_size._4_4_ =\n         ((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +\n         (uint)CARRY4((uint)start[0xb],uVar14);\n    start = start + 0xc;\n    bVar18 = 0xb < (uint)size;\n    size._0_4_ = (uint)size - 0xc;\n    size._4_4_ = pcVar6 + (bVar18 - 1);\n  }\n  else {\n    if (pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);\n      warn(pcVar9,uVar1);\n      return 0;\n    }\n    uVar7 = get_compression_header(&chdr,start,sec->sh_size);\n    if (chdr.ch_type != 1) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(pcVar9,uVar1,chdr.ch_type);\n      return 0;\n    }\n    start = start + uVar7;\n    bVar18 = (uint)size < uVar7;\n    size._0_4_ = (uint)size - uVar7;\n    size._4_4_ = size._4_4_ + -(uint)bVar18;\n    pcVar9 = pcVar6;\n  }" if (parenthesized_expression "((sec->sh_flags & 0x800) == 0)" ( (binary_expression "(sec->sh_flags & 0x800) == 0" (parenthesized_expression "(sec->sh_flags & 0x800)" ( (binary_expression "sec->sh_flags & 0x800" (field_expression "sec->sh_flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar7 = (uint)(0xc < (uint)size);\n    uVar10 = -(int)pcVar6;\n    bVar18 = pcVar6 != (char *)0x0 || uVar10 < uVar7;\n    bVar19 = uVar10 == uVar7;\n    if (pcVar6 == (char *)0x0 && uVar10 >= uVar7) goto LAB_00041a50;\n    iVar5 = 5;\n    pbVar15 = start;\n    pbVar17 = &DAT_0007d064;\n    do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar18 = *pbVar15 < *pbVar17;\n      bVar19 = *pbVar15 == *pbVar17;\n      pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;\n      pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;\n    } while (bVar19);\n    if ((!bVar18 && !bVar19) != bVar18) goto LAB_00041a50;\n    bVar20 = start[4];\n    uVar2 = CONCAT11(bVar20,start[5]);\n    uVar3 = CONCAT21(uVar2,start[6]);\n    uVar7 = CONCAT31(uVar3,start[7]) * 0x100;\n    uVar16 = start[8] + uVar7;\n    uVar10 = uVar16 * 0x100;\n    uVar11 = uVar10 + start[9];\n    uVar12 = uVar11 * 0x100;\n    uVar13 = start[10] + uVar12;\n    uVar14 = uVar13 * 0x100;\n    chdr.ch_size._0_4_ = (dwarf_size_type *)(start[0xb] + uVar14);\n    chdr.ch_size._4_4_ =\n         ((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +\n         (uint)CARRY4((uint)start[0xb],uVar14);\n    start = start + 0xc;\n    bVar18 = 0xb < (uint)size;\n    size._0_4_ = (uint)size - 0xc;\n    size._4_4_ = pcVar6 + (bVar18 - 1);\n  }" { (expression_statement "uVar7 = (uint)(0xc < (uint)size);" (assignment_expression "uVar7 = (uint)(0xc < (uint)size)" identifier = (call_expression "(uint)(0xc < (uint)size)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xc < (uint)size)" ( (binary_expression "0xc < (uint)size" number_literal < (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) (expression_statement "uVar10 = -(int)pcVar6;" (assignment_expression "uVar10 = -(int)pcVar6" identifier = (unary_expression "-(int)pcVar6" - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "bVar18 = pcVar6 != (char *)0x0 || uVar10 < uVar7;" (assignment_expression "bVar18 = pcVar6 != (char *)0x0 || uVar10 < uVar7" identifier = (binary_expression "pcVar6 != (char *)0x0 || uVar10 < uVar7" (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (binary_expression "uVar10 < uVar7" identifier < identifier))) ;) (expression_statement "bVar19 = uVar10 == uVar7;" (assignment_expression "bVar19 = uVar10 == uVar7" identifier = (binary_expression "uVar10 == uVar7" identifier == identifier)) ;) (if_statement "if (pcVar6 == (char *)0x0 && uVar10 >= uVar7) goto LAB_00041a50;" if (parenthesized_expression "(pcVar6 == (char *)0x0 && uVar10 >= uVar7)" ( (binary_expression "pcVar6 == (char *)0x0 && uVar10 >= uVar7" (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "uVar10 >= uVar7" identifier >= identifier)) )) (goto_statement "goto LAB_00041a50;" goto statement_identifier ;)) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" identifier = number_literal) ;) (expression_statement "pbVar15 = start;" (assignment_expression "pbVar15 = start" identifier = identifier) ;) (expression_statement "pbVar17 = &DAT_0007d064;" (assignment_expression "pbVar17 = &DAT_0007d064" identifier = (pointer_expression "&DAT_0007d064" & identifier)) ;) (do_statement "do {\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar18 = *pbVar15 < *pbVar17;\n      bVar19 = *pbVar15 == *pbVar17;\n      pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;\n      pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;\n    } while (bVar19);" do (compound_statement "{\n      if (iVar5 == 0) break;\n      iVar5 = iVar5 + -1;\n      bVar18 = *pbVar15 < *pbVar17;\n      bVar19 = *pbVar15 == *pbVar17;\n      pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;\n      pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;\n    }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar15 < *pbVar17;" (assignment_expression "bVar18 = *pbVar15 < *pbVar17" identifier = (binary_expression "*pbVar15 < *pbVar17" (pointer_expression "*pbVar15" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar15 == *pbVar17;" (assignment_expression "bVar19 = *pbVar15 == *pbVar17" identifier = (binary_expression "*pbVar15 == *pbVar17" (pointer_expression "*pbVar15" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar20 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "pbVar17 + (uint)bVar20 * -2 + 1" (binary_expression "pbVar17 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar18 && !bVar19) != bVar18) goto LAB_00041a50;" if (parenthesized_expression "((!bVar18 && !bVar19) != bVar18)" ( (binary_expression "(!bVar18 && !bVar19) != bVar18" (parenthesized_expression "(!bVar18 && !bVar19)" ( (binary_expression "!bVar18 && !bVar19" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_00041a50;" goto statement_identifier ;)) (expression_statement "bVar20 = start[4];" (assignment_expression "bVar20 = start[4]" identifier = (subscript_expression "start[4]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = CONCAT11(bVar20,start[5]);" (assignment_expression "uVar2 = CONCAT11(bVar20,start[5])" identifier = (call_expression "CONCAT11(bVar20,start[5])" identifier (argument_list "(bVar20,start[5])" ( identifier , (subscript_expression "start[5]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar3 = CONCAT21(uVar2,start[6]);" (assignment_expression "uVar3 = CONCAT21(uVar2,start[6])" identifier = (call_expression "CONCAT21(uVar2,start[6])" identifier (argument_list "(uVar2,start[6])" ( identifier , (subscript_expression "start[6]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar7 = CONCAT31(uVar3,start[7]) * 0x100;" (assignment_expression "uVar7 = CONCAT31(uVar3,start[7]) * 0x100" identifier = (binary_expression "CONCAT31(uVar3,start[7]) * 0x100" (call_expression "CONCAT31(uVar3,start[7])" identifier (argument_list "(uVar3,start[7])" ( identifier , (subscript_expression "start[7]" identifier [ number_literal ]) ))) * number_literal)) ;) (expression_statement "uVar16 = start[8] + uVar7;" (assignment_expression "uVar16 = start[8] + uVar7" identifier = (binary_expression "start[8] + uVar7" (subscript_expression "start[8]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar10 = uVar16 * 0x100;" (assignment_expression "uVar10 = uVar16 * 0x100" identifier = (binary_expression "uVar16 * 0x100" identifier * number_literal)) ;) (expression_statement "uVar11 = uVar10 + start[9];" (assignment_expression "uVar11 = uVar10 + start[9]" identifier = (binary_expression "uVar10 + start[9]" identifier + (subscript_expression "start[9]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar11 * 0x100;" (assignment_expression "uVar12 = uVar11 * 0x100" identifier = (binary_expression "uVar11 * 0x100" identifier * number_literal)) ;) (expression_statement "uVar13 = start[10] + uVar12;" (assignment_expression "uVar13 = start[10] + uVar12" identifier = (binary_expression "start[10] + uVar12" (subscript_expression "start[10]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar14 = uVar13 * 0x100;" (assignment_expression "uVar14 = uVar13 * 0x100" identifier = (binary_expression "uVar13 * 0x100" identifier * number_literal)) ;) (expression_statement "chdr.ch_size._0_4_ = (dwarf_size_type *)(start[0xb] + uVar14);" (assignment_expression "chdr.ch_size._0_4_ = (dwarf_size_type *)(start[0xb] + uVar14)" (field_expression "chdr.ch_size._0_4_" (field_expression "chdr.ch_size" identifier . field_identifier) . field_identifier) = (cast_expression "(dwarf_size_type *)(start[0xb] + uVar14)" ( (type_descriptor "dwarf_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(start[0xb] + uVar14)" ( (binary_expression "start[0xb] + uVar14" (subscript_expression "start[0xb]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "chdr.ch_size._4_4_ =\n         ((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +\n         (uint)CARRY4((uint)start[0xb],uVar14);" (assignment_expression "chdr.ch_size._4_4_ =\n         ((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +\n         (uint)CARRY4((uint)start[0xb],uVar14)" (field_expression "chdr.ch_size._4_4_" (field_expression "chdr.ch_size" identifier . field_identifier) . field_identifier) = (binary_expression "((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18) +\n         (uint)CARRY4((uint)start[0xb],uVar14)" (parenthesized_expression "((((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18)" ( (binary_expression "(((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100 | uVar13 >> 0x18" (binary_expression "(((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)) * 0x100" (parenthesized_expression "(((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12))" ( (binary_expression "((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18) +\n          (uint)CARRY4((uint)start[10],uVar12)" (parenthesized_expression "((((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18)" ( (binary_expression "(((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100 | uVar11 >> 0x18" (binary_expression "(((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])) * 0x100" (parenthesized_expression "(((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9]))" ( (binary_expression "((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18) +\n            (uint)CARRY4(uVar10,(uint)start[9])" (parenthesized_expression "((((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18)" ( (binary_expression "(((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100 | uVar16 >> 0x18" (binary_expression "(((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)) * 0x100" (parenthesized_expression "(((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7))" ( (binary_expression "((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20) +\n              (uint)CARRY4((uint)start[8],uVar7)" (parenthesized_expression "((((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20)" ( (binary_expression "(((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100 | (uint)bVar20" (binary_expression "(((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)) * 0x100" (parenthesized_expression "(((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8))" ( (binary_expression "((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100 +\n                (uint)CARRY4((uint)start[7],(uint)uVar3 << 8)" (binary_expression "((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)) * 0x100" (parenthesized_expression "((uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8))" ( (binary_expression "(uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100 +\n                 (uint)CARRY4((uint)start[6],(uint)uVar2 << 8)" (binary_expression "(uint)CARRY4((uint)start[5],(uint)bVar20 << 8) * 0x100" (cast_expression "(uint)CARRY4((uint)start[5],(uint)bVar20 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)start[5],(uint)bVar20 << 8)" identifier (argument_list "((uint)start[5],(uint)bVar20 << 8)" ( (cast_expression "(uint)start[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "start[5]" identifier [ number_literal ])) , (binary_expression "(uint)bVar20 << 8" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) )))) * number_literal) + (cast_expression "(uint)CARRY4((uint)start[6],(uint)uVar2 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)start[6],(uint)uVar2 << 8)" identifier (argument_list "((uint)start[6],(uint)uVar2 << 8)" ( (cast_expression "(uint)start[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "start[6]" identifier [ number_literal ])) , (binary_expression "(uint)uVar2 << 8" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) ))))) )) * number_literal) + (cast_expression "(uint)CARRY4((uint)start[7],(uint)uVar3 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)start[7],(uint)uVar3 << 8)" identifier (argument_list "((uint)start[7],(uint)uVar3 << 8)" ( (cast_expression "(uint)start[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "start[7]" identifier [ number_literal ])) , (binary_expression "(uint)uVar3 << 8" (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) ))))) )) * number_literal) | (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) + (cast_expression "(uint)CARRY4((uint)start[8],uVar7)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)start[8],uVar7)" identifier (argument_list "((uint)start[8],uVar7)" ( (cast_expression "(uint)start[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "start[8]" identifier [ number_literal ])) , identifier ))))) )) * number_literal) | (binary_expression "uVar16 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4(uVar10,(uint)start[9])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar10,(uint)start[9])" identifier (argument_list "(uVar10,(uint)start[9])" ( identifier , (cast_expression "(uint)start[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "start[9]" identifier [ number_literal ])) ))))) )) * number_literal) | (binary_expression "uVar11 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4((uint)start[10],uVar12)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)start[10],uVar12)" identifier (argument_list "((uint)start[10],uVar12)" ( (cast_expression "(uint)start[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "start[10]" identifier [ number_literal ])) , identifier ))))) )) * number_literal) | (binary_expression "uVar13 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4((uint)start[0xb],uVar14)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)start[0xb],uVar14)" identifier (argument_list "((uint)start[0xb],uVar14)" ( (cast_expression "(uint)start[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "start[0xb]" identifier [ number_literal ])) , identifier )))))) ;) (expression_statement "start = start + 0xc;" (assignment_expression "start = start + 0xc" identifier = (binary_expression "start + 0xc" identifier + number_literal)) ;) (expression_statement "bVar18 = 0xb < (uint)size;" (assignment_expression "bVar18 = 0xb < (uint)size" identifier = (binary_expression "0xb < (uint)size" number_literal < (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "size._0_4_ = (uint)size - 0xc;" (assignment_expression "size._0_4_ = (uint)size - 0xc" (field_expression "size._0_4_" identifier . field_identifier) = (binary_expression "(uint)size - 0xc" (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier) - number_literal)) ;) (expression_statement "size._4_4_ = pcVar6 + (bVar18 - 1);" (assignment_expression "size._4_4_ = pcVar6 + (bVar18 - 1)" (field_expression "size._4_4_" identifier . field_identifier) = (binary_expression "pcVar6 + (bVar18 - 1)" identifier + (parenthesized_expression "(bVar18 - 1)" ( (binary_expression "bVar18 - 1" identifier - number_literal) )))) ;) }) (else_clause "else {\n    if (pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);\n      warn(pcVar9,uVar1);\n      return 0;\n    }\n    uVar7 = get_compression_header(&chdr,start,sec->sh_size);\n    if (chdr.ch_type != 1) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(pcVar9,uVar1,chdr.ch_type);\n      return 0;\n    }\n    start = start + uVar7;\n    bVar18 = (uint)size < uVar7;\n    size._0_4_ = (uint)size - uVar7;\n    size._4_4_ = size._4_4_ + -(uint)bVar18;\n    pcVar9 = pcVar6;\n  }" else (compound_statement "{\n    if (pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);\n      warn(pcVar9,uVar1);\n      return 0;\n    }\n    uVar7 = get_compression_header(&chdr,start,sec->sh_size);\n    if (chdr.ch_type != 1) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(pcVar9,uVar1,chdr.ch_type);\n      return 0;\n    }\n    start = start + uVar7;\n    bVar18 = (uint)size < uVar7;\n    size._0_4_ = (uint)size - uVar7;\n    size._4_4_ = size._4_4_ + -(uint)bVar18;\n    pcVar9 = pcVar6;\n  }" { (if_statement "if (pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);\n      warn(pcVar9,uVar1);\n      return 0;\n    }" if (parenthesized_expression "(pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc))" ( (binary_expression "pcVar6 < (char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)" identifier < (cast_expression "(char *)(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc)" ( (binary_expression "(uint)size < (-(uint)(is_32bit_elf == 0) & 0xc) + 0xc" (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "(-(uint)(is_32bit_elf == 0) & 0xc) + 0xc" (parenthesized_expression "(-(uint)(is_32bit_elf == 0) & 0xc)" ( (binary_expression "-(uint)(is_32bit_elf == 0) & 0xc" (unary_expression "-(uint)(is_32bit_elf == 0)" - (call_expression "(uint)(is_32bit_elf == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(is_32bit_elf == 0)" ( (binary_expression "is_32bit_elf == 0" identifier == number_literal) )))) & number_literal) )) + number_literal)) ))))) )) (compound_statement "{\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);\n      warn(pcVar9,uVar1);\n      return 0;\n    }" { (expression_statement "uVar1 = (&DAT_000b4848)[debug * 0x10];" (assignment_expression "uVar1 = (&DAT_000b4848)[debug * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[debug * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "debug * 0x10" identifier * number_literal) ])) ;) (expression_statement "pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5)" identifier = (cast_expression "(char *)dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5)" identifier (argument_list "(0,\n                                 "compressed section %s is too small to contain a compression header"\n                                 ,5)" ( number_literal , (string_literal ""compressed section %s is too small to contain a compression header"" " string_content ") , number_literal ))))) ;) (expression_statement "warn(pcVar9,uVar1);" (call_expression "warn(pcVar9,uVar1)" identifier (argument_list "(pcVar9,uVar1)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar7 = get_compression_header(&chdr,start,sec->sh_size);" (assignment_expression "uVar7 = get_compression_header(&chdr,start,sec->sh_size)" identifier = (call_expression "get_compression_header(&chdr,start,sec->sh_size)" identifier (argument_list "(&chdr,start,sec->sh_size)" ( (pointer_expression "&chdr" & identifier) , identifier , (field_expression "sec->sh_size" identifier -> field_identifier) )))) ;) (if_statement "if (chdr.ch_type != 1) {\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(pcVar9,uVar1,chdr.ch_type);\n      return 0;\n    }" if (parenthesized_expression "(chdr.ch_type != 1)" ( (binary_expression "chdr.ch_type != 1" (field_expression "chdr.ch_type" identifier . field_identifier) != number_literal) )) (compound_statement "{\n      uVar1 = (&DAT_000b4848)[debug * 0x10];\n      pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(pcVar9,uVar1,chdr.ch_type);\n      return 0;\n    }" { (expression_statement "uVar1 = (&DAT_000b4848)[debug * 0x10];" (assignment_expression "uVar1 = (&DAT_000b4848)[debug * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[debug * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "debug * 0x10" identifier * number_literal) ])) ;) (expression_statement "pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" identifier (argument_list "(0,"section \'%s\' has unsupported compress type: %d\n",5)" ( number_literal , (string_literal ""section \'%s\' has unsupported compress type: %d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "warn(pcVar9,uVar1,chdr.ch_type);" (call_expression "warn(pcVar9,uVar1,chdr.ch_type)" identifier (argument_list "(pcVar9,uVar1,chdr.ch_type)" ( identifier , identifier , (field_expression "chdr.ch_type" identifier . field_identifier) ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "start = start + uVar7;" (assignment_expression "start = start + uVar7" identifier = (binary_expression "start + uVar7" identifier + identifier)) ;) (expression_statement "bVar18 = (uint)size < uVar7;" (assignment_expression "bVar18 = (uint)size < uVar7" identifier = (binary_expression "(uint)size < uVar7" (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier)) ;) (expression_statement "size._0_4_ = (uint)size - uVar7;" (assignment_expression "size._0_4_ = (uint)size - uVar7" (field_expression "size._0_4_" identifier . field_identifier) = (binary_expression "(uint)size - uVar7" (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier) - identifier)) ;) (expression_statement "size._4_4_ = size._4_4_ + -(uint)bVar18;" (assignment_expression "size._4_4_ = size._4_4_ + -(uint)bVar18" (field_expression "size._4_4_" identifier . field_identifier) = (binary_expression "size._4_4_ + -(uint)bVar18" (field_expression "size._4_4_" identifier . field_identifier) + (unary_expression "-(uint)bVar18" - (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;) (expression_statement "pcVar9 = pcVar6;" (assignment_expression "pcVar9 = pcVar6" identifier = identifier) ;) }))) (if_statement "if (chdr.ch_size._4_4_ != 0 || (dwarf_size_type *)chdr.ch_size != (dwarf_size_type *)0x0) {\n    bVar8 = uncompress_section_contents\n                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size);\n    if (bVar8 == 0) {\n      pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec);\n      pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);\n      error(pcVar6,pcVar9);\n      return 0;\n    }\n    free(*(void **)(&DAT_000b4850 + debug * 0x40));\n    *(uchar **)(&DAT_000b4850 + debug * 0x40) = start;\n  }" if (parenthesized_expression "(chdr.ch_size._4_4_ != 0 || (dwarf_size_type *)chdr.ch_size != (dwarf_size_type *)0x0)" ( (binary_expression "chdr.ch_size._4_4_ != 0 || (dwarf_size_type *)chdr.ch_size != (dwarf_size_type *)0x0" (binary_expression "chdr.ch_size._4_4_ != 0" (field_expression "chdr.ch_size._4_4_" (field_expression "chdr.ch_size" identifier . field_identifier) . field_identifier) != number_literal) || (binary_expression "(dwarf_size_type *)chdr.ch_size != (dwarf_size_type *)0x0" (cast_expression "(dwarf_size_type *)chdr.ch_size" ( (type_descriptor "dwarf_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "chdr.ch_size" identifier . field_identifier)) != (cast_expression "(dwarf_size_type *)0x0" ( (type_descriptor "dwarf_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    bVar8 = uncompress_section_contents\n                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size);\n    if (bVar8 == 0) {\n      pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec);\n      pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);\n      error(pcVar6,pcVar9);\n      return 0;\n    }\n    free(*(void **)(&DAT_000b4850 + debug * 0x40));\n    *(uchar **)(&DAT_000b4850 + debug * 0x40) = start;\n  }" { (expression_statement "bVar8 = uncompress_section_contents\n                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size);" (assignment_expression "bVar8 = uncompress_section_contents\n                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size)" identifier = (call_expression "uncompress_section_contents\n                      (&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size)" identifier (argument_list "(&start,CONCAT44(pcVar9,&size),(dwarf_size_type *)chdr.ch_size)" ( (pointer_expression "&start" & identifier) , (call_expression "CONCAT44(pcVar9,&size)" identifier (argument_list "(pcVar9,&size)" ( identifier , (pointer_expression "&size" & identifier) ))) , (cast_expression "(dwarf_size_type *)chdr.ch_size" ( (type_descriptor "dwarf_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "chdr.ch_size" identifier . field_identifier)) )))) ;) (if_statement "if (bVar8 == 0) {\n      pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec);\n      pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);\n      error(pcVar6,pcVar9);\n      return 0;\n    }" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec);\n      pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);\n      error(pcVar6,pcVar9);\n      return 0;\n    }" { (expression_statement "pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec);" (assignment_expression "pcVar9 = printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec)" identifier = (call_expression "printable_section_name\n                         ((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec)" identifier (argument_list "((Filedata *)((int)data + 100),(Elf_Internal_Shdr *)((int)data + 0x68),\n                          (Filedata *)sec)" ( (cast_expression "(Filedata *)((int)data + 100)" ( (type_descriptor "Filedata *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)data + 100)" ( (binary_expression "(int)data + 100" (cast_expression "(int)data" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (cast_expression "(Elf_Internal_Shdr *)((int)data + 0x68)" ( (type_descriptor "Elf_Internal_Shdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)data + 0x68)" ( (binary_expression "(int)data + 0x68" (cast_expression "(int)data" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (cast_expression "(Filedata *)sec" ( (type_descriptor "Filedata *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"Unable to decompress section %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Unable to decompress section %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Unable to decompress section %s\n",5)" identifier (argument_list "(0,"Unable to decompress section %s\n",5)" ( number_literal , (string_literal ""Unable to decompress section %s\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "error(pcVar6,pcVar9);" (call_expression "error(pcVar6,pcVar9)" identifier (argument_list "(pcVar6,pcVar9)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "free(*(void **)(&DAT_000b4850 + debug * 0x40));" (call_expression "free(*(void **)(&DAT_000b4850 + debug * 0x40))" identifier (argument_list "(*(void **)(&DAT_000b4850 + debug * 0x40))" ( (pointer_expression "*(void **)(&DAT_000b4850 + debug * 0x40)" * (cast_expression "(void **)(&DAT_000b4850 + debug * 0x40)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + debug * 0x40)" ( (binary_expression "&DAT_000b4850 + debug * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "debug * 0x40" identifier * number_literal)) )))) ))) ;) (expression_statement "*(uchar **)(&DAT_000b4850 + debug * 0x40) = start;" (assignment_expression "*(uchar **)(&DAT_000b4850 + debug * 0x40) = start" (pointer_expression "*(uchar **)(&DAT_000b4850 + debug * 0x40)" * (cast_expression "(uchar **)(&DAT_000b4850 + debug * 0x40)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + debug * 0x40)" ( (binary_expression "&DAT_000b4850 + debug * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "debug * 0x40" identifier * number_literal)) )))) = identifier) ;) })) (labeled_statement "LAB_00041a50:\n  iVar5 = debug * 0x40;" statement_identifier : (expression_statement "iVar5 = debug * 0x40;" (assignment_expression "iVar5 = debug * 0x40" identifier = (binary_expression "debug * 0x40" identifier * number_literal)) ;)) (expression_statement "*(uint *)(&DAT_000b485c + iVar5) = (uint)size;" (assignment_expression "*(uint *)(&DAT_000b485c + iVar5) = (uint)size" (pointer_expression "*(uint *)(&DAT_000b485c + iVar5)" * (cast_expression "(uint *)(&DAT_000b485c + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b485c + iVar5)" ( (binary_expression "&DAT_000b485c + iVar5" (pointer_expression "&DAT_000b485c" & identifier) + identifier) )))) = (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(char **)(&DAT_000b4860 + iVar5) = size._4_4_;" (assignment_expression "*(char **)(&DAT_000b4860 + iVar5) = size._4_4_" (pointer_expression "*(char **)(&DAT_000b4860 + iVar5)" * (cast_expression "(char **)(&DAT_000b4860 + iVar5)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4860 + iVar5)" ( (binary_expression "&DAT_000b4860 + iVar5" (pointer_expression "&DAT_000b4860" & identifier) + identifier) )))) = (field_expression "size._4_4_" identifier . field_identifier)) ;) (if_statement "if (*(uchar **)(&DAT_000b4850 + iVar5) == (uchar *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(*(uchar **)(&DAT_000b4850 + iVar5) == (uchar *)0x0)" ( (binary_expression "*(uchar **)(&DAT_000b4850 + iVar5) == (uchar *)0x0" (pointer_expression "*(uchar **)(&DAT_000b4850 + iVar5)" * (cast_expression "(uchar **)(&DAT_000b4850 + iVar5)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + iVar5)" ( (binary_expression "&DAT_000b4850 + iVar5" (pointer_expression "&DAT_000b4850" & identifier) + identifier) )))) == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(&DAT_000b487c + iVar5) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b486c + iVar5) = 0;\n    return 1;\n  }" if (parenthesized_expression "(*(int *)(&DAT_000b487c + iVar5) == 0)" ( (binary_expression "*(int *)(&DAT_000b487c + iVar5) == 0" (pointer_expression "*(int *)(&DAT_000b487c + iVar5)" * (cast_expression "(int *)(&DAT_000b487c + iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b487c + iVar5)" ( (binary_expression "&DAT_000b487c + iVar5" (pointer_expression "&DAT_000b487c" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n    *(undefined4 *)(&DAT_000b4868 + iVar5) = 0;\n    *(undefined4 *)(&DAT_000b486c + iVar5) = 0;\n    return 1;\n  }" { (expression_statement "*(undefined4 *)(&DAT_000b4868 + iVar5) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4868 + iVar5) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4868 + iVar5)" * (cast_expression "(undefined4 *)(&DAT_000b4868 + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4868 + iVar5)" ( (binary_expression "&DAT_000b4868 + iVar5" (pointer_expression "&DAT_000b4868" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(&DAT_000b486c + iVar5) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b486c + iVar5) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b486c + iVar5)" * (cast_expression "(undefined4 *)(&DAT_000b486c + iVar5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b486c + iVar5)" ( (binary_expression "&DAT_000b486c + iVar5" (pointer_expression "&DAT_000b486c" & identifier) + identifier) )))) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar8 = apply_relocations((Filedata *)data,sec,*(uchar **)(&DAT_000b4850 + iVar5),\n                            CONCAT44(size._4_4_,(uint)size),(void **)(&DAT_000b4868 + iVar5),\n                            (ulong *)(&DAT_000b486c + iVar5));" (assignment_expression "bVar8 = apply_relocations((Filedata *)data,sec,*(uchar **)(&DAT_000b4850 + iVar5),\n                            CONCAT44(size._4_4_,(uint)size),(void **)(&DAT_000b4868 + iVar5),\n                            (ulong *)(&DAT_000b486c + iVar5))" identifier = (call_expression "apply_relocations((Filedata *)data,sec,*(uchar **)(&DAT_000b4850 + iVar5),\n                            CONCAT44(size._4_4_,(uint)size),(void **)(&DAT_000b4868 + iVar5),\n                            (ulong *)(&DAT_000b486c + iVar5))" identifier (argument_list "((Filedata *)data,sec,*(uchar **)(&DAT_000b4850 + iVar5),\n                            CONCAT44(size._4_4_,(uint)size),(void **)(&DAT_000b4868 + iVar5),\n                            (ulong *)(&DAT_000b486c + iVar5))" ( (cast_expression "(Filedata *)data" ( (type_descriptor "Filedata *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (pointer_expression "*(uchar **)(&DAT_000b4850 + iVar5)" * (cast_expression "(uchar **)(&DAT_000b4850 + iVar5)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + iVar5)" ( (binary_expression "&DAT_000b4850 + iVar5" (pointer_expression "&DAT_000b4850" & identifier) + identifier) )))) , (call_expression "CONCAT44(size._4_4_,(uint)size)" identifier (argument_list "(size._4_4_,(uint)size)" ( (field_expression "size._4_4_" identifier . field_identifier) , (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier) ))) , (cast_expression "(void **)(&DAT_000b4868 + iVar5)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4868 + iVar5)" ( (binary_expression "&DAT_000b4868 + iVar5" (pointer_expression "&DAT_000b4868" & identifier) + identifier) ))) , (cast_expression "(ulong *)(&DAT_000b486c + iVar5)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b486c + iVar5)" ( (binary_expression "&DAT_000b486c + iVar5" (pointer_expression "&DAT_000b486c" & identifier) + identifier) ))) )))) ;) (return_statement "return (uint)(bVar8 != 0);" return (call_expression "(uint)(bVar8 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) ))) ;) })))
(translation_unit "bool __regparm3 FUN_000418c0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  void *__ptr;\n  ushort uVar1;\n  uint3 uVar2;\n  int iVar3;\n  char *__format;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  byte *local_80;\n  uint local_7c;\n  uint local_78;\n  int local_70;\n  int local_6c;\n  int local_68;\n  char local_5c [72];\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0x418cb;\n  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);\n  if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }\n  iVar3 = param_1 * 0x40;\n  uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n  __format = (char *)dcgettext(0,"%s section data",5);\n  snprintf(local_5c,0x40,__format,uVar5);\n  uVar5 = *(undefined4 *)(param_2 + 0x10);\n  uVar6 = *(undefined4 *)(param_2 + 0x14);\n  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;\n  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;\n  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;\n  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;\n  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);\n  *(byte **)(&DAT_000b4850 + iVar3) = local_80;\n  if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }\n  local_7c = *(uint *)(param_2 + 0x20);\n  local_78 = *(uint *)(param_2 + 0x24);\n  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }\n  if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }\nLAB_00041a50:\n  param_1 = param_1 * 0x40;\n  *(uint *)(&DAT_000b485c + param_1) = local_7c;\n  *(uint *)(&DAT_000b4860 + param_1) = local_78;\n  if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }\n  if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }\n  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);\n  return iVar3 != 0;\n}\n\n" (function_definition "bool __regparm3 FUN_000418c0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  void *__ptr;\n  ushort uVar1;\n  uint3 uVar2;\n  int iVar3;\n  char *__format;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  byte *local_80;\n  uint local_7c;\n  uint local_78;\n  int local_70;\n  int local_6c;\n  int local_68;\n  char local_5c [72];\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0x418cb;\n  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);\n  if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }\n  iVar3 = param_1 * 0x40;\n  uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n  __format = (char *)dcgettext(0,"%s section data",5);\n  snprintf(local_5c,0x40,__format,uVar5);\n  uVar5 = *(undefined4 *)(param_2 + 0x10);\n  uVar6 = *(undefined4 *)(param_2 + 0x14);\n  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;\n  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;\n  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;\n  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;\n  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);\n  *(byte **)(&DAT_000b4850 + iVar3) = local_80;\n  if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }\n  local_7c = *(uint *)(param_2 + 0x20);\n  local_78 = *(uint *)(param_2 + 0x24);\n  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }\n  if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }\nLAB_00041a50:\n  param_1 = param_1 * 0x40;\n  *(uint *)(&DAT_000b485c + param_1) = local_7c;\n  *(uint *)(&DAT_000b4860 + param_1) = local_78;\n  if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }\n  if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }\n  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);\n  return iVar3 != 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000418c0(int param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  void *__ptr;\n  ushort uVar1;\n  uint3 uVar2;\n  int iVar3;\n  char *__format;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  byte *local_80;\n  uint local_7c;\n  uint local_78;\n  int local_70;\n  int local_6c;\n  int local_68;\n  char local_5c [72];\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0x418cb;\n  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);\n  if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }\n  iVar3 = param_1 * 0x40;\n  uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n  __format = (char *)dcgettext(0,"%s section data",5);\n  snprintf(local_5c,0x40,__format,uVar5);\n  uVar5 = *(undefined4 *)(param_2 + 0x10);\n  uVar6 = *(undefined4 *)(param_2 + 0x14);\n  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;\n  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;\n  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;\n  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;\n  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);\n  *(byte **)(&DAT_000b4850 + iVar3) = local_80;\n  if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }\n  local_7c = *(uint *)(param_2 + 0x20);\n  local_78 = *(uint *)(param_2 + 0x24);\n  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }\n  if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }\nLAB_00041a50:\n  param_1 = param_1 * 0x40;\n  *(uint *)(&DAT_000b485c + param_1) = local_7c;\n  *(uint *)(&DAT_000b4860 + param_1) = local_78;\n  if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }\n  if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }\n  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);\n  return iVar3 != 0;\n}" { (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "uint3 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "char local_5c [72];" primitive_type (array_declarator "local_5c [72]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x418cb;" (assignment_expression "uStack_14 = 0x418cb" identifier = number_literal) ;) (expression_statement "__ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);" (assignment_expression "__ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40)" identifier = (pointer_expression "*(void **)(&DAT_000b4850 + param_1 * 0x40)" * (cast_expression "(void **)(&DAT_000b4850 + param_1 * 0x40)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" ( (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "param_1 * 0x40" identifier * number_literal)) ))))) ;) (if_statement "if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(__ptr != (void *)0x0)" ( (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }" { (expression_statement "iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);" (assignment_expression "iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" identifier = (call_expression "strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" identifier (argument_list "(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" ( (pointer_expression "*(char **)(&DAT_000b484c + param_1 * 0x40)" * (cast_expression "(char **)(&DAT_000b484c + param_1 * 0x40)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b484c + param_1 * 0x40)" ( (binary_expression "&DAT_000b484c + param_1 * 0x40" (pointer_expression "&DAT_000b484c" & identifier) + (binary_expression "param_1 * 0x40" identifier * number_literal)) )))) , (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)) )))) ;) (if_statement "if (iVar3 == 0) {\n      return true;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) })) (expression_statement "iVar3 = param_1 * 0x40;" (assignment_expression "iVar3 = param_1 * 0x40" identifier = (binary_expression "param_1 * 0x40" identifier * number_literal)) ;) (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "param_1 * 0x10" identifier * number_literal) ])) ;) (expression_statement "__format = (char *)dcgettext(0,"%s section data",5);" (assignment_expression "__format = (char *)dcgettext(0,"%s section data",5)" identifier = (cast_expression "(char *)dcgettext(0,"%s section data",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%s section data",5)" identifier (argument_list "(0,"%s section data",5)" ( number_literal , (string_literal ""%s section data"" " string_content ") , number_literal ))))) ;) (expression_statement "snprintf(local_5c,0x40,__format,uVar5);" (call_expression "snprintf(local_5c,0x40,__format,uVar5)" identifier (argument_list "(local_5c,0x40,__format,uVar5)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "uVar5 = *(undefined4 *)(param_2 + 0x10);" (assignment_expression "uVar5 = *(undefined4 *)(param_2 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x10)" * (cast_expression "(undefined4 *)(param_2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(undefined4 *)(param_2 + 0x14);" (assignment_expression "uVar6 = *(undefined4 *)(param_2 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(&DAT_000b4870 + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4870 + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4870 + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b4870 + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4870 + iVar3)" ( (binary_expression "&DAT_000b4870 + iVar3" (pointer_expression "&DAT_000b4870" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;" (assignment_expression "*(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5" (pointer_expression "*(undefined4 *)(&DAT_000b4854 + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b4854 + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4854 + iVar3)" ( (binary_expression "&DAT_000b4854 + iVar3" (pointer_expression "&DAT_000b4854" & identifier) + identifier) )))) = identifier) ;) (expression_statement "*(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;" (assignment_expression "*(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6" (pointer_expression "*(undefined4 *)(&DAT_000b4858 + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b4858 + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4858 + iVar3)" ( (binary_expression "&DAT_000b4858 + iVar3" (pointer_expression "&DAT_000b4858" & identifier) + identifier) )))) = identifier) ;) (expression_statement "*(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;" (assignment_expression "*(undefined4 *)(&DAT_000b484c + iVar3) = *param_3" (pointer_expression "*(undefined4 *)(&DAT_000b484c + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b484c + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b484c + iVar3)" ( (binary_expression "&DAT_000b484c + iVar3" (pointer_expression "&DAT_000b484c" & identifier) + identifier) )))) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);" (assignment_expression "local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" identifier = (cast_expression "(byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" identifier (argument_list "(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" ( number_literal , number_literal , (pointer_expression "*(undefined4 *)(param_2 + 0x20)" * (cast_expression "(undefined4 *)(param_2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x24)" * (cast_expression "(undefined4 *)(param_2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) , identifier ))))) ;) (expression_statement "*(byte **)(&DAT_000b4850 + iVar3) = local_80;" (assignment_expression "*(byte **)(&DAT_000b4850 + iVar3) = local_80" (pointer_expression "*(byte **)(&DAT_000b4850 + iVar3)" * (cast_expression "(byte **)(&DAT_000b4850 + iVar3)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + iVar3)" ( (binary_expression "&DAT_000b4850 + iVar3" (pointer_expression "&DAT_000b4850" & identifier) + identifier) )))) = identifier) ;) (if_statement "if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }" if (parenthesized_expression "(local_80 == (byte *)0x0)" ( (binary_expression "local_80 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }" { (expression_statement "*(undefined4 *)(&DAT_000b485c + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b485c + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b485c + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b485c + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b485c + iVar3)" ( (binary_expression "&DAT_000b485c + iVar3" (pointer_expression "&DAT_000b485c" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(&DAT_000b4860 + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4860 + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4860 + iVar3)" * (cast_expression "(undefined4 *)(&DAT_000b4860 + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4860 + iVar3)" ( (binary_expression "&DAT_000b4860 + iVar3" (pointer_expression "&DAT_000b4860" & identifier) + identifier) )))) = number_literal) ;) (return_statement "return false;" return false ;) })) (expression_statement "local_7c = *(uint *)(param_2 + 0x20);" (assignment_expression "local_7c = *(uint *)(param_2 + 0x20)" identifier = (pointer_expression "*(uint *)(param_2 + 0x20)" * (cast_expression "(uint *)(param_2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_78 = *(uint *)(param_2 + 0x24);" (assignment_expression "local_78 = *(uint *)(param_2 + 0x24)" identifier = (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" if (parenthesized_expression "((*(uint *)(param_2 + 8) & 0x800) == 0)" ( (binary_expression "(*(uint *)(param_2 + 8) & 0x800) == 0" (parenthesized_expression "(*(uint *)(param_2 + 8) & 0x800)" ( (binary_expression "*(uint *)(param_2 + 8) & 0x800" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }" { (expression_statement "uVar4 = (uint)(0xc < local_7c);" (assignment_expression "uVar4 = (uint)(0xc < local_7c)" identifier = (call_expression "(uint)(0xc < local_7c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xc < local_7c)" ( (binary_expression "0xc < local_7c" number_literal < identifier) )))) ;) (expression_statement "uVar7 = -local_78;" (assignment_expression "uVar7 = -local_78" identifier = (unary_expression "-local_78" - identifier)) ;) (expression_statement "bVar15 = local_78 != 0 || uVar7 < uVar4;" (assignment_expression "bVar15 = local_78 != 0 || uVar7 < uVar4" identifier = (binary_expression "local_78 != 0 || uVar7 < uVar4" (binary_expression "local_78 != 0" identifier != number_literal) || (binary_expression "uVar7 < uVar4" identifier < identifier))) ;) (expression_statement "bVar16 = uVar7 == uVar4;" (assignment_expression "bVar16 = uVar7 == uVar4" identifier = (binary_expression "uVar7 == uVar4" identifier == identifier)) ;) (if_statement "if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;" if (parenthesized_expression "(local_78 == 0 && uVar7 >= uVar4)" ( (binary_expression "local_78 == 0 && uVar7 >= uVar4" (binary_expression "local_78 == 0" identifier == number_literal) && (binary_expression "uVar7 >= uVar4" identifier >= identifier)) )) (goto_statement "goto LAB_00041a50;" goto statement_identifier ;)) (expression_statement "iVar3 = 5;" (assignment_expression "iVar3 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = local_80;" (assignment_expression "pbVar12 = local_80" identifier = identifier) ;) (expression_statement "pbVar14 = &DAT_0007d064;" (assignment_expression "pbVar14 = &DAT_0007d064" identifier = (pointer_expression "&DAT_0007d064" & identifier)) ;) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);" do (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar14;" (assignment_expression "bVar15 = *pbVar12 < *pbVar14" identifier = (binary_expression "*pbVar12 < *pbVar14" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar14;" (assignment_expression "bVar16 = *pbVar12 == *pbVar14" identifier = (binary_expression "*pbVar12 == *pbVar14" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;" if (parenthesized_expression "((!bVar15 && !bVar16) != bVar15)" ( (binary_expression "(!bVar15 && !bVar16) != bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" ( (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_00041a50;" goto statement_identifier ;)) (expression_statement "bVar17 = local_80[4];" (assignment_expression "bVar17 = local_80[4]" identifier = (subscript_expression "local_80[4]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = CONCAT11(bVar17,local_80[5]);" (assignment_expression "uVar1 = CONCAT11(bVar17,local_80[5])" identifier = (call_expression "CONCAT11(bVar17,local_80[5])" identifier (argument_list "(bVar17,local_80[5])" ( identifier , (subscript_expression "local_80[5]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar2 = CONCAT21(uVar1,local_80[6]);" (assignment_expression "uVar2 = CONCAT21(uVar1,local_80[6])" identifier = (call_expression "CONCAT21(uVar1,local_80[6])" identifier (argument_list "(uVar1,local_80[6])" ( identifier , (subscript_expression "local_80[6]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;" (assignment_expression "uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100" identifier = (binary_expression "CONCAT31(uVar2,local_80[7]) * 0x100" (call_expression "CONCAT31(uVar2,local_80[7])" identifier (argument_list "(uVar2,local_80[7])" ( identifier , (subscript_expression "local_80[7]" identifier [ number_literal ]) ))) * number_literal)) ;) (expression_statement "uVar13 = local_80[8] + uVar4;" (assignment_expression "uVar13 = local_80[8] + uVar4" identifier = (binary_expression "local_80[8] + uVar4" (subscript_expression "local_80[8]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar7 = uVar13 * 0x100;" (assignment_expression "uVar7 = uVar13 * 0x100" identifier = (binary_expression "uVar13 * 0x100" identifier * number_literal)) ;) (expression_statement "uVar8 = uVar7 + local_80[9];" (assignment_expression "uVar8 = uVar7 + local_80[9]" identifier = (binary_expression "uVar7 + local_80[9]" identifier + (subscript_expression "local_80[9]" identifier [ number_literal ]))) ;) (expression_statement "uVar9 = uVar8 * 0x100;" (assignment_expression "uVar9 = uVar8 * 0x100" identifier = (binary_expression "uVar8 * 0x100" identifier * number_literal)) ;) (expression_statement "uVar10 = local_80[10] + uVar9;" (assignment_expression "uVar10 = local_80[10] + uVar9" identifier = (binary_expression "local_80[10] + uVar9" (subscript_expression "local_80[10]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar11 = uVar10 * 0x100;" (assignment_expression "uVar11 = uVar10 * 0x100" identifier = (binary_expression "uVar10 * 0x100" identifier * number_literal)) ;) (expression_statement "local_6c = local_80[0xb] + uVar11;" (assignment_expression "local_6c = local_80[0xb] + uVar11" identifier = (binary_expression "local_80[0xb] + uVar11" (subscript_expression "local_80[0xb]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);" (assignment_expression "local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11)" identifier = (binary_expression "((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11)" (parenthesized_expression "((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18)" ( (binary_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18" (binary_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100" (parenthesized_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9))" ( (binary_expression "((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)" (parenthesized_expression "((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18)" ( (binary_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18" (binary_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100" (parenthesized_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9]))" ( (binary_expression "((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])" (parenthesized_expression "((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18)" ( (binary_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18" (binary_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100" (parenthesized_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4))" ( (binary_expression "((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)" (parenthesized_expression "((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17)" ( (binary_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17" (binary_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100" (parenthesized_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8))" ( (binary_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)" (binary_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100" (parenthesized_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8))" ( (binary_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)" (binary_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100" (cast_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[5],(uint)bVar17 << 8)" identifier (argument_list "((uint)local_80[5],(uint)bVar17 << 8)" ( (cast_expression "(uint)local_80[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[5]" identifier [ number_literal ])) , (binary_expression "(uint)bVar17 << 8" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) )))) * number_literal) + (cast_expression "(uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[6],(uint)uVar1 << 8)" identifier (argument_list "((uint)local_80[6],(uint)uVar1 << 8)" ( (cast_expression "(uint)local_80[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[6]" identifier [ number_literal ])) , (binary_expression "(uint)uVar1 << 8" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) ))))) )) * number_literal) + (cast_expression "(uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[7],(uint)uVar2 << 8)" identifier (argument_list "((uint)local_80[7],(uint)uVar2 << 8)" ( (cast_expression "(uint)local_80[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[7]" identifier [ number_literal ])) , (binary_expression "(uint)uVar2 << 8" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) ))))) )) * number_literal) | (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) )) + (cast_expression "(uint)CARRY4((uint)local_80[8],uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[8],uVar4)" identifier (argument_list "((uint)local_80[8],uVar4)" ( (cast_expression "(uint)local_80[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[8]" identifier [ number_literal ])) , identifier ))))) )) * number_literal) | (binary_expression "uVar13 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4(uVar7,(uint)local_80[9])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar7,(uint)local_80[9])" identifier (argument_list "(uVar7,(uint)local_80[9])" ( identifier , (cast_expression "(uint)local_80[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[9]" identifier [ number_literal ])) ))))) )) * number_literal) | (binary_expression "uVar8 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4((uint)local_80[10],uVar9)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[10],uVar9)" identifier (argument_list "((uint)local_80[10],uVar9)" ( (cast_expression "(uint)local_80[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[10]" identifier [ number_literal ])) , identifier ))))) )) * number_literal) | (binary_expression "uVar10 >> 0x18" identifier >> number_literal)) )) + (cast_expression "(uint)CARRY4((uint)local_80[0xb],uVar11)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)local_80[0xb],uVar11)" identifier (argument_list "((uint)local_80[0xb],uVar11)" ( (cast_expression "(uint)local_80[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_80[0xb]" identifier [ number_literal ])) , identifier )))))) ;) (expression_statement "local_80 = local_80 + 0xc;" (assignment_expression "local_80 = local_80 + 0xc" identifier = (binary_expression "local_80 + 0xc" identifier + number_literal)) ;) (expression_statement "bVar15 = 0xb < local_7c;" (assignment_expression "bVar15 = 0xb < local_7c" identifier = (binary_expression "0xb < local_7c" number_literal < identifier)) ;) (expression_statement "local_7c = local_7c - 0xc;" (assignment_expression "local_7c = local_7c - 0xc" identifier = (binary_expression "local_7c - 0xc" identifier - number_literal)) ;) (expression_statement "local_78 = (local_78 - 1) + (uint)bVar15;" (assignment_expression "local_78 = (local_78 - 1) + (uint)bVar15" identifier = (binary_expression "(local_78 - 1) + (uint)bVar15" (parenthesized_expression "(local_78 - 1)" ( (binary_expression "local_78 - 1" identifier - number_literal) )) + (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) (else_clause "else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" else (compound_statement "{\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" { (if_statement "if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }" if (parenthesized_expression "(local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc))" ( (binary_expression "local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)" identifier < (parenthesized_expression "(local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)" ( (binary_expression "local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc" identifier < (binary_expression "(-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc" (parenthesized_expression "(-(uint)(DAT_000b6324 == 0) & 0xc)" ( (binary_expression "-(uint)(DAT_000b6324 == 0) & 0xc" (unary_expression "-(uint)(DAT_000b6324 == 0)" - (call_expression "(uint)(DAT_000b6324 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_000b6324 == 0)" ( (binary_expression "DAT_000b6324 == 0" identifier == number_literal) )))) & number_literal) )) + number_literal)) ))) )) (compound_statement "{\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }" { (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "param_1 * 0x10" identifier * number_literal) ])) ;) (expression_statement "uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);" (assignment_expression "uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5)" identifier = (call_expression "dcgettext(0,"compressed section %s is too small to contain a compression header",5)" identifier (argument_list "(0,"compressed section %s is too small to contain a compression header",5)" ( number_literal , (string_literal ""compressed section %s is too small to contain a compression header"" " string_content ") , number_literal )))) ;) (expression_statement "warn(uVar6,uVar5);" (call_expression "warn(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "uVar4 = FUN_0001be30(local_7c,local_78);" (assignment_expression "uVar4 = FUN_0001be30(local_7c,local_78)" identifier = (call_expression "FUN_0001be30(local_7c,local_78)" identifier (argument_list "(local_7c,local_78)" ( identifier , identifier )))) ;) (if_statement "if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }" if (parenthesized_expression "(local_70 != 1)" ( (binary_expression "local_70 != 1" identifier != number_literal) )) (compound_statement "{\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }" { (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" identifier = (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" ( (pointer_expression "&DAT_000b4848" & identifier) )) [ (binary_expression "param_1 * 0x10" identifier * number_literal) ])) ;) (expression_statement "uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);" (assignment_expression "uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" identifier = (call_expression "dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" identifier (argument_list "(0,"section \'%s\' has unsupported compress type: %d\n",5)" ( number_literal , (string_literal ""section \'%s\' has unsupported compress type: %d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "warn(uVar6,uVar5,local_70);" (call_expression "warn(uVar6,uVar5,local_70)" identifier (argument_list "(uVar6,uVar5,local_70)" ( identifier , identifier , identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "local_80 = local_80 + uVar4;" (assignment_expression "local_80 = local_80 + uVar4" identifier = (binary_expression "local_80 + uVar4" identifier + identifier)) ;) (expression_statement "bVar15 = local_7c < uVar4;" (assignment_expression "bVar15 = local_7c < uVar4" identifier = (binary_expression "local_7c < uVar4" identifier < identifier)) ;) (expression_statement "local_7c = local_7c - uVar4;" (assignment_expression "local_7c = local_7c - uVar4" identifier = (binary_expression "local_7c - uVar4" identifier - identifier)) ;) (expression_statement "local_78 = local_78 - bVar15;" (assignment_expression "local_78 = local_78 - bVar15" identifier = (binary_expression "local_78 - bVar15" identifier - identifier)) ;) }))) (if_statement "if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }" if (parenthesized_expression "(local_68 != 0 || local_6c != 0)" ( (binary_expression "local_68 != 0 || local_6c != 0" (binary_expression "local_68 != 0" identifier != number_literal) || (binary_expression "local_6c != 0" identifier != number_literal)) )) (compound_statement "{\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }" { (expression_statement "iVar3 = FUN_0001d690(&local_7c);" (assignment_expression "iVar3 = FUN_0001d690(&local_7c)" identifier = (call_expression "FUN_0001d690(&local_7c)" identifier (argument_list "(&local_7c)" ( (pointer_expression "&local_7c" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }" { (expression_statement "uVar5 = FUN_00022190();" (assignment_expression "uVar5 = FUN_00022190()" identifier = (call_expression "FUN_00022190()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Unable to decompress section %s\n",5)" identifier = (call_expression "dcgettext(0,"Unable to decompress section %s\n",5)" identifier (argument_list "(0,"Unable to decompress section %s\n",5)" ( number_literal , (string_literal ""Unable to decompress section %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "error(uVar6,uVar5);" (call_expression "error(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) (return_statement "return false;" return false ;) })) (expression_statement "free(*(void **)(&DAT_000b4850 + param_1 * 0x40));" (call_expression "free(*(void **)(&DAT_000b4850 + param_1 * 0x40))" identifier (argument_list "(*(void **)(&DAT_000b4850 + param_1 * 0x40))" ( (pointer_expression "*(void **)(&DAT_000b4850 + param_1 * 0x40)" * (cast_expression "(void **)(&DAT_000b4850 + param_1 * 0x40)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" ( (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "param_1 * 0x40" identifier * number_literal)) )))) ))) ;) (expression_statement "*(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;" (assignment_expression "*(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80" (pointer_expression "*(byte **)(&DAT_000b4850 + param_1 * 0x40)" * (cast_expression "(byte **)(&DAT_000b4850 + param_1 * 0x40)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" ( (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" & identifier) + (binary_expression "param_1 * 0x40" identifier * number_literal)) )))) = identifier) ;) })) (labeled_statement "LAB_00041a50:\n  param_1 = param_1 * 0x40;" statement_identifier : (expression_statement "param_1 = param_1 * 0x40;" (assignment_expression "param_1 = param_1 * 0x40" identifier = (binary_expression "param_1 * 0x40" identifier * number_literal)) ;)) (expression_statement "*(uint *)(&DAT_000b485c + param_1) = local_7c;" (assignment_expression "*(uint *)(&DAT_000b485c + param_1) = local_7c" (pointer_expression "*(uint *)(&DAT_000b485c + param_1)" * (cast_expression "(uint *)(&DAT_000b485c + param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b485c + param_1)" ( (binary_expression "&DAT_000b485c + param_1" (pointer_expression "&DAT_000b485c" & identifier) + identifier) )))) = identifier) ;) (expression_statement "*(uint *)(&DAT_000b4860 + param_1) = local_78;" (assignment_expression "*(uint *)(&DAT_000b4860 + param_1) = local_78" (pointer_expression "*(uint *)(&DAT_000b4860 + param_1)" * (cast_expression "(uint *)(&DAT_000b4860 + param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4860 + param_1)" ( (binary_expression "&DAT_000b4860 + param_1" (pointer_expression "&DAT_000b4860" & identifier) + identifier) )))) = identifier) ;) (if_statement "if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }" if (parenthesized_expression "(*(int *)(&DAT_000b4850 + param_1) == 0)" ( (binary_expression "*(int *)(&DAT_000b4850 + param_1) == 0" (pointer_expression "*(int *)(&DAT_000b4850 + param_1)" * (cast_expression "(int *)(&DAT_000b4850 + param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4850 + param_1)" ( (binary_expression "&DAT_000b4850 + param_1" (pointer_expression "&DAT_000b4850" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }" if (parenthesized_expression "(*(int *)(&DAT_000b487c + param_1) == 0)" ( (binary_expression "*(int *)(&DAT_000b487c + param_1) == 0" (pointer_expression "*(int *)(&DAT_000b487c + param_1)" * (cast_expression "(int *)(&DAT_000b487c + param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b487c + param_1)" ( (binary_expression "&DAT_000b487c + param_1" (pointer_expression "&DAT_000b487c" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }" { (expression_statement "*(undefined4 *)(&DAT_000b4868 + param_1) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4868 + param_1) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4868 + param_1)" * (cast_expression "(undefined4 *)(&DAT_000b4868 + param_1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b4868 + param_1)" ( (binary_expression "&DAT_000b4868 + param_1" (pointer_expression "&DAT_000b4868" & identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(&DAT_000b486c + param_1) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b486c + param_1) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b486c + param_1)" * (cast_expression "(undefined4 *)(&DAT_000b486c + param_1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000b486c + param_1)" ( (binary_expression "&DAT_000b486c + param_1" (pointer_expression "&DAT_000b486c" & identifier) + identifier) )))) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);" (assignment_expression "iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" identifier = (call_expression "FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" identifier (argument_list "(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" ( identifier , identifier , (binary_expression "&DAT_000b4868 + param_1" (pointer_expression "&DAT_000b4868" & identifier) + identifier) , (binary_expression "&DAT_000b486c + param_1" (pointer_expression "&DAT_000b486c" & identifier) + identifier) )))) ;) (return_statement "return iVar3 != 0;" return (binary_expression "iVar3 != 0" identifier != number_literal) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = LIT) ;) (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT < IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT >= IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (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 )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) )))) * LIT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) ))))) )) * LIT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) ))))) )) * LIT) | (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , IDENT ))))) )) * LIT) | (binary_expression IDENT >> LIT)) )) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) ))))) )) * LIT) | (binary_expression IDENT >> LIT)) )) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , IDENT ))))) )) * LIT) | (binary_expression IDENT >> LIT)) )) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (parenthesized_expression ( (binary_expression IDENT < (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) & LIT) )) + LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return BOOL ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = LIT) ;) (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (pointer_expression & IDENT) + IDENT) , (binary_expression (pointer_expression & IDENT) + IDENT) )))) ;) (return_statement return (binary_expression IDENT != LIT) ;) })))
(function_definition "bool __regparm3 FUN_000418c0(int param_1,int param_2,undefined4 *param_3)\n\n{\n  void *__ptr;\n  ushort uVar1;\n  uint3 uVar2;\n  int iVar3;\n  char *__format;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  byte *local_80;\n  uint local_7c;\n  uint local_78;\n  int local_70;\n  int local_6c;\n  int local_68;\n  char local_5c [72];\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0x418cb;\n  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);\n  if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }\n  iVar3 = param_1 * 0x40;\n  uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n  __format = (char *)dcgettext(0,"%s section data",5);\n  snprintf(local_5c,0x40,__format,uVar5);\n  uVar5 = *(undefined4 *)(param_2 + 0x10);\n  uVar6 = *(undefined4 *)(param_2 + 0x14);\n  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;\n  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;\n  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;\n  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;\n  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);\n  *(byte **)(&DAT_000b4850 + iVar3) = local_80;\n  if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }\n  local_7c = *(uint *)(param_2 + 0x20);\n  local_78 = *(uint *)(param_2 + 0x24);\n  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }\n  if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }\nLAB_00041a50:\n  param_1 = param_1 * 0x40;\n  *(uint *)(&DAT_000b485c + param_1) = local_7c;\n  *(uint *)(&DAT_000b4860 + param_1) = local_78;\n  if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }\n  if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }\n  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);\n  return iVar3 != 0;\n}" (primitive_type "bool") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000418c0(int param_1,int param_2,undefined4 *param_3)" (identifier "FUN_000418c0") (parameter_list "(int param_1,int param_2,undefined4 *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  void *__ptr;\n  ushort uVar1;\n  uint3 uVar2;\n  int iVar3;\n  char *__format;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  byte *pbVar12;\n  uint uVar13;\n  byte *pbVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  byte *local_80;\n  uint local_7c;\n  uint local_78;\n  int local_70;\n  int local_6c;\n  int local_68;\n  char local_5c [72];\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0x418cb;\n  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);\n  if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }\n  iVar3 = param_1 * 0x40;\n  uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n  __format = (char *)dcgettext(0,"%s section data",5);\n  snprintf(local_5c,0x40,__format,uVar5);\n  uVar5 = *(undefined4 *)(param_2 + 0x10);\n  uVar6 = *(undefined4 *)(param_2 + 0x14);\n  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;\n  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;\n  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;\n  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;\n  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);\n  *(byte **)(&DAT_000b4850 + iVar3) = local_80;\n  if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }\n  local_7c = *(uint *)(param_2 + 0x20);\n  local_78 = *(uint *)(param_2 + 0x24);\n  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }\n  if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }\nLAB_00041a50:\n  param_1 = param_1 * 0x40;\n  *(uint *)(&DAT_000b485c + param_1) = local_7c;\n  *(uint *)(&DAT_000b4860 + param_1) = local_78;\n  if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }\n  if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }\n  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);\n  return iVar3 != 0;\n}" ({ "{") (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "ushort uVar1;" (type_identifier "ushort") (identifier "uVar1") (; ";")) (declaration "uint3 uVar2;" (type_identifier "uint3") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char *__format;" (primitive_type "char") (pointer_declarator "*__format" (* "*") (identifier "__format")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "bool bVar16;" (primitive_type "bool") (identifier "bVar16") (; ";")) (declaration "byte bVar17;" (type_identifier "byte") (identifier "bVar17") (; ";")) (declaration "byte *local_80;" (type_identifier "byte") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "uint local_7c;" (type_identifier "uint") (identifier "local_7c") (; ";")) (declaration "uint local_78;" (type_identifier "uint") (identifier "local_78") (; ";")) (declaration "int local_70;" (primitive_type "int") (identifier "local_70") (; ";")) (declaration "int local_6c;" (primitive_type "int") (identifier "local_6c") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "char local_5c [72];" (primitive_type "char") (array_declarator "local_5c [72]" (identifier "local_5c") ([ "[") (number_literal "72") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x418cb;" (assignment_expression "uStack_14 = 0x418cb" (identifier "uStack_14") (= "=") (number_literal "0x418cb")) (; ";")) (expression_statement "__ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);" (assignment_expression "__ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40)" (identifier "__ptr") (= "=") (pointer_expression "*(void **)(&DAT_000b4850 + param_1 * 0x40)" (* "*") (cast_expression "(void **)(&DAT_000b4850 + param_1 * 0x40)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" (( "(") (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" (& "&") (identifier "DAT_000b4850")) (+ "+") (binary_expression "param_1 * 0x40" (identifier "param_1") (* "*") (number_literal "0x40"))) () ")"))))) (; ";")) (if_statement "if (__ptr != (void *)0x0) {\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }" (if "if") (parenthesized_expression "(__ptr != (void *)0x0)" (( "(") (binary_expression "__ptr != (void *)0x0" (identifier "__ptr") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);\n    if (iVar3 == 0) {\n      return true;\n    }\n    free(__ptr);\n  }" ({ "{") (expression_statement "iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);" (assignment_expression "iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" (identifier "iVar3") (= "=") (call_expression "strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" (identifier "strcmp") (argument_list "(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3)" (( "(") (pointer_expression "*(char **)(&DAT_000b484c + param_1 * 0x40)" (* "*") (cast_expression "(char **)(&DAT_000b484c + param_1 * 0x40)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&DAT_000b484c + param_1 * 0x40)" (( "(") (binary_expression "&DAT_000b484c + param_1 * 0x40" (pointer_expression "&DAT_000b484c" (& "&") (identifier "DAT_000b484c")) (+ "+") (binary_expression "param_1 * 0x40" (identifier "param_1") (* "*") (number_literal "0x40"))) () ")")))) (, ",") (cast_expression "(char *)*param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return true;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return true;\n    }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = param_1 * 0x40;" (assignment_expression "iVar3 = param_1 * 0x40" (identifier "iVar3") (= "=") (binary_expression "param_1 * 0x40" (identifier "param_1") (* "*") (number_literal "0x40"))) (; ";")) (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" (identifier "uVar5") (= "=") (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" (( "(") (pointer_expression "&DAT_000b4848" (& "&") (identifier "DAT_000b4848")) () ")")) ([ "[") (binary_expression "param_1 * 0x10" (identifier "param_1") (* "*") (number_literal "0x10")) (] "]"))) (; ";")) (expression_statement "__format = (char *)dcgettext(0,"%s section data",5);" (assignment_expression "__format = (char *)dcgettext(0,"%s section data",5)" (identifier "__format") (= "=") (cast_expression "(char *)dcgettext(0,"%s section data",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"%s section data",5)" (identifier "dcgettext") (argument_list "(0,"%s section data",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%s section data"" (" """) (string_content "%s section data") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "snprintf(local_5c,0x40,__format,uVar5);" (call_expression "snprintf(local_5c,0x40,__format,uVar5)" (identifier "snprintf") (argument_list "(local_5c,0x40,__format,uVar5)" (( "(") (identifier "local_5c") (, ",") (number_literal "0x40") (, ",") (identifier "__format") (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "uVar5 = *(undefined4 *)(param_2 + 0x10);" (assignment_expression "uVar5 = *(undefined4 *)(param_2 + 0x10)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(undefined4 *)(param_2 + 0x14);" (assignment_expression "uVar6 = *(undefined4 *)(param_2 + 0x14)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(&DAT_000b4870 + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4870 + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4870 + iVar3)" (* "*") (cast_expression "(undefined4 *)(&DAT_000b4870 + iVar3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b4870 + iVar3)" (( "(") (binary_expression "&DAT_000b4870 + iVar3" (pointer_expression "&DAT_000b4870" (& "&") (identifier "DAT_000b4870")) (+ "+") (identifier "iVar3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;" (assignment_expression "*(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5" (pointer_expression "*(undefined4 *)(&DAT_000b4854 + iVar3)" (* "*") (cast_expression "(undefined4 *)(&DAT_000b4854 + iVar3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b4854 + iVar3)" (( "(") (binary_expression "&DAT_000b4854 + iVar3" (pointer_expression "&DAT_000b4854" (& "&") (identifier "DAT_000b4854")) (+ "+") (identifier "iVar3")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;" (assignment_expression "*(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6" (pointer_expression "*(undefined4 *)(&DAT_000b4858 + iVar3)" (* "*") (cast_expression "(undefined4 *)(&DAT_000b4858 + iVar3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b4858 + iVar3)" (( "(") (binary_expression "&DAT_000b4858 + iVar3" (pointer_expression "&DAT_000b4858" (& "&") (identifier "DAT_000b4858")) (+ "+") (identifier "iVar3")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;" (assignment_expression "*(undefined4 *)(&DAT_000b484c + iVar3) = *param_3" (pointer_expression "*(undefined4 *)(&DAT_000b484c + iVar3)" (* "*") (cast_expression "(undefined4 *)(&DAT_000b484c + iVar3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b484c + iVar3)" (( "(") (binary_expression "&DAT_000b484c + iVar3" (pointer_expression "&DAT_000b484c" (& "&") (identifier "DAT_000b484c")) (+ "+") (identifier "iVar3")) () ")")))) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c);" (assignment_expression "local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" (identifier "local_80") (= "=") (cast_expression "(byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" (identifier "FUN_0001bf90") (argument_list "(1,0,*(undefined4 *)(param_2 + 0x20),\n                                  *(undefined4 *)(param_2 + 0x24),local_5c)" (( "(") (number_literal "1") (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (, ",") (identifier "local_5c") () ")"))))) (; ";")) (expression_statement "*(byte **)(&DAT_000b4850 + iVar3) = local_80;" (assignment_expression "*(byte **)(&DAT_000b4850 + iVar3) = local_80" (pointer_expression "*(byte **)(&DAT_000b4850 + iVar3)" (* "*") (cast_expression "(byte **)(&DAT_000b4850 + iVar3)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&DAT_000b4850 + iVar3)" (( "(") (binary_expression "&DAT_000b4850 + iVar3" (pointer_expression "&DAT_000b4850" (& "&") (identifier "DAT_000b4850")) (+ "+") (identifier "iVar3")) () ")")))) (= "=") (identifier "local_80")) (; ";")) (if_statement "if (local_80 == (byte *)0x0) {\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }" (if "if") (parenthesized_expression "(local_80 == (byte *)0x0)" (( "(") (binary_expression "local_80 == (byte *)0x0" (identifier "local_80") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;\n    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;\n    return false;\n  }" ({ "{") (expression_statement "*(undefined4 *)(&DAT_000b485c + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b485c + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b485c + iVar3)" (* "*") (cast_expression "(undefined4 *)(&DAT_000b485c + iVar3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b485c + iVar3)" (( "(") (binary_expression "&DAT_000b485c + iVar3" (pointer_expression "&DAT_000b485c" (& "&") (identifier "DAT_000b485c")) (+ "+") (identifier "iVar3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(&DAT_000b4860 + iVar3) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4860 + iVar3) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4860 + iVar3)" (* "*") (cast_expression "(undefined4 *)(&DAT_000b4860 + iVar3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b4860 + iVar3)" (( "(") (binary_expression "&DAT_000b4860 + iVar3" (pointer_expression "&DAT_000b4860" (& "&") (identifier "DAT_000b4860")) (+ "+") (identifier "iVar3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "local_7c = *(uint *)(param_2 + 0x20);" (assignment_expression "local_7c = *(uint *)(param_2 + 0x20)" (identifier "local_7c") (= "=") (pointer_expression "*(uint *)(param_2 + 0x20)" (* "*") (cast_expression "(uint *)(param_2 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_78 = *(uint *)(param_2 + 0x24);" (assignment_expression "local_78 = *(uint *)(param_2 + 0x24)" (identifier "local_78") (= "=") (pointer_expression "*(uint *)(param_2 + 0x24)" (* "*") (cast_expression "(uint *)(param_2 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if ((*(uint *)(param_2 + 8) & 0x800) == 0) {\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }\n  else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" (if "if") (parenthesized_expression "((*(uint *)(param_2 + 8) & 0x800) == 0)" (( "(") (binary_expression "(*(uint *)(param_2 + 8) & 0x800) == 0" (parenthesized_expression "(*(uint *)(param_2 + 8) & 0x800)" (( "(") (binary_expression "*(uint *)(param_2 + 8) & 0x800" (pointer_expression "*(uint *)(param_2 + 8)" (* "*") (cast_expression "(uint *)(param_2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x800")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = (uint)(0xc < local_7c);\n    uVar7 = -local_78;\n    bVar15 = local_78 != 0 || uVar7 < uVar4;\n    bVar16 = uVar7 == uVar4;\n    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;\n    iVar3 = 5;\n    pbVar12 = local_80;\n    pbVar14 = &DAT_0007d064;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;\n    bVar17 = local_80[4];\n    uVar1 = CONCAT11(bVar17,local_80[5]);\n    uVar2 = CONCAT21(uVar1,local_80[6]);\n    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;\n    uVar13 = local_80[8] + uVar4;\n    uVar7 = uVar13 * 0x100;\n    uVar8 = uVar7 + local_80[9];\n    uVar9 = uVar8 * 0x100;\n    uVar10 = local_80[10] + uVar9;\n    uVar11 = uVar10 * 0x100;\n    local_6c = local_80[0xb] + uVar11;\n    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);\n    local_80 = local_80 + 0xc;\n    bVar15 = 0xb < local_7c;\n    local_7c = local_7c - 0xc;\n    local_78 = (local_78 - 1) + (uint)bVar15;\n  }" ({ "{") (expression_statement "uVar4 = (uint)(0xc < local_7c);" (assignment_expression "uVar4 = (uint)(0xc < local_7c)" (identifier "uVar4") (= "=") (call_expression "(uint)(0xc < local_7c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xc < local_7c)" (( "(") (binary_expression "0xc < local_7c" (number_literal "0xc") (< "<") (identifier "local_7c")) () ")")))) (; ";")) (expression_statement "uVar7 = -local_78;" (assignment_expression "uVar7 = -local_78" (identifier "uVar7") (= "=") (unary_expression "-local_78" (- "-") (identifier "local_78"))) (; ";")) (expression_statement "bVar15 = local_78 != 0 || uVar7 < uVar4;" (assignment_expression "bVar15 = local_78 != 0 || uVar7 < uVar4" (identifier "bVar15") (= "=") (binary_expression "local_78 != 0 || uVar7 < uVar4" (binary_expression "local_78 != 0" (identifier "local_78") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "uVar7 < uVar4" (identifier "uVar7") (< "<") (identifier "uVar4")))) (; ";")) (expression_statement "bVar16 = uVar7 == uVar4;" (assignment_expression "bVar16 = uVar7 == uVar4" (identifier "bVar16") (= "=") (binary_expression "uVar7 == uVar4" (identifier "uVar7") (== "==") (identifier "uVar4"))) (; ";")) (if_statement "if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;" (if "if") (parenthesized_expression "(local_78 == 0 && uVar7 >= uVar4)" (( "(") (binary_expression "local_78 == 0 && uVar7 >= uVar4" (binary_expression "local_78 == 0" (identifier "local_78") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar7 >= uVar4" (identifier "uVar7") (>= ">=") (identifier "uVar4"))) () ")")) (goto_statement "goto LAB_00041a50;" (goto "goto") (statement_identifier "LAB_00041a50") (; ";"))) (expression_statement "iVar3 = 5;" (assignment_expression "iVar3 = 5" (identifier "iVar3") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar12 = local_80;" (assignment_expression "pbVar12 = local_80" (identifier "pbVar12") (= "=") (identifier "local_80")) (; ";")) (expression_statement "pbVar14 = &DAT_0007d064;" (assignment_expression "pbVar14 = &DAT_0007d064" (identifier "pbVar14") (= "=") (pointer_expression "&DAT_0007d064" (& "&") (identifier "DAT_0007d064"))) (; ";")) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);" (do "do") (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar15 = *pbVar12 < *pbVar14;\n      bVar16 = *pbVar12 == *pbVar14;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar3 == 0) break;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar14;" (assignment_expression "bVar15 = *pbVar12 < *pbVar14" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar14" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "bVar16 = *pbVar12 == *pbVar14;" (assignment_expression "bVar16 = *pbVar12 == *pbVar14" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 == *pbVar14" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar17")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar17 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar17")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (; ";")) (if_statement "if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;" (if "if") (parenthesized_expression "((!bVar15 && !bVar16) != bVar15)" (( "(") (binary_expression "(!bVar15 && !bVar16) != bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" (( "(") (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar16" (! "!") (identifier "bVar16"))) () ")")) (!= "!=") (identifier "bVar15")) () ")")) (goto_statement "goto LAB_00041a50;" (goto "goto") (statement_identifier "LAB_00041a50") (; ";"))) (expression_statement "bVar17 = local_80[4];" (assignment_expression "bVar17 = local_80[4]" (identifier "bVar17") (= "=") (subscript_expression "local_80[4]" (identifier "local_80") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar1 = CONCAT11(bVar17,local_80[5]);" (assignment_expression "uVar1 = CONCAT11(bVar17,local_80[5])" (identifier "uVar1") (= "=") (call_expression "CONCAT11(bVar17,local_80[5])" (identifier "CONCAT11") (argument_list "(bVar17,local_80[5])" (( "(") (identifier "bVar17") (, ",") (subscript_expression "local_80[5]" (identifier "local_80") ([ "[") (number_literal "5") (] "]")) () ")")))) (; ";")) (expression_statement "uVar2 = CONCAT21(uVar1,local_80[6]);" (assignment_expression "uVar2 = CONCAT21(uVar1,local_80[6])" (identifier "uVar2") (= "=") (call_expression "CONCAT21(uVar1,local_80[6])" (identifier "CONCAT21") (argument_list "(uVar1,local_80[6])" (( "(") (identifier "uVar1") (, ",") (subscript_expression "local_80[6]" (identifier "local_80") ([ "[") (number_literal "6") (] "]")) () ")")))) (; ";")) (expression_statement "uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;" (assignment_expression "uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100" (identifier "uVar4") (= "=") (binary_expression "CONCAT31(uVar2,local_80[7]) * 0x100" (call_expression "CONCAT31(uVar2,local_80[7])" (identifier "CONCAT31") (argument_list "(uVar2,local_80[7])" (( "(") (identifier "uVar2") (, ",") (subscript_expression "local_80[7]" (identifier "local_80") ([ "[") (number_literal "7") (] "]")) () ")"))) (* "*") (number_literal "0x100"))) (; ";")) (expression_statement "uVar13 = local_80[8] + uVar4;" (assignment_expression "uVar13 = local_80[8] + uVar4" (identifier "uVar13") (= "=") (binary_expression "local_80[8] + uVar4" (subscript_expression "local_80[8]" (identifier "local_80") ([ "[") (number_literal "8") (] "]")) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "uVar7 = uVar13 * 0x100;" (assignment_expression "uVar7 = uVar13 * 0x100" (identifier "uVar7") (= "=") (binary_expression "uVar13 * 0x100" (identifier "uVar13") (* "*") (number_literal "0x100"))) (; ";")) (expression_statement "uVar8 = uVar7 + local_80[9];" (assignment_expression "uVar8 = uVar7 + local_80[9]" (identifier "uVar8") (= "=") (binary_expression "uVar7 + local_80[9]" (identifier "uVar7") (+ "+") (subscript_expression "local_80[9]" (identifier "local_80") ([ "[") (number_literal "9") (] "]")))) (; ";")) (expression_statement "uVar9 = uVar8 * 0x100;" (assignment_expression "uVar9 = uVar8 * 0x100" (identifier "uVar9") (= "=") (binary_expression "uVar8 * 0x100" (identifier "uVar8") (* "*") (number_literal "0x100"))) (; ";")) (expression_statement "uVar10 = local_80[10] + uVar9;" (assignment_expression "uVar10 = local_80[10] + uVar9" (identifier "uVar10") (= "=") (binary_expression "local_80[10] + uVar9" (subscript_expression "local_80[10]" (identifier "local_80") ([ "[") (number_literal "10") (] "]")) (+ "+") (identifier "uVar9"))) (; ";")) (expression_statement "uVar11 = uVar10 * 0x100;" (assignment_expression "uVar11 = uVar10 * 0x100" (identifier "uVar11") (= "=") (binary_expression "uVar10 * 0x100" (identifier "uVar10") (* "*") (number_literal "0x100"))) (; ";")) (expression_statement "local_6c = local_80[0xb] + uVar11;" (assignment_expression "local_6c = local_80[0xb] + uVar11" (identifier "local_6c") (= "=") (binary_expression "local_80[0xb] + uVar11" (subscript_expression "local_80[0xb]" (identifier "local_80") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11);" (assignment_expression "local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11)" (identifier "local_68") (= "=") (binary_expression "((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +\n               (uint)CARRY4((uint)local_80[0xb],uVar11)" (parenthesized_expression "((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18)" (( "(") (binary_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18" (binary_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100" (parenthesized_expression "(((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9))" (( "(") (binary_expression "((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +\n                (uint)CARRY4((uint)local_80[10],uVar9)" (parenthesized_expression "((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18)" (( "(") (binary_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18" (binary_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100" (parenthesized_expression "(((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9]))" (( "(") (binary_expression "((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +\n                  (uint)CARRY4(uVar7,(uint)local_80[9])" (parenthesized_expression "((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18)" (( "(") (binary_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18" (binary_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100" (parenthesized_expression "(((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4))" (( "(") (binary_expression "((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +\n                    (uint)CARRY4((uint)local_80[8],uVar4)" (parenthesized_expression "((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17)" (( "(") (binary_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17" (binary_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100" (parenthesized_expression "(((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8))" (( "(") (binary_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +\n                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)" (binary_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100" (parenthesized_expression "((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8))" (( "(") (binary_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +\n                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)" (binary_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100" (cast_expression "(uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4((uint)local_80[5],(uint)bVar17 << 8)" (identifier "CARRY4") (argument_list "((uint)local_80[5],(uint)bVar17 << 8)" (( "(") (cast_expression "(uint)local_80[5]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_80[5]" (identifier "local_80") ([ "[") (number_literal "5") (] "]"))) (, ",") (binary_expression "(uint)bVar17 << 8" (cast_expression "(uint)bVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar17")) (<< "<<") (number_literal "8")) () ")")))) (* "*") (number_literal "0x100")) (+ "+") (cast_expression "(uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4((uint)local_80[6],(uint)uVar1 << 8)" (identifier "CARRY4") (argument_list "((uint)local_80[6],(uint)uVar1 << 8)" (( "(") (cast_expression "(uint)local_80[6]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_80[6]" (identifier "local_80") ([ "[") (number_literal "6") (] "]"))) (, ",") (binary_expression "(uint)uVar1 << 8" (cast_expression "(uint)uVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar1")) (<< "<<") (number_literal "8")) () ")"))))) () ")")) (* "*") (number_literal "0x100")) (+ "+") (cast_expression "(uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4((uint)local_80[7],(uint)uVar2 << 8)" (identifier "CARRY4") (argument_list "((uint)local_80[7],(uint)uVar2 << 8)" (( "(") (cast_expression "(uint)local_80[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_80[7]" (identifier "local_80") ([ "[") (number_literal "7") (] "]"))) (, ",") (binary_expression "(uint)uVar2 << 8" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (<< "<<") (number_literal "8")) () ")"))))) () ")")) (* "*") (number_literal "0x100")) (| "|") (cast_expression "(uint)bVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar17"))) () ")")) (+ "+") (cast_expression "(uint)CARRY4((uint)local_80[8],uVar4)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4((uint)local_80[8],uVar4)" (identifier "CARRY4") (argument_list "((uint)local_80[8],uVar4)" (( "(") (cast_expression "(uint)local_80[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_80[8]" (identifier "local_80") ([ "[") (number_literal "8") (] "]"))) (, ",") (identifier "uVar4") () ")"))))) () ")")) (* "*") (number_literal "0x100")) (| "|") (binary_expression "uVar13 >> 0x18" (identifier "uVar13") (>> ">>") (number_literal "0x18"))) () ")")) (+ "+") (cast_expression "(uint)CARRY4(uVar7,(uint)local_80[9])" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar7,(uint)local_80[9])" (identifier "CARRY4") (argument_list "(uVar7,(uint)local_80[9])" (( "(") (identifier "uVar7") (, ",") (cast_expression "(uint)local_80[9]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_80[9]" (identifier "local_80") ([ "[") (number_literal "9") (] "]"))) () ")"))))) () ")")) (* "*") (number_literal "0x100")) (| "|") (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18"))) () ")")) (+ "+") (cast_expression "(uint)CARRY4((uint)local_80[10],uVar9)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4((uint)local_80[10],uVar9)" (identifier "CARRY4") (argument_list "((uint)local_80[10],uVar9)" (( "(") (cast_expression "(uint)local_80[10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_80[10]" (identifier "local_80") ([ "[") (number_literal "10") (] "]"))) (, ",") (identifier "uVar9") () ")"))))) () ")")) (* "*") (number_literal "0x100")) (| "|") (binary_expression "uVar10 >> 0x18" (identifier "uVar10") (>> ">>") (number_literal "0x18"))) () ")")) (+ "+") (cast_expression "(uint)CARRY4((uint)local_80[0xb],uVar11)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4((uint)local_80[0xb],uVar11)" (identifier "CARRY4") (argument_list "((uint)local_80[0xb],uVar11)" (( "(") (cast_expression "(uint)local_80[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_80[0xb]" (identifier "local_80") ([ "[") (number_literal "0xb") (] "]"))) (, ",") (identifier "uVar11") () ")")))))) (; ";")) (expression_statement "local_80 = local_80 + 0xc;" (assignment_expression "local_80 = local_80 + 0xc" (identifier "local_80") (= "=") (binary_expression "local_80 + 0xc" (identifier "local_80") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "bVar15 = 0xb < local_7c;" (assignment_expression "bVar15 = 0xb < local_7c" (identifier "bVar15") (= "=") (binary_expression "0xb < local_7c" (number_literal "0xb") (< "<") (identifier "local_7c"))) (; ";")) (expression_statement "local_7c = local_7c - 0xc;" (assignment_expression "local_7c = local_7c - 0xc" (identifier "local_7c") (= "=") (binary_expression "local_7c - 0xc" (identifier "local_7c") (- "-") (number_literal "0xc"))) (; ";")) (expression_statement "local_78 = (local_78 - 1) + (uint)bVar15;" (assignment_expression "local_78 = (local_78 - 1) + (uint)bVar15" (identifier "local_78") (= "=") (binary_expression "(local_78 - 1) + (uint)bVar15" (parenthesized_expression "(local_78 - 1)" (( "(") (binary_expression "local_78 - 1" (identifier "local_78") (- "-") (number_literal "1")) () ")")) (+ "+") (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")))) (; ";")) (} "}")) (else_clause "else {\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" (else "else") (compound_statement "{\n    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }\n    uVar4 = FUN_0001be30(local_7c,local_78);\n    if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }\n    local_80 = local_80 + uVar4;\n    bVar15 = local_7c < uVar4;\n    local_7c = local_7c - uVar4;\n    local_78 = local_78 - bVar15;\n  }" ({ "{") (if_statement "if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }" (if "if") (parenthesized_expression "(local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc))" (( "(") (binary_expression "local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)" (identifier "local_78") (< "<") (parenthesized_expression "(local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)" (( "(") (binary_expression "local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc" (identifier "local_7c") (< "<") (binary_expression "(-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc" (parenthesized_expression "(-(uint)(DAT_000b6324 == 0) & 0xc)" (( "(") (binary_expression "-(uint)(DAT_000b6324 == 0) & 0xc" (unary_expression "-(uint)(DAT_000b6324 == 0)" (- "-") (call_expression "(uint)(DAT_000b6324 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_000b6324 == 0)" (( "(") (binary_expression "DAT_000b6324 == 0" (identifier "DAT_000b6324") (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0xc")) () ")")) (+ "+") (number_literal "0xc"))) () ")"))) () ")")) (compound_statement "{\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);\n      warn(uVar6,uVar5);\n      return false;\n    }" ({ "{") (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" (identifier "uVar5") (= "=") (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" (( "(") (pointer_expression "&DAT_000b4848" (& "&") (identifier "DAT_000b4848")) () ")")) ([ "[") (binary_expression "param_1 * 0x10" (identifier "param_1") (* "*") (number_literal "0x10")) (] "]"))) (; ";")) (expression_statement "uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);" (assignment_expression "uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"compressed section %s is too small to contain a compression header",5)" (identifier "dcgettext") (argument_list "(0,"compressed section %s is too small to contain a compression header",5)" (( "(") (number_literal "0") (, ",") (string_literal ""compressed section %s is too small to contain a compression header"" (" """) (string_content "compressed section %s is too small to contain a compression header") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "warn(uVar6,uVar5);" (call_expression "warn(uVar6,uVar5)" (identifier "warn") (argument_list "(uVar6,uVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar5") () ")"))) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "uVar4 = FUN_0001be30(local_7c,local_78);" (assignment_expression "uVar4 = FUN_0001be30(local_7c,local_78)" (identifier "uVar4") (= "=") (call_expression "FUN_0001be30(local_7c,local_78)" (identifier "FUN_0001be30") (argument_list "(local_7c,local_78)" (( "(") (identifier "local_7c") (, ",") (identifier "local_78") () ")")))) (; ";")) (if_statement "if (local_70 != 1) {\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }" (if "if") (parenthesized_expression "(local_70 != 1)" (( "(") (binary_expression "local_70 != 1" (identifier "local_70") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      uVar5 = (&DAT_000b4848)[param_1 * 0x10];\n      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);\n      warn(uVar6,uVar5,local_70);\n      return false;\n    }" ({ "{") (expression_statement "uVar5 = (&DAT_000b4848)[param_1 * 0x10];" (assignment_expression "uVar5 = (&DAT_000b4848)[param_1 * 0x10]" (identifier "uVar5") (= "=") (subscript_expression "(&DAT_000b4848)[param_1 * 0x10]" (parenthesized_expression "(&DAT_000b4848)" (( "(") (pointer_expression "&DAT_000b4848" (& "&") (identifier "DAT_000b4848")) () ")")) ([ "[") (binary_expression "param_1 * 0x10" (identifier "param_1") (* "*") (number_literal "0x10")) (] "]"))) (; ";")) (expression_statement "uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);" (assignment_expression "uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5)" (identifier "dcgettext") (argument_list "(0,"section \'%s\' has unsupported compress type: %d\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""section \'%s\' has unsupported compress type: %d\n"" (" """) (string_content "section ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " has unsupported compress type: %d") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "warn(uVar6,uVar5,local_70);" (call_expression "warn(uVar6,uVar5,local_70)" (identifier "warn") (argument_list "(uVar6,uVar5,local_70)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar5") (, ",") (identifier "local_70") () ")"))) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "local_80 = local_80 + uVar4;" (assignment_expression "local_80 = local_80 + uVar4" (identifier "local_80") (= "=") (binary_expression "local_80 + uVar4" (identifier "local_80") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "bVar15 = local_7c < uVar4;" (assignment_expression "bVar15 = local_7c < uVar4" (identifier "bVar15") (= "=") (binary_expression "local_7c < uVar4" (identifier "local_7c") (< "<") (identifier "uVar4"))) (; ";")) (expression_statement "local_7c = local_7c - uVar4;" (assignment_expression "local_7c = local_7c - uVar4" (identifier "local_7c") (= "=") (binary_expression "local_7c - uVar4" (identifier "local_7c") (- "-") (identifier "uVar4"))) (; ";")) (expression_statement "local_78 = local_78 - bVar15;" (assignment_expression "local_78 = local_78 - bVar15" (identifier "local_78") (= "=") (binary_expression "local_78 - bVar15" (identifier "local_78") (- "-") (identifier "bVar15"))) (; ";")) (} "}")))) (if_statement "if (local_68 != 0 || local_6c != 0) {\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }" (if "if") (parenthesized_expression "(local_68 != 0 || local_6c != 0)" (( "(") (binary_expression "local_68 != 0 || local_6c != 0" (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n    iVar3 = FUN_0001d690(&local_7c);\n    if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }\n    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));\n    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;\n  }" ({ "{") (expression_statement "iVar3 = FUN_0001d690(&local_7c);" (assignment_expression "iVar3 = FUN_0001d690(&local_7c)" (identifier "iVar3") (= "=") (call_expression "FUN_0001d690(&local_7c)" (identifier "FUN_0001d690") (argument_list "(&local_7c)" (( "(") (pointer_expression "&local_7c" (& "&") (identifier "local_7c")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar5 = FUN_00022190();\n      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);\n      error(uVar6,uVar5);\n      return false;\n    }" ({ "{") (expression_statement "uVar5 = FUN_00022190();" (assignment_expression "uVar5 = FUN_00022190()" (identifier "uVar5") (= "=") (call_expression "FUN_00022190()" (identifier "FUN_00022190") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Unable to decompress section %s\n",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"Unable to decompress section %s\n",5)" (identifier "dcgettext") (argument_list "(0,"Unable to decompress section %s\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Unable to decompress section %s\n"" (" """) (string_content "Unable to decompress section %s") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "error(uVar6,uVar5);" (call_expression "error(uVar6,uVar5)" (identifier "error") (argument_list "(uVar6,uVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar5") () ")"))) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "free(*(void **)(&DAT_000b4850 + param_1 * 0x40));" (call_expression "free(*(void **)(&DAT_000b4850 + param_1 * 0x40))" (identifier "free") (argument_list "(*(void **)(&DAT_000b4850 + param_1 * 0x40))" (( "(") (pointer_expression "*(void **)(&DAT_000b4850 + param_1 * 0x40)" (* "*") (cast_expression "(void **)(&DAT_000b4850 + param_1 * 0x40)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" (( "(") (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" (& "&") (identifier "DAT_000b4850")) (+ "+") (binary_expression "param_1 * 0x40" (identifier "param_1") (* "*") (number_literal "0x40"))) () ")")))) () ")"))) (; ";")) (expression_statement "*(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;" (assignment_expression "*(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80" (pointer_expression "*(byte **)(&DAT_000b4850 + param_1 * 0x40)" (* "*") (cast_expression "(byte **)(&DAT_000b4850 + param_1 * 0x40)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&DAT_000b4850 + param_1 * 0x40)" (( "(") (binary_expression "&DAT_000b4850 + param_1 * 0x40" (pointer_expression "&DAT_000b4850" (& "&") (identifier "DAT_000b4850")) (+ "+") (binary_expression "param_1 * 0x40" (identifier "param_1") (* "*") (number_literal "0x40"))) () ")")))) (= "=") (identifier "local_80")) (; ";")) (} "}"))) (labeled_statement "LAB_00041a50:\n  param_1 = param_1 * 0x40;" (statement_identifier "LAB_00041a50") (: ":") (expression_statement "param_1 = param_1 * 0x40;" (assignment_expression "param_1 = param_1 * 0x40" (identifier "param_1") (= "=") (binary_expression "param_1 * 0x40" (identifier "param_1") (* "*") (number_literal "0x40"))) (; ";"))) (expression_statement "*(uint *)(&DAT_000b485c + param_1) = local_7c;" (assignment_expression "*(uint *)(&DAT_000b485c + param_1) = local_7c" (pointer_expression "*(uint *)(&DAT_000b485c + param_1)" (* "*") (cast_expression "(uint *)(&DAT_000b485c + param_1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b485c + param_1)" (( "(") (binary_expression "&DAT_000b485c + param_1" (pointer_expression "&DAT_000b485c" (& "&") (identifier "DAT_000b485c")) (+ "+") (identifier "param_1")) () ")")))) (= "=") (identifier "local_7c")) (; ";")) (expression_statement "*(uint *)(&DAT_000b4860 + param_1) = local_78;" (assignment_expression "*(uint *)(&DAT_000b4860 + param_1) = local_78" (pointer_expression "*(uint *)(&DAT_000b4860 + param_1)" (* "*") (cast_expression "(uint *)(&DAT_000b4860 + param_1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b4860 + param_1)" (( "(") (binary_expression "&DAT_000b4860 + param_1" (pointer_expression "&DAT_000b4860" (& "&") (identifier "DAT_000b4860")) (+ "+") (identifier "param_1")) () ")")))) (= "=") (identifier "local_78")) (; ";")) (if_statement "if (*(int *)(&DAT_000b4850 + param_1) == 0) {\n    return false;\n  }" (if "if") (parenthesized_expression "(*(int *)(&DAT_000b4850 + param_1) == 0)" (( "(") (binary_expression "*(int *)(&DAT_000b4850 + param_1) == 0" (pointer_expression "*(int *)(&DAT_000b4850 + param_1)" (* "*") (cast_expression "(int *)(&DAT_000b4850 + param_1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b4850 + param_1)" (( "(") (binary_expression "&DAT_000b4850 + param_1" (pointer_expression "&DAT_000b4850" (& "&") (identifier "DAT_000b4850")) (+ "+") (identifier "param_1")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return false;\n  }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (if_statement "if (*(int *)(&DAT_000b487c + param_1) == 0) {\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }" (if "if") (parenthesized_expression "(*(int *)(&DAT_000b487c + param_1) == 0)" (( "(") (binary_expression "*(int *)(&DAT_000b487c + param_1) == 0" (pointer_expression "*(int *)(&DAT_000b487c + param_1)" (* "*") (cast_expression "(int *)(&DAT_000b487c + param_1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b487c + param_1)" (( "(") (binary_expression "&DAT_000b487c + param_1" (pointer_expression "&DAT_000b487c" (& "&") (identifier "DAT_000b487c")) (+ "+") (identifier "param_1")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;\n    *(undefined4 *)(&DAT_000b486c + param_1) = 0;\n    return true;\n  }" ({ "{") (expression_statement "*(undefined4 *)(&DAT_000b4868 + param_1) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b4868 + param_1) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b4868 + param_1)" (* "*") (cast_expression "(undefined4 *)(&DAT_000b4868 + param_1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b4868 + param_1)" (( "(") (binary_expression "&DAT_000b4868 + param_1" (pointer_expression "&DAT_000b4868" (& "&") (identifier "DAT_000b4868")) (+ "+") (identifier "param_1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(&DAT_000b486c + param_1) = 0;" (assignment_expression "*(undefined4 *)(&DAT_000b486c + param_1) = 0" (pointer_expression "*(undefined4 *)(&DAT_000b486c + param_1)" (* "*") (cast_expression "(undefined4 *)(&DAT_000b486c + param_1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000b486c + param_1)" (( "(") (binary_expression "&DAT_000b486c + param_1" (pointer_expression "&DAT_000b486c" (& "&") (identifier "DAT_000b486c")) (+ "+") (identifier "param_1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);" (assignment_expression "iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" (identifier "iVar3") (= "=") (call_expression "FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" (identifier "FUN_0003fb10") (argument_list "(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1)" (( "(") (identifier "local_7c") (, ",") (identifier "local_78") (, ",") (binary_expression "&DAT_000b4868 + param_1" (pointer_expression "&DAT_000b4868" (& "&") (identifier "DAT_000b4868")) (+ "+") (identifier "param_1")) (, ",") (binary_expression "&DAT_000b486c + param_1" (pointer_expression "&DAT_000b486c" (& "&") (identifier "DAT_000b486c")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (return_statement "return iVar3 != 0;" (return "return") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) (; ";")) (} "}")))

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

type_1 __regparm3
function_1(type_2 var_1,type_3 *sec,void *data)

{
  void *var_2;
  type_4 uVar1;
  type_5 uVar2;
  type_6 uVar3;
  type_7 bVar4;
  int var_4;
  char *var_10;
  type_8 var_12;
  type_1 var_30;
  char *pcVar9;
  type_9 *filedata;
  type_8 var_11;
  type_8 var_20;
  type_8 var_21;
  type_8 var_22;
  type_8 var_23;
  type_10 *var_13;
  type_8 var_19;
  type_10 *var_14;
  bool var_15;
  bool bVar19;
  type_10 bVar20;
  type_11 *var_9;
  type_12 size;
  type_13 chdr;
  char buf [64];
  
  bVar20 = 0;
  var_2 = *(void **)(&DAT_000b4850 + var_1 * 0x40);
  if (var_2 != (void *)0x0) {
                    /* WARNING: Load size is inaccurate */
    var_4 = var_3(*(char **)(&DAT_000b484c + var_1 * 0x40),*data);
    if (var_4 == 0) {
      return 1;
    }
    var_5(var_2);
  }
  pcVar9 = "%s section data";
  var_4 = var_1 * 0x40;
  uVar1 = (&DAT_000b4848)[var_1 * 0x10];
  var_10 = (char *)var_6(0,"%s section data",5);
  var_7(buf,0x40,var_10,uVar1);
  bVar4 = sec->sh_addr;
  uVar1 = *(type_4 *)((int)&sec->sh_addr + 4);
  *(type_4 *)(&DAT_000b4870 + var_4) = 0;
  *(int *)(&DAT_000b4854 + var_4) = (int)bVar4;
  *(type_4 *)(&DAT_000b4858 + var_4) = uVar1;
                    /* WARNING: Load size is inaccurate */
  *(type_4 *)(&DAT_000b484c + var_4) = *data;
  var_9 = (type_11 *)var_8((void *)0x0,(type_9 *)data,(type_14)sec->sh_offset,1,sec->sh_size,buf);
  *(type_11 **)(&DAT_000b4850 + var_4) = var_9;
  if (var_9 == (type_10 *)0x0) {
    *(type_4 *)(&DAT_000b485c + var_4) = 0;
    *(type_4 *)(&DAT_000b4860 + var_4) = 0;
    return 0;
  }
  size._0_4_ = (type_8)sec->sh_size;
  var_10 = *(char **)((int)&sec->sh_size + 4);
  size._4_4_ = var_10;
  if ((sec->sh_flags & 0x800) == 0) {
    var_12 = (type_8)(0xc < (type_8)size);
    var_11 = -(int)var_10;
    var_15 = var_10 != (char *)0x0 || var_11 < var_12;
    bVar19 = var_11 == var_12;
    if (var_10 == (char *)0x0 && var_11 >= var_12) goto LAB_00041a50;
    var_4 = 5;
    var_13 = var_9;
    var_14 = &DAT_0007d064;
    do {
      if (var_4 == 0) break;
      var_4 = var_4 + -1;
      var_15 = *var_13 < *var_14;
      bVar19 = *var_13 == *var_14;
      var_13 = var_13 + (type_8)bVar20 * -2 + 1;
      var_14 = var_14 + (type_8)bVar20 * -2 + 1;
    } while (bVar19);
    if ((!var_15 && !bVar19) != var_15) goto LAB_00041a50;
    bVar20 = var_9[4];
    uVar2 = var_16(bVar20,var_9[5]);
    uVar3 = var_17(uVar2,var_9[6]);
    var_12 = var_18(uVar3,var_9[7]) * 0x100;
    var_19 = var_9[8] + var_12;
    var_11 = var_19 * 0x100;
    var_20 = var_11 + var_9[9];
    var_21 = var_20 * 0x100;
    var_22 = var_9[10] + var_21;
    var_23 = var_22 * 0x100;
    chdr.ch_size._0_4_ = (type_12 *)(var_9[0xb] + var_23);
    chdr.ch_size._4_4_ =
         ((((((((((type_8)var_24((type_8)var_9[5],(type_8)bVar20 << 8) * 0x100 +
                 (type_8)var_24((type_8)var_9[6],(type_8)uVar2 << 8)) * 0x100 +
                (type_8)var_24((type_8)var_9[7],(type_8)uVar3 << 8)) * 0x100 | (type_8)bVar20) +
              (type_8)var_24((type_8)var_9[8],var_12)) * 0x100 | var_19 >> 0x18) +
            (type_8)var_24(var_11,(type_8)var_9[9])) * 0x100 | var_20 >> 0x18) +
          (type_8)var_24((type_8)var_9[10],var_21)) * 0x100 | var_22 >> 0x18) +
         (type_8)var_24((type_8)var_9[0xb],var_23);
    var_9 = var_9 + 0xc;
    var_15 = 0xb < (type_8)size;
    size._0_4_ = (type_8)size - 0xc;
    size._4_4_ = var_10 + (var_15 - 1);
  }
  else {
    if (var_10 < (char *)(type_8)((type_8)size < (-(type_8)(var_25 == 0) & 0xc) + 0xc)) {
      uVar1 = (&DAT_000b4848)[var_1 * 0x10];
      pcVar9 = (char *)var_6(0,
                                 "compressed section %s is too small to contain a compression header"
                                 ,5);
      var_26(pcVar9,uVar1);
      return 0;
    }
    var_12 = var_27(&chdr,var_9,sec->sh_size);
    if (chdr.ch_type != 1) {
      uVar1 = (&DAT_000b4848)[var_1 * 0x10];
      pcVar9 = (char *)var_6(0,"section \'%s\' has unsupported compress type: %d\n",5);
      var_26(pcVar9,uVar1,chdr.ch_type);
      return 0;
    }
    var_9 = var_9 + var_12;
    var_15 = (type_8)size < var_12;
    size._0_4_ = (type_8)size - var_12;
    size._4_4_ = size._4_4_ + -(type_8)var_15;
    pcVar9 = var_10;
  }
  if (chdr.ch_size._4_4_ != 0 || (type_12 *)chdr.ch_size != (type_12 *)0x0) {
    var_30 = var_28
                      (&var_9,var_29(pcVar9,&size),(type_12 *)chdr.ch_size);
    if (var_30 == 0) {
      pcVar9 = var_31
                         ((type_9 *)((int)data + 100),(type_3 *)((int)data + 0x68),
                          (type_9 *)sec);
      var_10 = (char *)var_6(0,"Unable to decompress section %s\n",5);
      var_32(var_10,pcVar9);
      return 0;
    }
    var_5(*(void **)(&DAT_000b4850 + var_1 * 0x40));
    *(type_11 **)(&DAT_000b4850 + var_1 * 0x40) = var_9;
  }
LAB_00041a50:
  var_4 = var_1 * 0x40;
  *(type_8 *)(&DAT_000b485c + var_4) = (type_8)size;
  *(char **)(&DAT_000b4860 + var_4) = size._4_4_;
  if (*(type_11 **)(&DAT_000b4850 + var_4) == (type_11 *)0x0) {
    return 0;
  }
  if (*(int *)(&DAT_000b487c + var_4) == 0) {
    *(type_4 *)(&DAT_000b4868 + var_4) = 0;
    *(type_4 *)(&DAT_000b486c + var_4) = 0;
    return 1;
  }
  var_30 = var_33((type_9 *)data,sec,*(type_11 **)(&DAT_000b4850 + var_4),
                            var_29(size._4_4_,(type_8)size),(void **)(&DAT_000b4868 + var_4),
                            (type_14 *)(&DAT_000b486c + var_4));
  return (type_8)(var_30 != 0);
}


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

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

bool __regparm3 MASKED(int param_1,int param_2,undefined4 *param_3)

{
  void *__ptr;
  ushort uVar1;
  uint3 uVar2;
  int iVar3;
  char *__format;
  uint uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  byte *pbVar12;
  uint uVar13;
  byte *pbVar14;
  bool bVar15;
  bool bVar16;
  byte bVar17;
  byte *local_80;
  uint local_7c;
  uint local_78;
  int local_70;
  int local_6c;
  int local_68;
  char local_5c [72];
  undefined4 uStack_14;
  
  bVar17 = 0;
  uStack_14 = 0x418cb;
  __ptr = *(void **)(&DAT_000b4850 + param_1 * 0x40);
  if (__ptr != (void *)0x0) {
    iVar3 = strcmp(*(char **)(&DAT_000b484c + param_1 * 0x40),(char *)*param_3);
    if (iVar3 == 0) {
      return true;
    }
    free(__ptr);
  }
  iVar3 = param_1 * 0x40;
  uVar5 = (&DAT_000b4848)[param_1 * 0x10];
  __format = (char *)dcgettext(0,"%s section data",5);
  snprintf(local_5c,0x40,__format,uVar5);
  uVar5 = *(undefined4 *)(param_2 + 0x10);
  uVar6 = *(undefined4 *)(param_2 + 0x14);
  *(undefined4 *)(&DAT_000b4870 + iVar3) = 0;
  *(undefined4 *)(&DAT_000b4854 + iVar3) = uVar5;
  *(undefined4 *)(&DAT_000b4858 + iVar3) = uVar6;
  *(undefined4 *)(&DAT_000b484c + iVar3) = *param_3;
  local_80 = (byte *)FUN_0001bf90(1,0,*(undefined4 *)(param_2 + 0x20),
                                  *(undefined4 *)(param_2 + 0x24),local_5c);
  *(byte **)(&DAT_000b4850 + iVar3) = local_80;
  if (local_80 == (byte *)0x0) {
    *(undefined4 *)(&DAT_000b485c + iVar3) = 0;
    *(undefined4 *)(&DAT_000b4860 + iVar3) = 0;
    return false;
  }
  local_7c = *(uint *)(param_2 + 0x20);
  local_78 = *(uint *)(param_2 + 0x24);
  if ((*(uint *)(param_2 + 8) & 0x800) == 0) {
    uVar4 = (uint)(0xc < local_7c);
    uVar7 = -local_78;
    bVar15 = local_78 != 0 || uVar7 < uVar4;
    bVar16 = uVar7 == uVar4;
    if (local_78 == 0 && uVar7 >= uVar4) goto LAB_00041a50;
    iVar3 = 5;
    pbVar12 = local_80;
    pbVar14 = &DAT_0007d064;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar15 = *pbVar12 < *pbVar14;
      bVar16 = *pbVar12 == *pbVar14;
      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
      pbVar14 = pbVar14 + (uint)bVar17 * -2 + 1;
    } while (bVar16);
    if ((!bVar15 && !bVar16) != bVar15) goto LAB_00041a50;
    bVar17 = local_80[4];
    uVar1 = CONCAT11(bVar17,local_80[5]);
    uVar2 = CONCAT21(uVar1,local_80[6]);
    uVar4 = CONCAT31(uVar2,local_80[7]) * 0x100;
    uVar13 = local_80[8] + uVar4;
    uVar7 = uVar13 * 0x100;
    uVar8 = uVar7 + local_80[9];
    uVar9 = uVar8 * 0x100;
    uVar10 = local_80[10] + uVar9;
    uVar11 = uVar10 * 0x100;
    local_6c = local_80[0xb] + uVar11;
    local_68 = ((((((((((uint)CARRY4((uint)local_80[5],(uint)bVar17 << 8) * 0x100 +
                       (uint)CARRY4((uint)local_80[6],(uint)uVar1 << 8)) * 0x100 +
                      (uint)CARRY4((uint)local_80[7],(uint)uVar2 << 8)) * 0x100 | (uint)bVar17) +
                    (uint)CARRY4((uint)local_80[8],uVar4)) * 0x100 | uVar13 >> 0x18) +
                  (uint)CARRY4(uVar7,(uint)local_80[9])) * 0x100 | uVar8 >> 0x18) +
                (uint)CARRY4((uint)local_80[10],uVar9)) * 0x100 | uVar10 >> 0x18) +
               (uint)CARRY4((uint)local_80[0xb],uVar11);
    local_80 = local_80 + 0xc;
    bVar15 = 0xb < local_7c;
    local_7c = local_7c - 0xc;
    local_78 = (local_78 - 1) + (uint)bVar15;
  }
  else {
    if (local_78 < (local_7c < (-(uint)(DAT_000b6324 == 0) & 0xc) + 0xc)) {
      uVar5 = (&DAT_000b4848)[param_1 * 0x10];
      uVar6 = dcgettext(0,"compressed section %s is too small to contain a compression header",5);
      warn(uVar6,uVar5);
      return false;
    }
    uVar4 = FUN_0001be30(local_7c,local_78);
    if (local_70 != 1) {
      uVar5 = (&DAT_000b4848)[param_1 * 0x10];
      uVar6 = dcgettext(0,"section \'%s\' has unsupported compress type: %d\n",5);
      warn(uVar6,uVar5,local_70);
      return false;
    }
    local_80 = local_80 + uVar4;
    bVar15 = local_7c < uVar4;
    local_7c = local_7c - uVar4;
    local_78 = local_78 - bVar15;
  }
  if (local_68 != 0 || local_6c != 0) {
    iVar3 = FUN_0001d690(&local_7c);
    if (iVar3 == 0) {
      uVar5 = FUN_00022190();
      uVar6 = dcgettext(0,"Unable to decompress section %s\n",5);
      error(uVar6,uVar5);
      return false;
    }
    free(*(void **)(&DAT_000b4850 + param_1 * 0x40));
    *(byte **)(&DAT_000b4850 + param_1 * 0x40) = local_80;
  }
LAB_00041a50:
  param_1 = param_1 * 0x40;
  *(uint *)(&DAT_000b485c + param_1) = local_7c;
  *(uint *)(&DAT_000b4860 + param_1) = local_78;
  if (*(int *)(&DAT_000b4850 + param_1) == 0) {
    return false;
  }
  if (*(int *)(&DAT_000b487c + param_1) == 0) {
    *(undefined4 *)(&DAT_000b4868 + param_1) = 0;
    *(undefined4 *)(&DAT_000b486c + param_1) = 0;
    return true;
  }
  iVar3 = FUN_0003fb10(local_7c,local_78,&DAT_000b4868 + param_1,&DAT_000b486c + param_1);
  return iVar3 != 0;
}

