
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void copy_section(bfd *ibfd,sec_ptr isection,void *obfdarg)

{
  bfd_byte *pbVar1;
  bfd_byte *pbVar2;
  bfd_byte bVar3;
  asection *section;
  char *pcVar4;
  int iVar5;
  size_t sVar6;
  bfd_boolean bVar7;
  section_list *psVar8;
  int iVar9;
  int iVar10;
  bfd_byte *pbVar11;
  void *__s;
  int iVar12;
  char *format;
  uint uVar13;
  uint uVar14;
  bfd_byte *pbVar15;
  int iVar16;
  bfd_byte *pbVar17;
  bfd_byte *pbVar18;
  bfd_byte *pbVar19;
  uint uVar20;
  int iVar21;
  longlong lVar22;
  bfd_vma bVar23;
  uint local_54;
  uint local_4c;
  int local_48;
  bfd_byte *memhunk;
  bfd_size_type size;
  
  bVar7 = skip_section(ibfd,isection,1);
  if (bVar7 == 0) {
    section = isection->output_section;
    size._4_4_ = *(int *)((int)&isection->size + 4);
    size._0_4_ = (uint)isection->size;
    if (((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)) {
      memhunk = (bfd_byte *)0x0;
      iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);
      if ((iVar12 != 0) &&
         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),
         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {
        if (reverse_bytes != 0) {
          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);
          if (lVar22 != 0) {
            pcVar4 = isection->name;
            format = (char *)dcgettext(0,
                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"
                                       ,5,(int)((ulonglong)lVar22 >> 0x20));
                    /* WARNING: Subroutine does not return */
            fatal(format,pcVar4,iVar12);
          }
          if (local_48 != 0 || local_4c != 0) {
            local_54 = 0;
            iVar9 = iVar12 + -1;
            uVar20 = iVar12 / 2;
            do {
              uVar13 = local_54;
              if (iVar12 / 2 != 0) {
                do {
                  uVar14 = uVar13 + 1;
                  bVar3 = memhunk[uVar13];
                  memhunk[uVar13] = memhunk[iVar9 - uVar13];
                  memhunk[iVar9 - uVar13] = bVar3;
                  local_4c = (uint)size;
                  uVar13 = uVar14;
                  local_48 = size._4_4_;
                } while (uVar20 != uVar14);
              }
              iVar9 = iVar9 + iVar12 * 2;
              local_54 = local_54 + iVar12;
              uVar20 = uVar20 + iVar12;
            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));
          }
        }
        pbVar19 = memhunk;
        iVar9 = interleave;
        iVar12 = copy_byte;
        lVar22 = CONCAT44(local_48,local_4c);
        if (-1 < copy_byte) {
          pbVar15 = memhunk + local_4c;
          iVar16 = interleave >> 0x1f;
          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,
                             iVar16);
          iVar5 = copy_width;
          pbVar17 = pbVar19 + (iVar12 - iVar10);
          if (iVar12 < iVar10) {
            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;
          }
          if (pbVar17 < pbVar15) {
            iVar21 = (int)pbVar15 - (int)pbVar17;
            do {
              if ((0 < iVar5) && (pbVar17 < pbVar15)) {
                pbVar1 = pbVar19 + iVar5;
                pbVar2 = pbVar19 + iVar21;
                pbVar11 = pbVar17;
                pbVar18 = pbVar19;
                do {
                  pbVar19 = pbVar18 + 1;
                  *pbVar18 = *pbVar11;
                  if (pbVar19 == pbVar1) break;
                  pbVar11 = pbVar11 + 1;
                  pbVar18 = pbVar19;
                } while (pbVar19 != pbVar2);
              }
              pbVar17 = pbVar17 + iVar9;
              iVar21 = iVar21 - iVar9;
            } while (pbVar17 < pbVar15);
            local_4c = (uint)size;
            local_48 = size._4_4_;
            pbVar19 = memhunk;
          }
          uVar20 = (iVar9 - 1U) - iVar12;
          lVar22 = __udivdi3(uVar20 + local_4c,
                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -
                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +
                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);
          lVar22 = lVar22 * iVar5;
          local_4c = (uint)lVar22;
          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);
          size._0_4_ = local_4c;
          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)
          ;
          if (iVar12 < iVar10) {
            section->lma = bVar23 + 1;
          }
          else {
            section->lma = bVar23;
          }
        }
        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);
        ibfd = (bfd *)obfdarg;
        isection = section;
        if (iVar12 != 0) {
          free(memhunk);
          return;
        }
      }
      status = 1;
      bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);
      free(memhunk);
      return;
    }
    psVar8 = find_section_list(isection->name,0,0x40);
    if ((psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0)) {
      __s = (void *)xmalloc((uint)size);
      iVar12 = size._4_4_;
      sVar6 = (uint)size;
      memset(__s,0,(uint)size);
      iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);
      if (iVar12 == 0) {
        status = 1;
        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);
        free(__s);
      }
      else {
        free(__s);
      }
    }
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined1 *puVar1;
  undefined1 *puVar2;
  undefined1 uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined1 *puVar9;
  void *__s;
  undefined4 uVar10;
  uint uVar11;
  uint uVar12;
  undefined1 *puVar13;
  int iVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  undefined1 *puVar17;
  uint uVar18;
  int iVar19;
  longlong lVar20;
  longlong lVar21;
  uint local_54;
  uint local_4c;
  int local_48;
  undefined1 *local_28;
  uint local_24;
  int local_20;
  
  iVar6 = FUN_00017fd0();
  if (iVar6 == 0) {
    puVar4 = (undefined4 *)param_2[0x15];
    local_20 = param_2[0xc];
    local_24 = param_2[0xb];
    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {
      local_28 = (undefined1 *)0x0;
      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);
      if ((iVar6 != 0) &&
         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),
         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {
        if (DAT_00040ae8 != 0) {
          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);
          if (lVar20 != 0) {
            uVar5 = *param_2;
            uVar10 = dcgettext(0,
                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"
                               ,5,(int)((ulonglong)lVar20 >> 0x20));
                    /* WARNING: Subroutine does not return */
            FUN_0002c8e0(uVar10,uVar5,iVar6);
          }
          if (local_48 != 0 || local_4c != 0) {
            local_54 = 0;
            iVar7 = iVar6 + -1;
            uVar18 = iVar6 / 2;
            do {
              uVar11 = local_54;
              if (iVar6 / 2 != 0) {
                do {
                  uVar12 = uVar11 + 1;
                  uVar3 = local_28[uVar11];
                  local_28[uVar11] = local_28[iVar7 - uVar11];
                  local_28[iVar7 - uVar11] = uVar3;
                  local_4c = local_24;
                  uVar11 = uVar12;
                  local_48 = local_20;
                } while (uVar18 != uVar12);
              }
              iVar7 = iVar7 + iVar6 * 2;
              local_54 = local_54 + iVar6;
              uVar18 = uVar18 + iVar6;
            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));
          }
        }
        puVar17 = local_28;
        iVar6 = DAT_00040bd4;
        uVar18 = DAT_00040274;
        lVar20 = CONCAT44(local_48,local_4c);
        if (-1 < (int)DAT_00040274) {
          puVar13 = local_28 + local_4c;
          iVar14 = DAT_00040bd4 >> 0x1f;
          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);
          iVar7 = DAT_00040270;
          puVar15 = puVar17 + (uVar18 - iVar8);
          if ((int)uVar18 < iVar8) {
            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;
          }
          if (puVar15 < puVar13) {
            iVar19 = (int)puVar13 - (int)puVar15;
            do {
              if ((0 < iVar7) && (puVar15 < puVar13)) {
                puVar1 = puVar17 + iVar7;
                puVar2 = puVar17 + iVar19;
                puVar9 = puVar15;
                puVar16 = puVar17;
                do {
                  puVar17 = puVar16 + 1;
                  *puVar16 = *puVar9;
                  if (puVar17 == puVar1) break;
                  puVar9 = puVar9 + 1;
                  puVar16 = puVar17;
                } while (puVar17 != puVar2);
              }
              puVar15 = puVar15 + iVar6;
              iVar19 = iVar19 - iVar6;
            } while (puVar15 < puVar13);
            local_4c = local_24;
            local_48 = local_20;
            puVar17 = local_28;
          }
          uVar11 = (iVar6 - 1U) - uVar18;
          lVar20 = FUN_0002e730(uVar11 + local_4c,
                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -
                                (uint)(iVar6 - 1U < uVar18)) + local_48 +
                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);
          lVar20 = lVar20 * iVar7;
          local_4c = (uint)lVar20;
          local_20 = (int)((ulonglong)lVar20 >> 0x20);
          local_24 = local_4c;
          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);
          if ((int)uVar18 < iVar8) {
            *(longlong *)(puVar4 + 9) = lVar21 + 1;
          }
          else {
            *(longlong *)(puVar4 + 9) = lVar21;
          }
        }
        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);
        param_1 = param_3;
        param_2 = puVar4;
        if (iVar6 != 0) {
          free(local_28);
          return;
        }
      }
      DAT_00040bc8 = 1;
      FUN_0002d3a0(0,param_1,param_2,0);
      free(local_28);
      return;
    }
    iVar6 = FUN_00016a30();
    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {
      __s = (void *)xmalloc(local_24);
      iVar6 = local_20;
      uVar18 = local_24;
      memset(__s,0,local_24);
      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);
      if (iVar6 == 0) {
        DAT_00040bc8 = 1;
        FUN_0002d3a0(0,param_3,puVar4,0);
        free(__s);
      }
      else {
        free(__s);
      }
    }
  }
  return;
}


CALL 0x0001c3b3
ADD EAX,0x27f8b
PUSH EBP
MOV ECX,0x1
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV ESI,dword ptr [ESP + 0x60]
MOV EBP,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x4],EAX
MOV EDX,EBP
MOV EAX,ESI
CALL 0x00017fd0
TEST EAX,EAX
JNZ 0x000180df
MOV EAX,dword ptr [EBP + 0x54]
MOV EDX,dword ptr [EBP + 0x30]
MOV EDI,EAX
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBP + 0x2c]
MOV dword ptr [ESP + 0x3c],EDX
MOV dword ptr [ESP + 0x38],EAX
TEST byte ptr [EBP + 0x15],0x1
JZ 0x000180c2
TEST byte ptr [EDI + 0x15],0x1
JNZ 0x000180f0
MOV EAX,dword ptr [EBP]
XOR EDX,EDX
MOV ECX,0x40
CALL 0x00016a30
TEST EAX,EAX
JZ 0x000180df
TEST byte ptr [EAX + 0x21],0x1
JNZ 0x000183d8
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x34],0x0
SUB ESP,0x4
LEA EDI,[ESP + 0x38]
PUSH EDI
PUSH EBP
PUSH ESI
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00013370
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00018440
SUB ESP,0xc
LEA EAX,[ESP + 0x44]
PUSH EAX
PUSH EDI
PUSH dword ptr [ESP + 0x7c]
PUSH EBP
PUSH ESI
MOV EDI,dword ptr [ESP + 0x24]
MOV EBX,EDI
CALL 0x00013240
ADD ESP,0x20
TEST EAX,EAX
JZ 0x00018440
MOV ECX,dword ptr [ESP + 0x38]
MOV EBX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x4],EDI
MOV EDX,dword ptr [EDI + 0xae8]
MOV dword ptr [ESP + 0x8],ECX
MOV EDI,EDX
MOV dword ptr [ESP + 0xc],EBX
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0x14],EBX
TEST EDX,EDX
JZ 0x00018230
MOV EAX,EDX
MOV dword ptr [ESP + 0x1c],EDX
MOV ESI,ECX
CDQ
PUSH EDX
PUSH EDI
MOV EDI,EBX
PUSH EBX
PUSH ECX
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x0002e840
ADD ESP,0x10
MOV ECX,EDX
OR ECX,EAX
JNZ 0x000184d6
MOV ECX,ESI
MOV ESI,EDI
MOV EBX,EDI
OR ESI,ECX
JZ 0x00018230
MOV EDX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x8],0x0
MOV dword ptr [ESP + 0x64],EBP
MOV EAX,EDX
SHR EAX,0x1f
ADD EAX,EDX
SAR EAX,0x1
MOV EDI,EAX
MOV dword ptr [ESP + 0x28],EAX
LEA EAX,[EDX + EDX*0x1]
MOV dword ptr [ESP + 0x20],EAX
LEA EAX,[EDX + -0x1]
MOV EBP,EAX
LEA ESI,[ESI]
MOV ESI,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x8]
TEST ESI,ESI
JZ 0x00018200
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,EBP
SUB EBX,EDX
LEA ECX,[EAX + EDX*0x1]
ADD EAX,EBX
ADD EDX,0x1
MOVZX ESI,byte ptr [ECX]
MOVZX EBX,byte ptr [EAX]
MOV byte ptr [ECX],BL
MOV ECX,ESI
MOV byte ptr [EAX],CL
CMP EDI,EDX
JNZ 0x000181d8
MOV ECX,dword ptr [ESP + 0x38]
MOV EBX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x1c]
XOR EDX,EDX
ADD EBP,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x10],ECX
ADD dword ptr [ESP + 0x8],EAX
MOV ESI,dword ptr [ESP + 0x8]
ADD EDI,EAX
MOV EAX,EDX
MOV dword ptr [ESP + 0x14],EBX
CMP ESI,ECX
SBB EAX,EBX
JC 0x000181c8
MOV dword ptr [ESP + 0x8],ECX
MOV EBP,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0xc],EBX
MOV ECX,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [ECX + 0x274]
MOV dword ptr [ESP + 0x28],EDI
TEST EDI,EDI
JS 0x0001838e
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ECX + 0xbd4]
MOV EBX,ECX
ADD EDX,ESI
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x8],EDX
CDQ
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x24],EDX
PUSH EDX
PUSH EAX
PUSH dword ptr [EBP + 0x28]
PUSH dword ptr [EBP + 0x24]
MOV EBP,ECX
CALL 0x0002e840
ADD ESP,0x10
MOV EBX,EDI
MOV EDX,dword ptr [ESP + 0x8]
SUB EBX,EAX
MOV ECX,EAX
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x1c]
ADD EBX,ESI
MOV EBP,dword ptr [EBP + 0x270]
ADD EAX,EBX
CMP EDI,ECX
CMOVL EBX,EAX
CMP EDX,EBX
JBE 0x000182fa
MOV EDI,EDX
SUB EDI,EBX
LEA ESI,[ESI]
TEST EBP,EBP
JLE 0x000182d8
CMP dword ptr [ESP + 0x8],EBX
JBE 0x000182d8
MOV EAX,EBX
LEA EDX,[ESI + EBP*0x1]
LEA ECX,[ESI + EDI*0x1]
MOV dword ptr [ESP + 0x10],EBX
JMP 0x000182c7
ADD EAX,0x1
CMP ESI,ECX
JZ 0x000182d4
MOVZX EBX,byte ptr [EAX]
ADD ESI,0x1
MOV byte ptr [ESI + -0x1],BL
CMP ESI,EDX
JNZ 0x000182c0
MOV EBX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x1c]
ADD EBX,EAX
SUB EDI,EAX
CMP dword ptr [ESP + 0x8],EBX
JA 0x000182a8
MOV EAX,dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
MOV ESI,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESP + 0x14],EDX
MOV EDI,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x20]
MOV EBX,dword ptr [ESP + 0x24]
ADD ECX,-0x1
MOV EAX,EDI
ADC EBX,-0x1
CDQ
SUB ECX,EDI
SBB EBX,EDX
ADD ECX,dword ptr [ESP + 0x10]
ADC EBX,dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x24]
PUSH EBX
PUSH ECX
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x0002e730
MOV EBX,EBP
ADD ESP,0x10
SAR EBX,0x1f
IMUL EDX,EBP
MOV ECX,EBX
IMUL ECX,EAX
ADD ECX,EDX
MUL EBP
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x10]
ADD dword ptr [ESP + 0x14],ECX
MOV EDX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x38],EAX
MOV dword ptr [ESP + 0x3c],EDX
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x24]
MOV EBP,dword ptr [ESP + 0x20]
PUSH dword ptr [EBP + 0x28]
PUSH dword ptr [EBP + 0x24]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x0002e730
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x2c]
CMP EDI,ECX
JL 0x000184c1
MOV dword ptr [EBP + 0x24],EAX
MOV dword ptr [EBP + 0x28],EDX
SUB ESP,0x4
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x18]
PUSH 0x0
PUSH 0x0
PUSH ESI
PUSH dword ptr [ESP + 0x30]
PUSH dword ptr [ESP + 0x84]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00013290
ADD ESP,0x20
TEST EAX,EAX
JZ 0x00018470
SUB ESP,0xc
PUSH dword ptr [ESP + 0x40]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00013948
ADD ESP,0x10
JMP 0x000180df
SUB ESP,0xc
PUSH dword ptr [ESP + 0x44]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x000132e0
MOV EDI,dword ptr [ESP + 0x48]
MOV EBP,dword ptr [ESP + 0x4c]
ADD ESP,0xc
MOV ESI,EAX
PUSH EDI
PUSH 0x0
PUSH EAX
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x000135d0
ADD ESP,0xc
PUSH EBP
PUSH EDI
PUSH 0x0
PUSH 0x0
PUSH ESI
PUSH dword ptr [ESP + 0x30]
PUSH dword ptr [ESP + 0x84]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00013290
ADD ESP,0x20
TEST EAX,EAX
JZ 0x00018490
SUB ESP,0xc
PUSH ESI
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00013948
ADD ESP,0x10
JMP 0x000180df
MOV EDI,dword ptr [ESP + 0x4]
PUSH 0x0
PUSH EBP
MOV dword ptr [EDI + 0xbc8],0x1
PUSH ESI
PUSH 0x0
MOV EBX,EDI
CALL 0x0002d3a0
POP EAX
PUSH dword ptr [ESP + 0x40]
CALL 0x00013948
ADD ESP,0x10
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP + 0x4]
PUSH 0x0
PUSH dword ptr [ESP + 0x1c]
MOV dword ptr [EDI + 0xbc8],0x1
PUSH dword ptr [ESP + 0x70]
JMP 0x00018452
MOV EDI,dword ptr [ESP + 0x4]
PUSH 0x0
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x70]
MOV EBX,EDI
PUSH 0x0
MOV dword ptr [EDI + 0xbc8],0x1
CALL 0x0002d3a0
MOV dword ptr [ESP],ESI
CALL 0x00013948
ADD ESP,0x10
JMP 0x000180df
ADD EAX,0x1
MOV EDI,dword ptr [ESP + 0x18]
ADC EDX,0x0
MOV dword ptr [EDI + 0x24],EAX
MOV dword ptr [EDI + 0x28],EDX
JMP 0x0001838e
MOV ESI,dword ptr [EBP]
PUSH EDX
PUSH 0x5
MOV EDI,dword ptr [ESP + 0xc]
LEA EAX,[EDI + 0xffff217c]
MOV EBX,EDI
PUSH EAX
PUSH 0x0
CALL 0x00013200
ADD ESP,0xc
PUSH dword ptr [ESP + 0x20]
PUSH ESI
PUSH EAX
CALL 0x0002c8e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined1 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  void *__s;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  int iVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  uint uVar18;\n  int iVar19;\n  longlong lVar20;\n  longlong lVar21;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  undefined1 *local_28;\n  uint local_24;\n  int local_20;\n  \n  iVar6 = FUN_00017fd0();\n  if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined1 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  void *__s;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  int iVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  uint uVar18;\n  int iVar19;\n  longlong lVar20;\n  longlong lVar21;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  undefined1 *local_28;\n  uint local_24;\n  int local_20;\n  \n  iVar6 = FUN_00017fd0();\n  if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 *param_2,undefined4 param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined1 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  void *__s;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  int iVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  uint uVar18;\n  int iVar19;\n  longlong lVar20;\n  longlong lVar21;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  undefined1 *local_28;\n  uint local_24;\n  int local_20;\n  \n  iVar6 = FUN_00017fd0();\n  if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined1 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "longlong lVar20;" type_identifier identifier ;) (declaration "longlong lVar21;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined1 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar6 = FUN_00017fd0();" (assignment_expression "iVar6 = FUN_00017fd0()" identifier = (call_expression "FUN_00017fd0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }" { (expression_statement "puVar4 = (undefined4 *)param_2[0x15];" (assignment_expression "puVar4 = (undefined4 *)param_2[0x15]" identifier = (cast_expression "(undefined4 *)param_2[0x15]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[0x15]" identifier [ number_literal ]))) ;) (expression_statement "local_20 = param_2[0xc];" (assignment_expression "local_20 = param_2[0xc]" identifier = (subscript_expression "param_2[0xc]" identifier [ number_literal ])) ;) (expression_statement "local_24 = param_2[0xb];" (assignment_expression "local_24 = param_2[0xb]" identifier = (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ;) (if_statement "if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }" if (parenthesized_expression "(((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0))" ( (binary_expression "((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)" (parenthesized_expression "((*(byte *)((int)param_2 + 0x15) & 1) != 0)" ( (binary_expression "(*(byte *)((int)param_2 + 0x15) & 1) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 0x15) & 1)" ( (binary_expression "*(byte *)((int)param_2 + 0x15) & 1" (pointer_expression "*(byte *)((int)param_2 + 0x15)" * (cast_expression "(byte *)((int)param_2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x15)" ( (binary_expression "(int)param_2 + 0x15" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)((int)puVar4 + 0x15) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar4 + 0x15) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar4 + 0x15) & 1)" ( (binary_expression "*(byte *)((int)puVar4 + 0x15) & 1" (pointer_expression "*(byte *)((int)puVar4 + 0x15)" * (cast_expression "(byte *)((int)puVar4 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x15)" ( (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }" { (expression_statement "local_28 = (undefined1 *)0x0;" (assignment_expression "local_28 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);" (assignment_expression "iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28)" identifier = (call_expression "bfd_get_full_section_contents(param_1,param_2,&local_28)" identifier (argument_list "(param_1,param_2,&local_28)" ( identifier , identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }" if (parenthesized_expression "((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0))" ( (binary_expression "(iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)" ( (comma_expression "iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24)" identifier = (call_expression "bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24)" identifier (argument_list "(param_1,param_2,param_3,&local_28,&local_24)" ( identifier , identifier , identifier , (pointer_expression "&local_28" & identifier) , (pointer_expression "&local_24" & identifier) )))) , (comma_expression "local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "local_48 = local_20" identifier = identifier) , (comma_expression "local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "local_4c = local_24" identifier = identifier) , (comma_expression "iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "iVar6 = DAT_00040ae8" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal))))) ))) )) (compound_statement "{\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }" { (if_statement "if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }" if (parenthesized_expression "(DAT_00040ae8 != 0)" ( (binary_expression "DAT_00040ae8 != 0" identifier != number_literal) )) (compound_statement "{\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }" { (expression_statement "lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);" (assignment_expression "lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" identifier = (call_expression "FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" identifier (argument_list "(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "DAT_00040ae8 >> 0x1f" identifier >> number_literal) )))) ;) (if_statement "if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }" if (parenthesized_expression "(lVar20 != 0)" ( (binary_expression "lVar20 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }" { (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));" (assignment_expression "uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" identifier = (call_expression "dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" identifier (argument_list "(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" ( number_literal , (string_literal ""cannot reverse bytes: length of section %s must be evenly divisible by %d"" " string_content ") , number_literal , (cast_expression "(int)((ulonglong)lVar20 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar20 >> 0x20)" ( (binary_expression "(ulonglong)lVar20 >> 0x20" (cast_expression "(ulonglong)lVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) comment (expression_statement "FUN_0002c8e0(uVar10,uVar5,iVar6);" (call_expression "FUN_0002c8e0(uVar10,uVar5,iVar6)" identifier (argument_list "(uVar10,uVar5,iVar6)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }" if (parenthesized_expression "(local_48 != 0 || local_4c != 0)" ( (binary_expression "local_48 != 0 || local_4c != 0" (binary_expression "local_48 != 0" identifier != number_literal) || (binary_expression "local_4c != 0" identifier != number_literal)) )) (compound_statement "{\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }" { (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = iVar6 + -1;" (assignment_expression "iVar7 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar18 = iVar6 / 2;" (assignment_expression "uVar18 = iVar6 / 2" identifier = (binary_expression "iVar6 / 2" identifier / number_literal)) ;) (do_statement "do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));" do (compound_statement "{\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            }" { (expression_statement "uVar11 = local_54;" (assignment_expression "uVar11 = local_54" identifier = identifier) ;) (if_statement "if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }" if (parenthesized_expression "(iVar6 / 2 != 0)" ( (binary_expression "iVar6 / 2 != 0" (binary_expression "iVar6 / 2" identifier / number_literal) != number_literal) )) (compound_statement "{\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }" { (do_statement "do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);" do (compound_statement "{\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                }" { (expression_statement "uVar12 = uVar11 + 1;" (assignment_expression "uVar12 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = local_28[uVar11];" (assignment_expression "uVar3 = local_28[uVar11]" identifier = (subscript_expression "local_28[uVar11]" identifier [ identifier ])) ;) (expression_statement "local_28[uVar11] = local_28[iVar7 - uVar11];" (assignment_expression "local_28[uVar11] = local_28[iVar7 - uVar11]" (subscript_expression "local_28[uVar11]" identifier [ identifier ]) = (subscript_expression "local_28[iVar7 - uVar11]" identifier [ (binary_expression "iVar7 - uVar11" identifier - identifier) ])) ;) (expression_statement "local_28[iVar7 - uVar11] = uVar3;" (assignment_expression "local_28[iVar7 - uVar11] = uVar3" (subscript_expression "local_28[iVar7 - uVar11]" identifier [ (binary_expression "iVar7 - uVar11" identifier - identifier) ]) = identifier) ;) (expression_statement "local_4c = local_24;" (assignment_expression "local_4c = local_24" identifier = identifier) ;) (expression_statement "uVar11 = uVar12;" (assignment_expression "uVar11 = uVar12" identifier = identifier) ;) (expression_statement "local_48 = local_20;" (assignment_expression "local_48 = local_20" identifier = identifier) ;) }) while (parenthesized_expression "(uVar18 != uVar12)" ( (binary_expression "uVar18 != uVar12" identifier != identifier) )) ;) })) (expression_statement "iVar7 = iVar7 + iVar6 * 2;" (assignment_expression "iVar7 = iVar7 + iVar6 * 2" identifier = (binary_expression "iVar7 + iVar6 * 2" identifier + (binary_expression "iVar6 * 2" identifier * number_literal))) ;) (expression_statement "local_54 = local_54 + iVar6;" (assignment_expression "local_54 = local_54 + iVar6" identifier = (binary_expression "local_54 + iVar6" identifier + identifier)) ;) (expression_statement "uVar18 = uVar18 + iVar6;" (assignment_expression "uVar18 = uVar18 + iVar6" identifier = (binary_expression "uVar18 + iVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c))" ( (binary_expression "local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c)" (binary_expression "local_48 != 0" identifier != number_literal) || (binary_expression "(uint)-local_48 < (uint)(local_54 < local_4c)" (binary_expression "(uint)-local_48" (parenthesized_expression "(uint)" ( identifier )) - identifier) < (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) ))))) )) ;) })) })) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" identifier = identifier) ;) (expression_statement "iVar6 = DAT_00040bd4;" (assignment_expression "iVar6 = DAT_00040bd4" identifier = identifier) ;) (expression_statement "uVar18 = DAT_00040274;" (assignment_expression "uVar18 = DAT_00040274" identifier = identifier) ;) (expression_statement "lVar20 = CONCAT44(local_48,local_4c);" (assignment_expression "lVar20 = CONCAT44(local_48,local_4c)" identifier = (call_expression "CONCAT44(local_48,local_4c)" identifier (argument_list "(local_48,local_4c)" ( identifier , identifier )))) ;) (if_statement "if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }" if (parenthesized_expression "(-1 < (int)DAT_00040274)" ( (binary_expression "-1 < (int)DAT_00040274" number_literal < (cast_expression "(int)DAT_00040274" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }" { (expression_statement "puVar13 = local_28 + local_4c;" (assignment_expression "puVar13 = local_28 + local_4c" identifier = (binary_expression "local_28 + local_4c" identifier + identifier)) ;) (expression_statement "iVar14 = DAT_00040bd4 >> 0x1f;" (assignment_expression "iVar14 = DAT_00040bd4 >> 0x1f" identifier = (binary_expression "DAT_00040bd4 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);" (assignment_expression "iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14)" identifier = (call_expression "FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14)" identifier (argument_list "(param_2[9],param_2[10],DAT_00040bd4,iVar14)" ( (subscript_expression "param_2[9]" identifier [ number_literal ]) , (subscript_expression "param_2[10]" identifier [ number_literal ]) , identifier , identifier )))) ;) (expression_statement "iVar7 = DAT_00040270;" (assignment_expression "iVar7 = DAT_00040270" identifier = identifier) ;) (expression_statement "puVar15 = puVar17 + (uVar18 - iVar8);" (assignment_expression "puVar15 = puVar17 + (uVar18 - iVar8)" identifier = (binary_expression "puVar17 + (uVar18 - iVar8)" identifier + (parenthesized_expression "(uVar18 - iVar8)" ( (binary_expression "uVar18 - iVar8" identifier - identifier) )))) ;) (if_statement "if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }" if (parenthesized_expression "((int)uVar18 < iVar8)" ( (binary_expression "(int)uVar18 < iVar8" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }" { (expression_statement "puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;" (assignment_expression "puVar15 = puVar17 + (uVar18 - iVar8) + iVar6" identifier = (binary_expression "puVar17 + (uVar18 - iVar8) + iVar6" (binary_expression "puVar17 + (uVar18 - iVar8)" identifier + (parenthesized_expression "(uVar18 - iVar8)" ( (binary_expression "uVar18 - iVar8" identifier - identifier) ))) + identifier)) ;) })) (if_statement "if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }" if (parenthesized_expression "(puVar15 < puVar13)" ( (binary_expression "puVar15 < puVar13" identifier < identifier) )) (compound_statement "{\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }" { (expression_statement "iVar19 = (int)puVar13 - (int)puVar15;" (assignment_expression "iVar19 = (int)puVar13 - (int)puVar15" identifier = (binary_expression "(int)puVar13 - (int)puVar15" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);" do (compound_statement "{\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            }" { (if_statement "if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }" if (parenthesized_expression "((0 < iVar7) && (puVar15 < puVar13))" ( (binary_expression "(0 < iVar7) && (puVar15 < puVar13)" (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) && (parenthesized_expression "(puVar15 < puVar13)" ( (binary_expression "puVar15 < puVar13" identifier < identifier) ))) )) (compound_statement "{\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }" { (expression_statement "puVar1 = puVar17 + iVar7;" (assignment_expression "puVar1 = puVar17 + iVar7" identifier = (binary_expression "puVar17 + iVar7" identifier + identifier)) ;) (expression_statement "puVar2 = puVar17 + iVar19;" (assignment_expression "puVar2 = puVar17 + iVar19" identifier = (binary_expression "puVar17 + iVar19" identifier + identifier)) ;) (expression_statement "puVar9 = puVar15;" (assignment_expression "puVar9 = puVar15" identifier = identifier) ;) (expression_statement "puVar16 = puVar17;" (assignment_expression "puVar16 = puVar17" identifier = identifier) ;) (do_statement "do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);" do (compound_statement "{\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                }" { (expression_statement "puVar17 = puVar16 + 1;" (assignment_expression "puVar17 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*puVar16 = *puVar9;" (assignment_expression "*puVar16 = *puVar9" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (puVar17 == puVar1) break;" if (parenthesized_expression "(puVar17 == puVar1)" ( (binary_expression "puVar17 == puVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar17;" (assignment_expression "puVar16 = puVar17" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 != puVar2)" ( (binary_expression "puVar17 != puVar2" identifier != identifier) )) ;) })) (expression_statement "puVar15 = puVar15 + iVar6;" (assignment_expression "puVar15 = puVar15 + iVar6" identifier = (binary_expression "puVar15 + iVar6" identifier + identifier)) ;) (expression_statement "iVar19 = iVar19 - iVar6;" (assignment_expression "iVar19 = iVar19 - iVar6" identifier = (binary_expression "iVar19 - iVar6" identifier - identifier)) ;) }) while (parenthesized_expression "(puVar15 < puVar13)" ( (binary_expression "puVar15 < puVar13" identifier < identifier) )) ;) (expression_statement "local_4c = local_24;" (assignment_expression "local_4c = local_24" identifier = identifier) ;) (expression_statement "local_48 = local_20;" (assignment_expression "local_48 = local_20" identifier = identifier) ;) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" identifier = identifier) ;) })) (expression_statement "uVar11 = (iVar6 - 1U) - uVar18;" (assignment_expression "uVar11 = (iVar6 - 1U) - uVar18" identifier = (binary_expression "(iVar6 - 1U) - uVar18" (parenthesized_expression "(iVar6 - 1U)" ( (binary_expression "iVar6 - 1U" identifier - number_literal) )) - identifier)) ;) (expression_statement "lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);" (assignment_expression "lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" identifier = (call_expression "FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" identifier (argument_list "(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" ( (binary_expression "uVar11 + local_4c" identifier + identifier) , (binary_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c)" (binary_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48" (parenthesized_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18))" ( (binary_expression "((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)" (parenthesized_expression "((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f))" ( (binary_expression "(iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)" (parenthesized_expression "(iVar14 + -1 + (uint)(iVar6 != 0))" ( (binary_expression "iVar14 + -1 + (uint)(iVar6 != 0)" (binary_expression "iVar14 + -1" identifier + number_literal) + (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )))) )) - (parenthesized_expression "((int)uVar18 >> 0x1f)" ( (binary_expression "(int)uVar18 >> 0x1f" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) )) - (call_expression "(uint)(iVar6 - 1U < uVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 - 1U < uVar18)" ( (binary_expression "iVar6 - 1U < uVar18" (binary_expression "iVar6 - 1U" identifier - number_literal) < identifier) )))) )) + identifier) + (cast_expression "(uint)CARRY4(uVar11,local_4c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar11,local_4c)" identifier (argument_list "(uVar11,local_4c)" ( identifier , identifier ))))) , identifier , identifier )))) ;) (expression_statement "lVar20 = lVar20 * iVar7;" (assignment_expression "lVar20 = lVar20 * iVar7" identifier = (binary_expression "lVar20 * iVar7" identifier * identifier)) ;) (expression_statement "local_4c = (uint)lVar20;" (assignment_expression "local_4c = (uint)lVar20" identifier = (cast_expression "(uint)lVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_20 = (int)((ulonglong)lVar20 >> 0x20);" (assignment_expression "local_20 = (int)((ulonglong)lVar20 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar20 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar20 >> 0x20)" ( (binary_expression "(ulonglong)lVar20 >> 0x20" (cast_expression "(ulonglong)lVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_24 = local_4c;" (assignment_expression "local_24 = local_4c" identifier = identifier) ;) (expression_statement "lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);" (assignment_expression "lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14)" identifier = (call_expression "FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14)" identifier (argument_list "(puVar4[9],puVar4[10],iVar6,iVar14)" ( (subscript_expression "puVar4[9]" identifier [ number_literal ]) , (subscript_expression "puVar4[10]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" if (parenthesized_expression "((int)uVar18 < iVar8)" ( (binary_expression "(int)uVar18 < iVar8" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }" { (expression_statement "*(longlong *)(puVar4 + 9) = lVar21 + 1;" (assignment_expression "*(longlong *)(puVar4 + 9) = lVar21 + 1" (pointer_expression "*(longlong *)(puVar4 + 9)" * (cast_expression "(longlong *)(puVar4 + 9)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 9)" ( (binary_expression "puVar4 + 9" identifier + number_literal) )))) = (binary_expression "lVar21 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" else (compound_statement "{\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" { (expression_statement "*(longlong *)(puVar4 + 9) = lVar21;" (assignment_expression "*(longlong *)(puVar4 + 9) = lVar21" (pointer_expression "*(longlong *)(puVar4 + 9)" * (cast_expression "(longlong *)(puVar4 + 9)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 9)" ( (binary_expression "puVar4 + 9" identifier + number_literal) )))) = identifier) ;) }))) })) (expression_statement "iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);" (assignment_expression "iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20)" identifier = (call_expression "bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20)" identifier (argument_list "(param_3,puVar4,puVar17,0,0,lVar20)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "param_1 = param_3;" (assignment_expression "param_1 = param_3" identifier = identifier) ;) (expression_statement "param_2 = puVar4;" (assignment_expression "param_2 = puVar4" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          free(local_28);\n          return;\n        }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (return_statement "return;" return ;) })) })) (expression_statement "DAT_00040bc8 = 1;" (assignment_expression "DAT_00040bc8 = 1" identifier = number_literal) ;) (expression_statement "FUN_0002d3a0(0,param_1,param_2,0);" (call_expression "FUN_0002d3a0(0,param_1,param_2,0)" identifier (argument_list "(0,param_1,param_2,0)" ( number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar6 = FUN_00016a30();" (assignment_expression "iVar6 = FUN_00016a30()" identifier = (call_expression "FUN_00016a30()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }" if (parenthesized_expression "((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0))" ( (binary_expression "(iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(iVar6 + 0x21) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar6 + 0x21) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x21) & 1)" ( (binary_expression "*(byte *)(iVar6 + 0x21) & 1" (pointer_expression "*(byte *)(iVar6 + 0x21)" * (cast_expression "(byte *)(iVar6 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x21)" ( (binary_expression "iVar6 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }" { (expression_statement "__s = (void *)xmalloc(local_24);" (assignment_expression "__s = (void *)xmalloc(local_24)" identifier = (cast_expression "(void *)xmalloc(local_24)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(local_24)" identifier (argument_list "(local_24)" ( identifier ))))) ;) (expression_statement "iVar6 = local_20;" (assignment_expression "iVar6 = local_20" identifier = identifier) ;) (expression_statement "uVar18 = local_24;" (assignment_expression "uVar18 = local_24" identifier = identifier) ;) (expression_statement "memset(__s,0,local_24);" (call_expression "memset(__s,0,local_24)" identifier (argument_list "(__s,0,local_24)" ( identifier , number_literal , identifier ))) ;) (expression_statement "iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);" (assignment_expression "iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6)" identifier = (call_expression "bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6)" identifier (argument_list "(param_3,puVar4,__s,0,0,uVar18,iVar6)" ( identifier , identifier , identifier , number_literal , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }" { (expression_statement "DAT_00040bc8 = 1;" (assignment_expression "DAT_00040bc8 = 1" identifier = number_literal) ;) (expression_statement "FUN_0002d3a0(0,param_3,puVar4,0);" (call_expression "FUN_0002d3a0(0,param_3,puVar4,0)" identifier (argument_list "(0,param_3,puVar4,0)" ( number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }) (else_clause "else {\n        free(__s);\n      }" else (compound_statement "{\n        free(__s);\n      }" { (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid copy_section(bfd *ibfd,sec_ptr isection,void *obfdarg)\n\n{\n  bfd_byte *pbVar1;\n  bfd_byte *pbVar2;\n  bfd_byte bVar3;\n  asection *section;\n  char *pcVar4;\n  int iVar5;\n  size_t sVar6;\n  bfd_boolean bVar7;\n  section_list *psVar8;\n  int iVar9;\n  int iVar10;\n  bfd_byte *pbVar11;\n  void *__s;\n  int iVar12;\n  char *format;\n  uint uVar13;\n  uint uVar14;\n  bfd_byte *pbVar15;\n  int iVar16;\n  bfd_byte *pbVar17;\n  bfd_byte *pbVar18;\n  bfd_byte *pbVar19;\n  uint uVar20;\n  int iVar21;\n  longlong lVar22;\n  bfd_vma bVar23;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  bfd_byte *memhunk;\n  bfd_size_type size;\n  \n  bVar7 = skip_section(ibfd,isection,1);\n  if (bVar7 == 0) {\n    section = isection->output_section;\n    size._4_4_ = *(int *)((int)&isection->size + 4);\n    size._0_4_ = (uint)isection->size;\n    if (((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)) {\n      memhunk = (bfd_byte *)0x0;\n      iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);\n      if ((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }\n      status = 1;\n      bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);\n      free(memhunk);\n      return;\n    }\n    psVar8 = find_section_list(isection->name,0,0x40);\n    if ((psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0)) {\n      __s = (void *)xmalloc((uint)size);\n      iVar12 = size._4_4_;\n      sVar6 = (uint)size;\n      memset(__s,0,(uint)size);\n      iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);\n      if (iVar12 == 0) {\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void copy_section(bfd *ibfd,sec_ptr isection,void *obfdarg)\n\n{\n  bfd_byte *pbVar1;\n  bfd_byte *pbVar2;\n  bfd_byte bVar3;\n  asection *section;\n  char *pcVar4;\n  int iVar5;\n  size_t sVar6;\n  bfd_boolean bVar7;\n  section_list *psVar8;\n  int iVar9;\n  int iVar10;\n  bfd_byte *pbVar11;\n  void *__s;\n  int iVar12;\n  char *format;\n  uint uVar13;\n  uint uVar14;\n  bfd_byte *pbVar15;\n  int iVar16;\n  bfd_byte *pbVar17;\n  bfd_byte *pbVar18;\n  bfd_byte *pbVar19;\n  uint uVar20;\n  int iVar21;\n  longlong lVar22;\n  bfd_vma bVar23;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  bfd_byte *memhunk;\n  bfd_size_type size;\n  \n  bVar7 = skip_section(ibfd,isection,1);\n  if (bVar7 == 0) {\n    section = isection->output_section;\n    size._4_4_ = *(int *)((int)&isection->size + 4);\n    size._0_4_ = (uint)isection->size;\n    if (((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)) {\n      memhunk = (bfd_byte *)0x0;\n      iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);\n      if ((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }\n      status = 1;\n      bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);\n      free(memhunk);\n      return;\n    }\n    psVar8 = find_section_list(isection->name,0,0x40);\n    if ((psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0)) {\n      __s = (void *)xmalloc((uint)size);\n      iVar12 = size._4_4_;\n      sVar6 = (uint)size;\n      memset(__s,0,(uint)size);\n      iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);\n      if (iVar12 == 0) {\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "copy_section(bfd *ibfd,sec_ptr isection,void *obfdarg)" identifier (parameter_list "(bfd *ibfd,sec_ptr isection,void *obfdarg)" ( (parameter_declaration "bfd *ibfd" type_identifier (pointer_declarator "*ibfd" * identifier)) , (parameter_declaration "sec_ptr isection" type_identifier identifier) , (parameter_declaration "void *obfdarg" primitive_type (pointer_declarator "*obfdarg" * identifier)) ))) (compound_statement "{\n  bfd_byte *pbVar1;\n  bfd_byte *pbVar2;\n  bfd_byte bVar3;\n  asection *section;\n  char *pcVar4;\n  int iVar5;\n  size_t sVar6;\n  bfd_boolean bVar7;\n  section_list *psVar8;\n  int iVar9;\n  int iVar10;\n  bfd_byte *pbVar11;\n  void *__s;\n  int iVar12;\n  char *format;\n  uint uVar13;\n  uint uVar14;\n  bfd_byte *pbVar15;\n  int iVar16;\n  bfd_byte *pbVar17;\n  bfd_byte *pbVar18;\n  bfd_byte *pbVar19;\n  uint uVar20;\n  int iVar21;\n  longlong lVar22;\n  bfd_vma bVar23;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  bfd_byte *memhunk;\n  bfd_size_type size;\n  \n  bVar7 = skip_section(ibfd,isection,1);\n  if (bVar7 == 0) {\n    section = isection->output_section;\n    size._4_4_ = *(int *)((int)&isection->size + 4);\n    size._0_4_ = (uint)isection->size;\n    if (((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)) {\n      memhunk = (bfd_byte *)0x0;\n      iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);\n      if ((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }\n      status = 1;\n      bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);\n      free(memhunk);\n      return;\n    }\n    psVar8 = find_section_list(isection->name,0,0x40);\n    if ((psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0)) {\n      __s = (void *)xmalloc((uint)size);\n      iVar12 = size._4_4_;\n      sVar6 = (uint)size;\n      memset(__s,0,(uint)size);\n      iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);\n      if (iVar12 == 0) {\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}" { (declaration "bfd_byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "bfd_byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "bfd_byte bVar3;" type_identifier identifier ;) (declaration "asection *section;" type_identifier (pointer_declarator "*section" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "bfd_boolean bVar7;" type_identifier identifier ;) (declaration "section_list *psVar8;" type_identifier (pointer_declarator "*psVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "bfd_byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "bfd_byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "bfd_byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "bfd_byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "bfd_byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "longlong lVar22;" type_identifier identifier ;) (declaration "bfd_vma bVar23;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "bfd_byte *memhunk;" type_identifier (pointer_declarator "*memhunk" * identifier) ;) (declaration "bfd_size_type size;" type_identifier identifier ;) (expression_statement "bVar7 = skip_section(ibfd,isection,1);" (assignment_expression "bVar7 = skip_section(ibfd,isection,1)" identifier = (call_expression "skip_section(ibfd,isection,1)" identifier (argument_list "(ibfd,isection,1)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (bVar7 == 0) {\n    section = isection->output_section;\n    size._4_4_ = *(int *)((int)&isection->size + 4);\n    size._0_4_ = (uint)isection->size;\n    if (((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)) {\n      memhunk = (bfd_byte *)0x0;\n      iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);\n      if ((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }\n      status = 1;\n      bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);\n      free(memhunk);\n      return;\n    }\n    psVar8 = find_section_list(isection->name,0,0x40);\n    if ((psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0)) {\n      __s = (void *)xmalloc((uint)size);\n      iVar12 = size._4_4_;\n      sVar6 = (uint)size;\n      memset(__s,0,(uint)size);\n      iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);\n      if (iVar12 == 0) {\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    section = isection->output_section;\n    size._4_4_ = *(int *)((int)&isection->size + 4);\n    size._0_4_ = (uint)isection->size;\n    if (((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)) {\n      memhunk = (bfd_byte *)0x0;\n      iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);\n      if ((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }\n      status = 1;\n      bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);\n      free(memhunk);\n      return;\n    }\n    psVar8 = find_section_list(isection->name,0,0x40);\n    if ((psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0)) {\n      __s = (void *)xmalloc((uint)size);\n      iVar12 = size._4_4_;\n      sVar6 = (uint)size;\n      memset(__s,0,(uint)size);\n      iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);\n      if (iVar12 == 0) {\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }" { (expression_statement "section = isection->output_section;" (assignment_expression "section = isection->output_section" identifier = (field_expression "isection->output_section" identifier -> field_identifier)) ;) (expression_statement "size._4_4_ = *(int *)((int)&isection->size + 4);" (assignment_expression "size._4_4_ = *(int *)((int)&isection->size + 4)" (field_expression "size._4_4_" identifier . field_identifier) = (pointer_expression "*(int *)((int)&isection->size + 4)" * (cast_expression "(int *)((int)&isection->size + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&isection->size + 4)" ( (binary_expression "(int)&isection->size + 4" (cast_expression "(int)&isection->size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&isection->size" & (field_expression "isection->size" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "size._0_4_ = (uint)isection->size;" (assignment_expression "size._0_4_ = (uint)isection->size" (field_expression "size._0_4_" identifier . field_identifier) = (cast_expression "(uint)isection->size" ( (type_descriptor "uint" type_identifier) ) (field_expression "isection->size" identifier -> field_identifier))) ;) (if_statement "if (((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)) {\n      memhunk = (bfd_byte *)0x0;\n      iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);\n      if ((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }\n      status = 1;\n      bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);\n      free(memhunk);\n      return;\n    }" if (parenthesized_expression "(((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0))" ( (binary_expression "((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)" (parenthesized_expression "((isection->flags & 0x100) != 0)" ( (binary_expression "(isection->flags & 0x100) != 0" (parenthesized_expression "(isection->flags & 0x100)" ( (binary_expression "isection->flags & 0x100" (field_expression "isection->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "((section->flags & 0x100) != 0)" ( (binary_expression "(section->flags & 0x100) != 0" (parenthesized_expression "(section->flags & 0x100)" ( (binary_expression "section->flags & 0x100" (field_expression "section->flags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      memhunk = (bfd_byte *)0x0;\n      iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);\n      if ((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }\n      status = 1;\n      bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);\n      free(memhunk);\n      return;\n    }" { (expression_statement "memhunk = (bfd_byte *)0x0;" (assignment_expression "memhunk = (bfd_byte *)0x0" identifier = (cast_expression "(bfd_byte *)0x0" ( (type_descriptor "bfd_byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk);" (assignment_expression "iVar12 = bfd_get_full_section_contents(ibfd,isection,&memhunk)" identifier = (call_expression "bfd_get_full_section_contents(ibfd,isection,&memhunk)" identifier (argument_list "(ibfd,isection,&memhunk)" ( identifier , identifier , (pointer_expression "&memhunk" & identifier) )))) ;) (if_statement "if ((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)) {\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }" if (parenthesized_expression "((iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0))" ( (binary_expression "(iVar12 != 0) &&\n         (iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)" (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0)" ( (comma_expression "iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size),\n         local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0" (assignment_expression "iVar9 = bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size)" identifier = (call_expression "bfd_convert_section_contents(ibfd,isection,obfdarg,&memhunk,&size)" identifier (argument_list "(ibfd,isection,obfdarg,&memhunk,&size)" ( identifier , identifier , identifier , (pointer_expression "&memhunk" & identifier) , (pointer_expression "&size" & identifier) )))) , (comma_expression "local_48 = size._4_4_, local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0" (assignment_expression "local_48 = size._4_4_" identifier = (field_expression "size._4_4_" identifier . field_identifier)) , (comma_expression "local_4c = (uint)size, iVar12 = reverse_bytes, iVar9 != 0" (assignment_expression "local_4c = (uint)size" identifier = (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) , (comma_expression "iVar12 = reverse_bytes, iVar9 != 0" (assignment_expression "iVar12 = reverse_bytes" identifier = identifier) , (binary_expression "iVar9 != 0" identifier != number_literal))))) ))) )) (compound_statement "{\n        if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        pbVar19 = memhunk;\n        iVar9 = interleave;\n        iVar12 = copy_byte;\n        lVar22 = CONCAT44(local_48,local_4c);\n        if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }\n        iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);\n        ibfd = (bfd *)obfdarg;\n        isection = section;\n        if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }\n      }" { (if_statement "if (reverse_bytes != 0) {\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }" if (parenthesized_expression "(reverse_bytes != 0)" ( (binary_expression "reverse_bytes != 0" identifier != number_literal) )) (compound_statement "{\n          lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);\n          if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }" { (expression_statement "lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f);" (assignment_expression "lVar22 = __umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f)" identifier = (call_expression "__umoddi3((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f)" identifier (argument_list "((uint)size,size._4_4_,reverse_bytes,reverse_bytes >> 0x1f)" ( (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier) , (field_expression "size._4_4_" identifier . field_identifier) , identifier , (binary_expression "reverse_bytes >> 0x1f" identifier >> number_literal) )))) ;) (if_statement "if (lVar22 != 0) {\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }" if (parenthesized_expression "(lVar22 != 0)" ( (binary_expression "lVar22 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar4 = isection->name;\n            format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));\n                    /* WARNING: Subroutine does not return */\n            fatal(format,pcVar4,iVar12);\n          }" { (expression_statement "pcVar4 = isection->name;" (assignment_expression "pcVar4 = isection->name" identifier = (field_expression "isection->name" identifier -> field_identifier)) ;) (expression_statement "format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20));" (assignment_expression "format = (char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20))" identifier = (cast_expression "(char *)dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20))" identifier (argument_list "(0,\n                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                                       ,5,(int)((ulonglong)lVar22 >> 0x20))" ( number_literal , (string_literal ""cannot reverse bytes: length of section %s must be evenly divisible by %d"" " string_content ") , number_literal , (cast_expression "(int)((ulonglong)lVar22 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar22 >> 0x20)" ( (binary_expression "(ulonglong)lVar22 >> 0x20" (cast_expression "(ulonglong)lVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) ))))) ;) comment (expression_statement "fatal(format,pcVar4,iVar12);" (call_expression "fatal(format,pcVar4,iVar12)" identifier (argument_list "(format,pcVar4,iVar12)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }" if (parenthesized_expression "(local_48 != 0 || local_4c != 0)" ( (binary_expression "local_48 != 0 || local_4c != 0" (binary_expression "local_48 != 0" identifier != number_literal) || (binary_expression "local_4c != 0" identifier != number_literal)) )) (compound_statement "{\n            local_54 = 0;\n            iVar9 = iVar12 + -1;\n            uVar20 = iVar12 / 2;\n            do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }" { (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "iVar9 = iVar12 + -1;" (assignment_expression "iVar9 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "uVar20 = iVar12 / 2;" (assignment_expression "uVar20 = iVar12 / 2" identifier = (binary_expression "iVar12 / 2" identifier / number_literal)) ;) (do_statement "do {\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));" do (compound_statement "{\n              uVar13 = local_54;\n              if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }\n              iVar9 = iVar9 + iVar12 * 2;\n              local_54 = local_54 + iVar12;\n              uVar20 = uVar20 + iVar12;\n            }" { (expression_statement "uVar13 = local_54;" (assignment_expression "uVar13 = local_54" identifier = identifier) ;) (if_statement "if (iVar12 / 2 != 0) {\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }" if (parenthesized_expression "(iVar12 / 2 != 0)" ( (binary_expression "iVar12 / 2 != 0" (binary_expression "iVar12 / 2" identifier / number_literal) != number_literal) )) (compound_statement "{\n                do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);\n              }" { (do_statement "do {\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                } while (uVar20 != uVar14);" do (compound_statement "{\n                  uVar14 = uVar13 + 1;\n                  bVar3 = memhunk[uVar13];\n                  memhunk[uVar13] = memhunk[iVar9 - uVar13];\n                  memhunk[iVar9 - uVar13] = bVar3;\n                  local_4c = (uint)size;\n                  uVar13 = uVar14;\n                  local_48 = size._4_4_;\n                }" { (expression_statement "uVar14 = uVar13 + 1;" (assignment_expression "uVar14 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = memhunk[uVar13];" (assignment_expression "bVar3 = memhunk[uVar13]" identifier = (subscript_expression "memhunk[uVar13]" identifier [ identifier ])) ;) (expression_statement "memhunk[uVar13] = memhunk[iVar9 - uVar13];" (assignment_expression "memhunk[uVar13] = memhunk[iVar9 - uVar13]" (subscript_expression "memhunk[uVar13]" identifier [ identifier ]) = (subscript_expression "memhunk[iVar9 - uVar13]" identifier [ (binary_expression "iVar9 - uVar13" identifier - identifier) ])) ;) (expression_statement "memhunk[iVar9 - uVar13] = bVar3;" (assignment_expression "memhunk[iVar9 - uVar13] = bVar3" (subscript_expression "memhunk[iVar9 - uVar13]" identifier [ (binary_expression "iVar9 - uVar13" identifier - identifier) ]) = identifier) ;) (expression_statement "local_4c = (uint)size;" (assignment_expression "local_4c = (uint)size" identifier = (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar13 = uVar14;" (assignment_expression "uVar13 = uVar14" identifier = identifier) ;) (expression_statement "local_48 = size._4_4_;" (assignment_expression "local_48 = size._4_4_" identifier = (field_expression "size._4_4_" identifier . field_identifier)) ;) }) while (parenthesized_expression "(uVar20 != uVar14)" ( (binary_expression "uVar20 != uVar14" identifier != identifier) )) ;) })) (expression_statement "iVar9 = iVar9 + iVar12 * 2;" (assignment_expression "iVar9 = iVar9 + iVar12 * 2" identifier = (binary_expression "iVar9 + iVar12 * 2" identifier + (binary_expression "iVar12 * 2" identifier * number_literal))) ;) (expression_statement "local_54 = local_54 + iVar12;" (assignment_expression "local_54 = local_54 + iVar12" identifier = (binary_expression "local_54 + iVar12" identifier + identifier)) ;) (expression_statement "uVar20 = uVar20 + iVar12;" (assignment_expression "uVar20 = uVar20 + iVar12" identifier = (binary_expression "uVar20 + iVar12" identifier + identifier)) ;) }) while (parenthesized_expression "(local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c))" ( (binary_expression "local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c)" (binary_expression "local_48 != 0" identifier != number_literal) || (binary_expression "(uint)-local_48 < (uint)(local_54 < local_4c)" (binary_expression "(uint)-local_48" (parenthesized_expression "(uint)" ( identifier )) - identifier) < (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) ))))) )) ;) })) })) (expression_statement "pbVar19 = memhunk;" (assignment_expression "pbVar19 = memhunk" identifier = identifier) ;) (expression_statement "iVar9 = interleave;" (assignment_expression "iVar9 = interleave" identifier = identifier) ;) (expression_statement "iVar12 = copy_byte;" (assignment_expression "iVar12 = copy_byte" identifier = identifier) ;) (expression_statement "lVar22 = CONCAT44(local_48,local_4c);" (assignment_expression "lVar22 = CONCAT44(local_48,local_4c)" identifier = (call_expression "CONCAT44(local_48,local_4c)" identifier (argument_list "(local_48,local_4c)" ( identifier , identifier )))) ;) (if_statement "if (-1 < copy_byte) {\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }" if (parenthesized_expression "(-1 < copy_byte)" ( (binary_expression "-1 < copy_byte" number_literal < identifier) )) (compound_statement "{\n          pbVar15 = memhunk + local_4c;\n          iVar16 = interleave >> 0x1f;\n          iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);\n          iVar5 = copy_width;\n          pbVar17 = pbVar19 + (iVar12 - iVar10);\n          if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }\n          if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }\n          uVar20 = (iVar9 - 1U) - iVar12;\n          lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);\n          lVar22 = lVar22 * iVar5;\n          local_4c = (uint)lVar22;\n          size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);\n          size._0_4_ = local_4c;\n          bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;\n          if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }\n        }" { (expression_statement "pbVar15 = memhunk + local_4c;" (assignment_expression "pbVar15 = memhunk + local_4c" identifier = (binary_expression "memhunk + local_4c" identifier + identifier)) ;) (expression_statement "iVar16 = interleave >> 0x1f;" (assignment_expression "iVar16 = interleave >> 0x1f" identifier = (binary_expression "interleave >> 0x1f" identifier >> number_literal)) ;) (expression_statement "iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16);" (assignment_expression "iVar10 = __umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16)" identifier = (call_expression "__umoddi3((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16)" identifier (argument_list "((int)isection->lma,*(undefined4 *)((int)&isection->lma + 4),interleave,\n                             iVar16)" ( (cast_expression "(int)isection->lma" ( (type_descriptor "int" primitive_type) ) (field_expression "isection->lma" identifier -> field_identifier)) , (pointer_expression "*(undefined4 *)((int)&isection->lma + 4)" * (cast_expression "(undefined4 *)((int)&isection->lma + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&isection->lma + 4)" ( (binary_expression "(int)&isection->lma + 4" (cast_expression "(int)&isection->lma" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&isection->lma" & (field_expression "isection->lma" identifier -> field_identifier))) + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "iVar5 = copy_width;" (assignment_expression "iVar5 = copy_width" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar19 + (iVar12 - iVar10);" (assignment_expression "pbVar17 = pbVar19 + (iVar12 - iVar10)" identifier = (binary_expression "pbVar19 + (iVar12 - iVar10)" identifier + (parenthesized_expression "(iVar12 - iVar10)" ( (binary_expression "iVar12 - iVar10" identifier - identifier) )))) ;) (if_statement "if (iVar12 < iVar10) {\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }" if (parenthesized_expression "(iVar12 < iVar10)" ( (binary_expression "iVar12 < iVar10" identifier < identifier) )) (compound_statement "{\n            pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;\n          }" { (expression_statement "pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9;" (assignment_expression "pbVar17 = pbVar19 + (iVar12 - iVar10) + iVar9" identifier = (binary_expression "pbVar19 + (iVar12 - iVar10) + iVar9" (binary_expression "pbVar19 + (iVar12 - iVar10)" identifier + (parenthesized_expression "(iVar12 - iVar10)" ( (binary_expression "iVar12 - iVar10" identifier - identifier) ))) + identifier)) ;) })) (if_statement "if (pbVar17 < pbVar15) {\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }" if (parenthesized_expression "(pbVar17 < pbVar15)" ( (binary_expression "pbVar17 < pbVar15" identifier < identifier) )) (compound_statement "{\n            iVar21 = (int)pbVar15 - (int)pbVar17;\n            do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);\n            local_4c = (uint)size;\n            local_48 = size._4_4_;\n            pbVar19 = memhunk;\n          }" { (expression_statement "iVar21 = (int)pbVar15 - (int)pbVar17;" (assignment_expression "iVar21 = (int)pbVar15 - (int)pbVar17" identifier = (binary_expression "(int)pbVar15 - (int)pbVar17" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            } while (pbVar17 < pbVar15);" do (compound_statement "{\n              if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }\n              pbVar17 = pbVar17 + iVar9;\n              iVar21 = iVar21 - iVar9;\n            }" { (if_statement "if ((0 < iVar5) && (pbVar17 < pbVar15)) {\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }" if (parenthesized_expression "((0 < iVar5) && (pbVar17 < pbVar15))" ( (binary_expression "(0 < iVar5) && (pbVar17 < pbVar15)" (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) && (parenthesized_expression "(pbVar17 < pbVar15)" ( (binary_expression "pbVar17 < pbVar15" identifier < identifier) ))) )) (compound_statement "{\n                pbVar1 = pbVar19 + iVar5;\n                pbVar2 = pbVar19 + iVar21;\n                pbVar11 = pbVar17;\n                pbVar18 = pbVar19;\n                do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);\n              }" { (expression_statement "pbVar1 = pbVar19 + iVar5;" (assignment_expression "pbVar1 = pbVar19 + iVar5" identifier = (binary_expression "pbVar19 + iVar5" identifier + identifier)) ;) (expression_statement "pbVar2 = pbVar19 + iVar21;" (assignment_expression "pbVar2 = pbVar19 + iVar21" identifier = (binary_expression "pbVar19 + iVar21" identifier + identifier)) ;) (expression_statement "pbVar11 = pbVar17;" (assignment_expression "pbVar11 = pbVar17" identifier = identifier) ;) (expression_statement "pbVar18 = pbVar19;" (assignment_expression "pbVar18 = pbVar19" identifier = identifier) ;) (do_statement "do {\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                } while (pbVar19 != pbVar2);" do (compound_statement "{\n                  pbVar19 = pbVar18 + 1;\n                  *pbVar18 = *pbVar11;\n                  if (pbVar19 == pbVar1) break;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar18 = pbVar19;\n                }" { (expression_statement "pbVar19 = pbVar18 + 1;" (assignment_expression "pbVar19 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar18 = *pbVar11;" (assignment_expression "*pbVar18 = *pbVar11" (pointer_expression "*pbVar18" * identifier) = (pointer_expression "*pbVar11" * identifier)) ;) (if_statement "if (pbVar19 == pbVar1) break;" if (parenthesized_expression "(pbVar19 == pbVar1)" ( (binary_expression "pbVar19 == pbVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar18 = pbVar19;" (assignment_expression "pbVar18 = pbVar19" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar19 != pbVar2)" ( (binary_expression "pbVar19 != pbVar2" identifier != identifier) )) ;) })) (expression_statement "pbVar17 = pbVar17 + iVar9;" (assignment_expression "pbVar17 = pbVar17 + iVar9" identifier = (binary_expression "pbVar17 + iVar9" identifier + identifier)) ;) (expression_statement "iVar21 = iVar21 - iVar9;" (assignment_expression "iVar21 = iVar21 - iVar9" identifier = (binary_expression "iVar21 - iVar9" identifier - identifier)) ;) }) while (parenthesized_expression "(pbVar17 < pbVar15)" ( (binary_expression "pbVar17 < pbVar15" identifier < identifier) )) ;) (expression_statement "local_4c = (uint)size;" (assignment_expression "local_4c = (uint)size" identifier = (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_48 = size._4_4_;" (assignment_expression "local_48 = size._4_4_" identifier = (field_expression "size._4_4_" identifier . field_identifier)) ;) (expression_statement "pbVar19 = memhunk;" (assignment_expression "pbVar19 = memhunk" identifier = identifier) ;) })) (expression_statement "uVar20 = (iVar9 - 1U) - iVar12;" (assignment_expression "uVar20 = (iVar9 - 1U) - iVar12" identifier = (binary_expression "(iVar9 - 1U) - iVar12" (parenthesized_expression "(iVar9 - 1U)" ( (binary_expression "iVar9 - 1U" identifier - number_literal) )) - identifier)) ;) (expression_statement "lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16);" (assignment_expression "lVar22 = __udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16)" identifier = (call_expression "__udivdi3(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16)" identifier (argument_list "(uVar20 + local_4c,\n                             (((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c),iVar9,iVar16)" ( (binary_expression "uVar20 + local_4c" identifier + identifier) , (binary_expression "(((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48 +\n                             (uint)CARRY4(uVar20,local_4c)" (binary_expression "(((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)) + local_48" (parenthesized_expression "(((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12))" ( (binary_expression "((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)) -\n                             (uint)(iVar9 - 1U < (uint)iVar12)" (parenthesized_expression "((iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f))" ( (binary_expression "(iVar16 + -1 + (uint)(iVar9 != 0)) - (iVar12 >> 0x1f)" (parenthesized_expression "(iVar16 + -1 + (uint)(iVar9 != 0))" ( (binary_expression "iVar16 + -1 + (uint)(iVar9 != 0)" (binary_expression "iVar16 + -1" identifier + number_literal) + (call_expression "(uint)(iVar9 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )))) )) - (parenthesized_expression "(iVar12 >> 0x1f)" ( (binary_expression "iVar12 >> 0x1f" identifier >> number_literal) ))) )) - (call_expression "(uint)(iVar9 - 1U < (uint)iVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar9 - 1U < (uint)iVar12)" ( (binary_expression "iVar9 - 1U < (uint)iVar12" (binary_expression "iVar9 - 1U" identifier - number_literal) < (cast_expression "(uint)iVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) )) + identifier) + (cast_expression "(uint)CARRY4(uVar20,local_4c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar20,local_4c)" identifier (argument_list "(uVar20,local_4c)" ( identifier , identifier ))))) , identifier , identifier )))) ;) (expression_statement "lVar22 = lVar22 * iVar5;" (assignment_expression "lVar22 = lVar22 * iVar5" identifier = (binary_expression "lVar22 * iVar5" identifier * identifier)) ;) (expression_statement "local_4c = (uint)lVar22;" (assignment_expression "local_4c = (uint)lVar22" identifier = (cast_expression "(uint)lVar22" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "size._4_4_ = (int)((ulonglong)lVar22 >> 0x20);" (assignment_expression "size._4_4_ = (int)((ulonglong)lVar22 >> 0x20)" (field_expression "size._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar22 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar22 >> 0x20)" ( (binary_expression "(ulonglong)lVar22 >> 0x20" (cast_expression "(ulonglong)lVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "size._0_4_ = local_4c;" (assignment_expression "size._0_4_ = local_4c" (field_expression "size._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)\n          ;" (assignment_expression "bVar23 = __udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)" identifier = (call_expression "__udivdi3((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)" identifier (argument_list "((int)section->lma,*(undefined4 *)((int)&section->lma + 4),iVar9,iVar16)" ( (cast_expression "(int)section->lma" ( (type_descriptor "int" primitive_type) ) (field_expression "section->lma" identifier -> field_identifier)) , (pointer_expression "*(undefined4 *)((int)&section->lma + 4)" * (cast_expression "(undefined4 *)((int)&section->lma + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&section->lma + 4)" ( (binary_expression "(int)&section->lma + 4" (cast_expression "(int)&section->lma" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&section->lma" & (field_expression "section->lma" identifier -> field_identifier))) + number_literal) )))) , identifier , identifier )))) ;) (if_statement "if (iVar12 < iVar10) {\n            section->lma = bVar23 + 1;\n          }\n          else {\n            section->lma = bVar23;\n          }" if (parenthesized_expression "(iVar12 < iVar10)" ( (binary_expression "iVar12 < iVar10" identifier < identifier) )) (compound_statement "{\n            section->lma = bVar23 + 1;\n          }" { (expression_statement "section->lma = bVar23 + 1;" (assignment_expression "section->lma = bVar23 + 1" (field_expression "section->lma" identifier -> field_identifier) = (binary_expression "bVar23 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            section->lma = bVar23;\n          }" else (compound_statement "{\n            section->lma = bVar23;\n          }" { (expression_statement "section->lma = bVar23;" (assignment_expression "section->lma = bVar23" (field_expression "section->lma" identifier -> field_identifier) = identifier) ;) }))) })) (expression_statement "iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22);" (assignment_expression "iVar12 = bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22)" identifier = (call_expression "bfd_set_section_contents(obfdarg,section,pbVar19,0,0,lVar22)" identifier (argument_list "(obfdarg,section,pbVar19,0,0,lVar22)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "ibfd = (bfd *)obfdarg;" (assignment_expression "ibfd = (bfd *)obfdarg" identifier = (cast_expression "(bfd *)obfdarg" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "isection = section;" (assignment_expression "isection = section" identifier = identifier) ;) (if_statement "if (iVar12 != 0) {\n          free(memhunk);\n          return;\n        }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n          free(memhunk);\n          return;\n        }" { (expression_statement "free(memhunk);" (call_expression "free(memhunk)" identifier (argument_list "(memhunk)" ( identifier ))) ;) (return_statement "return;" return ;) })) })) (expression_statement "status = 1;" (assignment_expression "status = 1" identifier = number_literal) ;) (expression_statement "bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0);" (call_expression "bfd_nonfatal_message((char *)0x0,ibfd,isection,(char *)0x0)" identifier (argument_list "((char *)0x0,ibfd,isection,(char *)0x0)" ( (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "free(memhunk);" (call_expression "free(memhunk)" identifier (argument_list "(memhunk)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "psVar8 = find_section_list(isection->name,0,0x40);" (assignment_expression "psVar8 = find_section_list(isection->name,0,0x40)" identifier = (call_expression "find_section_list(isection->name,0,0x40)" identifier (argument_list "(isection->name,0,0x40)" ( (field_expression "isection->name" identifier -> field_identifier) , number_literal , number_literal )))) ;) (if_statement "if ((psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0)) {\n      __s = (void *)xmalloc((uint)size);\n      iVar12 = size._4_4_;\n      sVar6 = (uint)size;\n      memset(__s,0,(uint)size);\n      iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);\n      if (iVar12 == 0) {\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }" if (parenthesized_expression "((psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0))" ( (binary_expression "(psVar8 != (section_list *)0x0) && ((psVar8->flags & 0x100) != 0)" (parenthesized_expression "(psVar8 != (section_list *)0x0)" ( (binary_expression "psVar8 != (section_list *)0x0" identifier != (cast_expression "(section_list *)0x0" ( (type_descriptor "section_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((psVar8->flags & 0x100) != 0)" ( (binary_expression "(psVar8->flags & 0x100) != 0" (parenthesized_expression "(psVar8->flags & 0x100)" ( (binary_expression "psVar8->flags & 0x100" (field_expression "psVar8->flags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      __s = (void *)xmalloc((uint)size);\n      iVar12 = size._4_4_;\n      sVar6 = (uint)size;\n      memset(__s,0,(uint)size);\n      iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);\n      if (iVar12 == 0) {\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }" { (expression_statement "__s = (void *)xmalloc((uint)size);" (assignment_expression "__s = (void *)xmalloc((uint)size)" identifier = (cast_expression "(void *)xmalloc((uint)size)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((uint)size)" identifier (argument_list "((uint)size)" ( (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier) ))))) ;) (expression_statement "iVar12 = size._4_4_;" (assignment_expression "iVar12 = size._4_4_" identifier = (field_expression "size._4_4_" identifier . field_identifier)) ;) (expression_statement "sVar6 = (uint)size;" (assignment_expression "sVar6 = (uint)size" identifier = (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "memset(__s,0,(uint)size);" (call_expression "memset(__s,0,(uint)size)" identifier (argument_list "(__s,0,(uint)size)" ( identifier , number_literal , (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12);" (assignment_expression "iVar12 = bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12)" identifier = (call_expression "bfd_set_section_contents(obfdarg,section,__s,0,0,sVar6,iVar12)" identifier (argument_list "(obfdarg,section,__s,0,0,sVar6,iVar12)" ( identifier , identifier , identifier , number_literal , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar12 == 0) {\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        status = 1;\n        bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);\n        free(__s);\n      }" { (expression_statement "status = 1;" (assignment_expression "status = 1" identifier = number_literal) ;) (expression_statement "bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0);" (call_expression "bfd_nonfatal_message((char *)0x0,(bfd *)obfdarg,section,(char *)0x0)" identifier (argument_list "((char *)0x0,(bfd *)obfdarg,section,(char *)0x0)" ( (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(bfd *)obfdarg" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }) (else_clause "else {\n        free(__s);\n      }" else (compound_statement "{\n        free(__s);\n      }" { (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined1 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  void *__s;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  int iVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  uint uVar18;\n  int iVar19;\n  longlong lVar20;\n  longlong lVar21;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  undefined1 *local_28;\n  uint local_24;\n  int local_20;\n  \n  iVar6 = FUN_00017fd0();\n  if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined1 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  void *__s;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  int iVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  uint uVar18;\n  int iVar19;\n  longlong lVar20;\n  longlong lVar21;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  undefined1 *local_28;\n  uint local_24;\n  int local_20;\n  \n  iVar6 = FUN_00017fd0();\n  if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 *param_2,undefined4 param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined1 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  void *__s;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  int iVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  uint uVar18;\n  int iVar19;\n  longlong lVar20;\n  longlong lVar21;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  undefined1 *local_28;\n  uint local_24;\n  int local_20;\n  \n  iVar6 = FUN_00017fd0();\n  if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined1 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "longlong lVar20;" type_identifier identifier ;) (declaration "longlong lVar21;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined1 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar6 = FUN_00017fd0();" (assignment_expression "iVar6 = FUN_00017fd0()" identifier = (call_expression "FUN_00017fd0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }" { (expression_statement "puVar4 = (undefined4 *)param_2[0x15];" (assignment_expression "puVar4 = (undefined4 *)param_2[0x15]" identifier = (cast_expression "(undefined4 *)param_2[0x15]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[0x15]" identifier [ number_literal ]))) ;) (expression_statement "local_20 = param_2[0xc];" (assignment_expression "local_20 = param_2[0xc]" identifier = (subscript_expression "param_2[0xc]" identifier [ number_literal ])) ;) (expression_statement "local_24 = param_2[0xb];" (assignment_expression "local_24 = param_2[0xb]" identifier = (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ;) (if_statement "if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }" if (parenthesized_expression "(((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0))" ( (binary_expression "((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)" (parenthesized_expression "((*(byte *)((int)param_2 + 0x15) & 1) != 0)" ( (binary_expression "(*(byte *)((int)param_2 + 0x15) & 1) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 0x15) & 1)" ( (binary_expression "*(byte *)((int)param_2 + 0x15) & 1" (pointer_expression "*(byte *)((int)param_2 + 0x15)" * (cast_expression "(byte *)((int)param_2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x15)" ( (binary_expression "(int)param_2 + 0x15" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)((int)puVar4 + 0x15) & 1) != 0)" ( (binary_expression "(*(byte *)((int)puVar4 + 0x15) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar4 + 0x15) & 1)" ( (binary_expression "*(byte *)((int)puVar4 + 0x15) & 1" (pointer_expression "*(byte *)((int)puVar4 + 0x15)" * (cast_expression "(byte *)((int)puVar4 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x15)" ( (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }" { (expression_statement "local_28 = (undefined1 *)0x0;" (assignment_expression "local_28 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);" (assignment_expression "iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28)" identifier = (call_expression "bfd_get_full_section_contents(param_1,param_2,&local_28)" identifier (argument_list "(param_1,param_2,&local_28)" ( identifier , identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }" if (parenthesized_expression "((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0))" ( (binary_expression "(iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)" ( (comma_expression "iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24)" identifier = (call_expression "bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24)" identifier (argument_list "(param_1,param_2,param_3,&local_28,&local_24)" ( identifier , identifier , identifier , (pointer_expression "&local_28" & identifier) , (pointer_expression "&local_24" & identifier) )))) , (comma_expression "local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "local_48 = local_20" identifier = identifier) , (comma_expression "local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "local_4c = local_24" identifier = identifier) , (comma_expression "iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "iVar6 = DAT_00040ae8" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal))))) ))) )) (compound_statement "{\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }" { (if_statement "if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }" if (parenthesized_expression "(DAT_00040ae8 != 0)" ( (binary_expression "DAT_00040ae8 != 0" identifier != number_literal) )) (compound_statement "{\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }" { (expression_statement "lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);" (assignment_expression "lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" identifier = (call_expression "FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" identifier (argument_list "(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "DAT_00040ae8 >> 0x1f" identifier >> number_literal) )))) ;) (if_statement "if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }" if (parenthesized_expression "(lVar20 != 0)" ( (binary_expression "lVar20 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }" { (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));" (assignment_expression "uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" identifier = (call_expression "dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" identifier (argument_list "(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" ( number_literal , (string_literal ""cannot reverse bytes: length of section %s must be evenly divisible by %d"" " string_content ") , number_literal , (cast_expression "(int)((ulonglong)lVar20 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar20 >> 0x20)" ( (binary_expression "(ulonglong)lVar20 >> 0x20" (cast_expression "(ulonglong)lVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "FUN_0002c8e0(uVar10,uVar5,iVar6);" (call_expression "FUN_0002c8e0(uVar10,uVar5,iVar6)" identifier (argument_list "(uVar10,uVar5,iVar6)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }" if (parenthesized_expression "(local_48 != 0 || local_4c != 0)" ( (binary_expression "local_48 != 0 || local_4c != 0" (binary_expression "local_48 != 0" identifier != number_literal) || (binary_expression "local_4c != 0" identifier != number_literal)) )) (compound_statement "{\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }" { (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = iVar6 + -1;" (assignment_expression "iVar7 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar18 = iVar6 / 2;" (assignment_expression "uVar18 = iVar6 / 2" identifier = (binary_expression "iVar6 / 2" identifier / number_literal)) ;) (do_statement "do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));" do (compound_statement "{\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            }" { (expression_statement "uVar11 = local_54;" (assignment_expression "uVar11 = local_54" identifier = identifier) ;) (if_statement "if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }" if (parenthesized_expression "(iVar6 / 2 != 0)" ( (binary_expression "iVar6 / 2 != 0" (binary_expression "iVar6 / 2" identifier / number_literal) != number_literal) )) (compound_statement "{\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }" { (do_statement "do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);" do (compound_statement "{\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                }" { (expression_statement "uVar12 = uVar11 + 1;" (assignment_expression "uVar12 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = local_28[uVar11];" (assignment_expression "uVar3 = local_28[uVar11]" identifier = (subscript_expression "local_28[uVar11]" identifier [ identifier ])) ;) (expression_statement "local_28[uVar11] = local_28[iVar7 - uVar11];" (assignment_expression "local_28[uVar11] = local_28[iVar7 - uVar11]" (subscript_expression "local_28[uVar11]" identifier [ identifier ]) = (subscript_expression "local_28[iVar7 - uVar11]" identifier [ (binary_expression "iVar7 - uVar11" identifier - identifier) ])) ;) (expression_statement "local_28[iVar7 - uVar11] = uVar3;" (assignment_expression "local_28[iVar7 - uVar11] = uVar3" (subscript_expression "local_28[iVar7 - uVar11]" identifier [ (binary_expression "iVar7 - uVar11" identifier - identifier) ]) = identifier) ;) (expression_statement "local_4c = local_24;" (assignment_expression "local_4c = local_24" identifier = identifier) ;) (expression_statement "uVar11 = uVar12;" (assignment_expression "uVar11 = uVar12" identifier = identifier) ;) (expression_statement "local_48 = local_20;" (assignment_expression "local_48 = local_20" identifier = identifier) ;) }) while (parenthesized_expression "(uVar18 != uVar12)" ( (binary_expression "uVar18 != uVar12" identifier != identifier) )) ;) })) (expression_statement "iVar7 = iVar7 + iVar6 * 2;" (assignment_expression "iVar7 = iVar7 + iVar6 * 2" identifier = (binary_expression "iVar7 + iVar6 * 2" identifier + (binary_expression "iVar6 * 2" identifier * number_literal))) ;) (expression_statement "local_54 = local_54 + iVar6;" (assignment_expression "local_54 = local_54 + iVar6" identifier = (binary_expression "local_54 + iVar6" identifier + identifier)) ;) (expression_statement "uVar18 = uVar18 + iVar6;" (assignment_expression "uVar18 = uVar18 + iVar6" identifier = (binary_expression "uVar18 + iVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c))" ( (binary_expression "local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c)" (binary_expression "local_48 != 0" identifier != number_literal) || (binary_expression "(uint)-local_48 < (uint)(local_54 < local_4c)" (binary_expression "(uint)-local_48" (parenthesized_expression "(uint)" ( identifier )) - identifier) < (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) ))))) )) ;) })) })) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" identifier = identifier) ;) (expression_statement "iVar6 = DAT_00040bd4;" (assignment_expression "iVar6 = DAT_00040bd4" identifier = identifier) ;) (expression_statement "uVar18 = DAT_00040274;" (assignment_expression "uVar18 = DAT_00040274" identifier = identifier) ;) (expression_statement "lVar20 = CONCAT44(local_48,local_4c);" (assignment_expression "lVar20 = CONCAT44(local_48,local_4c)" identifier = (call_expression "CONCAT44(local_48,local_4c)" identifier (argument_list "(local_48,local_4c)" ( identifier , identifier )))) ;) (if_statement "if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }" if (parenthesized_expression "(-1 < (int)DAT_00040274)" ( (binary_expression "-1 < (int)DAT_00040274" number_literal < (cast_expression "(int)DAT_00040274" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }" { (expression_statement "puVar13 = local_28 + local_4c;" (assignment_expression "puVar13 = local_28 + local_4c" identifier = (binary_expression "local_28 + local_4c" identifier + identifier)) ;) (expression_statement "iVar14 = DAT_00040bd4 >> 0x1f;" (assignment_expression "iVar14 = DAT_00040bd4 >> 0x1f" identifier = (binary_expression "DAT_00040bd4 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);" (assignment_expression "iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14)" identifier = (call_expression "FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14)" identifier (argument_list "(param_2[9],param_2[10],DAT_00040bd4,iVar14)" ( (subscript_expression "param_2[9]" identifier [ number_literal ]) , (subscript_expression "param_2[10]" identifier [ number_literal ]) , identifier , identifier )))) ;) (expression_statement "iVar7 = DAT_00040270;" (assignment_expression "iVar7 = DAT_00040270" identifier = identifier) ;) (expression_statement "puVar15 = puVar17 + (uVar18 - iVar8);" (assignment_expression "puVar15 = puVar17 + (uVar18 - iVar8)" identifier = (binary_expression "puVar17 + (uVar18 - iVar8)" identifier + (parenthesized_expression "(uVar18 - iVar8)" ( (binary_expression "uVar18 - iVar8" identifier - identifier) )))) ;) (if_statement "if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }" if (parenthesized_expression "((int)uVar18 < iVar8)" ( (binary_expression "(int)uVar18 < iVar8" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }" { (expression_statement "puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;" (assignment_expression "puVar15 = puVar17 + (uVar18 - iVar8) + iVar6" identifier = (binary_expression "puVar17 + (uVar18 - iVar8) + iVar6" (binary_expression "puVar17 + (uVar18 - iVar8)" identifier + (parenthesized_expression "(uVar18 - iVar8)" ( (binary_expression "uVar18 - iVar8" identifier - identifier) ))) + identifier)) ;) })) (if_statement "if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }" if (parenthesized_expression "(puVar15 < puVar13)" ( (binary_expression "puVar15 < puVar13" identifier < identifier) )) (compound_statement "{\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }" { (expression_statement "iVar19 = (int)puVar13 - (int)puVar15;" (assignment_expression "iVar19 = (int)puVar13 - (int)puVar15" identifier = (binary_expression "(int)puVar13 - (int)puVar15" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);" do (compound_statement "{\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            }" { (if_statement "if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }" if (parenthesized_expression "((0 < iVar7) && (puVar15 < puVar13))" ( (binary_expression "(0 < iVar7) && (puVar15 < puVar13)" (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) && (parenthesized_expression "(puVar15 < puVar13)" ( (binary_expression "puVar15 < puVar13" identifier < identifier) ))) )) (compound_statement "{\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }" { (expression_statement "puVar1 = puVar17 + iVar7;" (assignment_expression "puVar1 = puVar17 + iVar7" identifier = (binary_expression "puVar17 + iVar7" identifier + identifier)) ;) (expression_statement "puVar2 = puVar17 + iVar19;" (assignment_expression "puVar2 = puVar17 + iVar19" identifier = (binary_expression "puVar17 + iVar19" identifier + identifier)) ;) (expression_statement "puVar9 = puVar15;" (assignment_expression "puVar9 = puVar15" identifier = identifier) ;) (expression_statement "puVar16 = puVar17;" (assignment_expression "puVar16 = puVar17" identifier = identifier) ;) (do_statement "do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);" do (compound_statement "{\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                }" { (expression_statement "puVar17 = puVar16 + 1;" (assignment_expression "puVar17 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*puVar16 = *puVar9;" (assignment_expression "*puVar16 = *puVar9" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (puVar17 == puVar1) break;" if (parenthesized_expression "(puVar17 == puVar1)" ( (binary_expression "puVar17 == puVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar17;" (assignment_expression "puVar16 = puVar17" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 != puVar2)" ( (binary_expression "puVar17 != puVar2" identifier != identifier) )) ;) })) (expression_statement "puVar15 = puVar15 + iVar6;" (assignment_expression "puVar15 = puVar15 + iVar6" identifier = (binary_expression "puVar15 + iVar6" identifier + identifier)) ;) (expression_statement "iVar19 = iVar19 - iVar6;" (assignment_expression "iVar19 = iVar19 - iVar6" identifier = (binary_expression "iVar19 - iVar6" identifier - identifier)) ;) }) while (parenthesized_expression "(puVar15 < puVar13)" ( (binary_expression "puVar15 < puVar13" identifier < identifier) )) ;) (expression_statement "local_4c = local_24;" (assignment_expression "local_4c = local_24" identifier = identifier) ;) (expression_statement "local_48 = local_20;" (assignment_expression "local_48 = local_20" identifier = identifier) ;) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" identifier = identifier) ;) })) (expression_statement "uVar11 = (iVar6 - 1U) - uVar18;" (assignment_expression "uVar11 = (iVar6 - 1U) - uVar18" identifier = (binary_expression "(iVar6 - 1U) - uVar18" (parenthesized_expression "(iVar6 - 1U)" ( (binary_expression "iVar6 - 1U" identifier - number_literal) )) - identifier)) ;) (expression_statement "lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);" (assignment_expression "lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" identifier = (call_expression "FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" identifier (argument_list "(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" ( (binary_expression "uVar11 + local_4c" identifier + identifier) , (binary_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c)" (binary_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48" (parenthesized_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18))" ( (binary_expression "((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)" (parenthesized_expression "((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f))" ( (binary_expression "(iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)" (parenthesized_expression "(iVar14 + -1 + (uint)(iVar6 != 0))" ( (binary_expression "iVar14 + -1 + (uint)(iVar6 != 0)" (binary_expression "iVar14 + -1" identifier + number_literal) + (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )))) )) - (parenthesized_expression "((int)uVar18 >> 0x1f)" ( (binary_expression "(int)uVar18 >> 0x1f" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) )) - (call_expression "(uint)(iVar6 - 1U < uVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 - 1U < uVar18)" ( (binary_expression "iVar6 - 1U < uVar18" (binary_expression "iVar6 - 1U" identifier - number_literal) < identifier) )))) )) + identifier) + (cast_expression "(uint)CARRY4(uVar11,local_4c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar11,local_4c)" identifier (argument_list "(uVar11,local_4c)" ( identifier , identifier ))))) , identifier , identifier )))) ;) (expression_statement "lVar20 = lVar20 * iVar7;" (assignment_expression "lVar20 = lVar20 * iVar7" identifier = (binary_expression "lVar20 * iVar7" identifier * identifier)) ;) (expression_statement "local_4c = (uint)lVar20;" (assignment_expression "local_4c = (uint)lVar20" identifier = (cast_expression "(uint)lVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_20 = (int)((ulonglong)lVar20 >> 0x20);" (assignment_expression "local_20 = (int)((ulonglong)lVar20 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar20 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar20 >> 0x20)" ( (binary_expression "(ulonglong)lVar20 >> 0x20" (cast_expression "(ulonglong)lVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_24 = local_4c;" (assignment_expression "local_24 = local_4c" identifier = identifier) ;) (expression_statement "lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);" (assignment_expression "lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14)" identifier = (call_expression "FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14)" identifier (argument_list "(puVar4[9],puVar4[10],iVar6,iVar14)" ( (subscript_expression "puVar4[9]" identifier [ number_literal ]) , (subscript_expression "puVar4[10]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" if (parenthesized_expression "((int)uVar18 < iVar8)" ( (binary_expression "(int)uVar18 < iVar8" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }" { (expression_statement "*(longlong *)(puVar4 + 9) = lVar21 + 1;" (assignment_expression "*(longlong *)(puVar4 + 9) = lVar21 + 1" (pointer_expression "*(longlong *)(puVar4 + 9)" * (cast_expression "(longlong *)(puVar4 + 9)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 9)" ( (binary_expression "puVar4 + 9" identifier + number_literal) )))) = (binary_expression "lVar21 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" else (compound_statement "{\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" { (expression_statement "*(longlong *)(puVar4 + 9) = lVar21;" (assignment_expression "*(longlong *)(puVar4 + 9) = lVar21" (pointer_expression "*(longlong *)(puVar4 + 9)" * (cast_expression "(longlong *)(puVar4 + 9)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 9)" ( (binary_expression "puVar4 + 9" identifier + number_literal) )))) = identifier) ;) }))) })) (expression_statement "iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);" (assignment_expression "iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20)" identifier = (call_expression "bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20)" identifier (argument_list "(param_3,puVar4,puVar17,0,0,lVar20)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "param_1 = param_3;" (assignment_expression "param_1 = param_3" identifier = identifier) ;) (expression_statement "param_2 = puVar4;" (assignment_expression "param_2 = puVar4" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          free(local_28);\n          return;\n        }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (return_statement "return;" return ;) })) })) (expression_statement "DAT_00040bc8 = 1;" (assignment_expression "DAT_00040bc8 = 1" identifier = number_literal) ;) (expression_statement "FUN_0002d3a0(0,param_1,param_2,0);" (call_expression "FUN_0002d3a0(0,param_1,param_2,0)" identifier (argument_list "(0,param_1,param_2,0)" ( number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar6 = FUN_00016a30();" (assignment_expression "iVar6 = FUN_00016a30()" identifier = (call_expression "FUN_00016a30()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }" if (parenthesized_expression "((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0))" ( (binary_expression "(iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(iVar6 + 0x21) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar6 + 0x21) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x21) & 1)" ( (binary_expression "*(byte *)(iVar6 + 0x21) & 1" (pointer_expression "*(byte *)(iVar6 + 0x21)" * (cast_expression "(byte *)(iVar6 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x21)" ( (binary_expression "iVar6 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }" { (expression_statement "__s = (void *)xmalloc(local_24);" (assignment_expression "__s = (void *)xmalloc(local_24)" identifier = (cast_expression "(void *)xmalloc(local_24)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(local_24)" identifier (argument_list "(local_24)" ( identifier ))))) ;) (expression_statement "iVar6 = local_20;" (assignment_expression "iVar6 = local_20" identifier = identifier) ;) (expression_statement "uVar18 = local_24;" (assignment_expression "uVar18 = local_24" identifier = identifier) ;) (expression_statement "memset(__s,0,local_24);" (call_expression "memset(__s,0,local_24)" identifier (argument_list "(__s,0,local_24)" ( identifier , number_literal , identifier ))) ;) (expression_statement "iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);" (assignment_expression "iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6)" identifier = (call_expression "bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6)" identifier (argument_list "(param_3,puVar4,__s,0,0,uVar18,iVar6)" ( identifier , identifier , identifier , number_literal , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }" { (expression_statement "DAT_00040bc8 = 1;" (assignment_expression "DAT_00040bc8 = 1" identifier = number_literal) ;) (expression_statement "FUN_0002d3a0(0,param_3,puVar4,0);" (call_expression "FUN_0002d3a0(0,param_3,puVar4,0)" identifier (argument_list "(0,param_3,puVar4,0)" ( number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }) (else_clause "else {\n        free(__s);\n      }" else (compound_statement "{\n        free(__s);\n      }" { (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT))))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT / LIT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression (binary_expression (parenthesized_expression ( IDENT )) - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) + IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT - LIT) < IDENT) )))) )) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) })) })) (return_statement return ;) })))
(function_definition "void FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined1 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  void *__s;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  int iVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  uint uVar18;\n  int iVar19;\n  longlong lVar20;\n  longlong lVar21;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  undefined1 *local_28;\n  uint local_24;\n  int local_20;\n  \n  iVar6 = FUN_00017fd0();\n  if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00018070(undefined4 param_1,undefined4 *param_2,undefined4 param_3)" (identifier "FUN_00018070") (parameter_list "(undefined4 param_1,undefined4 *param_2,undefined4 param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  undefined1 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined1 *puVar9;\n  void *__s;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  int iVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  uint uVar18;\n  int iVar19;\n  longlong lVar20;\n  longlong lVar21;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  undefined1 *local_28;\n  uint local_24;\n  int local_20;\n  \n  iVar6 = FUN_00017fd0();\n  if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }\n  return;\n}" ({ "{") (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined1 uVar3;" (type_identifier "undefined1") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "void *__s;" (primitive_type "void") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined1 *puVar15;" (type_identifier "undefined1") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined1 *puVar16;" (type_identifier "undefined1") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "undefined1 *puVar17;" (type_identifier "undefined1") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "longlong lVar20;" (type_identifier "longlong") (identifier "lVar20") (; ";")) (declaration "longlong lVar21;" (type_identifier "longlong") (identifier "lVar21") (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "undefined1 *local_28;" (type_identifier "undefined1") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "iVar6 = FUN_00017fd0();" (assignment_expression "iVar6 = FUN_00017fd0()" (identifier "iVar6") (= "=") (call_expression "FUN_00017fd0()" (identifier "FUN_00017fd0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puVar4 = (undefined4 *)param_2[0x15];\n    local_20 = param_2[0xc];\n    local_24 = param_2[0xb];\n    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }\n    iVar6 = FUN_00016a30();\n    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }\n  }" ({ "{") (expression_statement "puVar4 = (undefined4 *)param_2[0x15];" (assignment_expression "puVar4 = (undefined4 *)param_2[0x15]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)param_2[0x15]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")))) (; ";")) (expression_statement "local_20 = param_2[0xc];" (assignment_expression "local_20 = param_2[0xc]" (identifier "local_20") (= "=") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "local_24 = param_2[0xb];" (assignment_expression "local_24 = param_2[0xb]" (identifier "local_24") (= "=") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }" (if "if") (parenthesized_expression "(((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0))" (( "(") (binary_expression "((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)" (parenthesized_expression "((*(byte *)((int)param_2 + 0x15) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_2 + 0x15) & 1) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 0x15) & 1)" (( "(") (binary_expression "*(byte *)((int)param_2 + 0x15) & 1" (pointer_expression "*(byte *)((int)param_2 + 0x15)" (* "*") (cast_expression "(byte *)((int)param_2 + 0x15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x15)" (( "(") (binary_expression "(int)param_2 + 0x15" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x15")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)puVar4 + 0x15) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar4 + 0x15) & 1) != 0" (parenthesized_expression "(*(byte *)((int)puVar4 + 0x15) & 1)" (( "(") (binary_expression "*(byte *)((int)puVar4 + 0x15) & 1" (pointer_expression "*(byte *)((int)puVar4 + 0x15)" (* "*") (cast_expression "(byte *)((int)puVar4 + 0x15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 0x15)" (( "(") (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x15")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      local_28 = (undefined1 *)0x0;\n      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);\n      if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }\n      DAT_00040bc8 = 1;\n      FUN_0002d3a0(0,param_1,param_2,0);\n      free(local_28);\n      return;\n    }" ({ "{") (expression_statement "local_28 = (undefined1 *)0x0;" (assignment_expression "local_28 = (undefined1 *)0x0" (identifier "local_28") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);" (assignment_expression "iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28)" (identifier "iVar6") (= "=") (call_expression "bfd_get_full_section_contents(param_1,param_2,&local_28)" (identifier "bfd_get_full_section_contents") (argument_list "(param_1,param_2,&local_28)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if ((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }" (if "if") (parenthesized_expression "((iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0))" (( "(") (binary_expression "(iVar6 != 0) &&\n         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)" (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)" (( "(") (comma_expression "iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),\n         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24)" (identifier "iVar7") (= "=") (call_expression "bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24)" (identifier "bfd_convert_section_contents") (argument_list "(param_1,param_2,param_3,&local_28,&local_24)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")")))) (, ",") (comma_expression "local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "local_48 = local_20" (identifier "local_48") (= "=") (identifier "local_20")) (, ",") (comma_expression "local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "local_4c = local_24" (identifier "local_4c") (= "=") (identifier "local_24")) (, ",") (comma_expression "iVar6 = DAT_00040ae8, iVar7 != 0" (assignment_expression "iVar6 = DAT_00040ae8" (identifier "iVar6") (= "=") (identifier "DAT_00040ae8")) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")))))) () ")"))) () ")")) (compound_statement "{\n        if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }\n        puVar17 = local_28;\n        iVar6 = DAT_00040bd4;\n        uVar18 = DAT_00040274;\n        lVar20 = CONCAT44(local_48,local_4c);\n        if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }\n        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);\n        param_1 = param_3;\n        param_2 = puVar4;\n        if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }\n      }" ({ "{") (if_statement "if (DAT_00040ae8 != 0) {\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }" (if "if") (parenthesized_expression "(DAT_00040ae8 != 0)" (( "(") (binary_expression "DAT_00040ae8 != 0" (identifier "DAT_00040ae8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);\n          if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }\n          if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }\n        }" ({ "{") (expression_statement "lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);" (assignment_expression "lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" (identifier "lVar20") (= "=") (call_expression "FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" (identifier "FUN_0002e840") (argument_list "(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f)" (( "(") (identifier "local_24") (, ",") (identifier "local_20") (, ",") (identifier "DAT_00040ae8") (, ",") (binary_expression "DAT_00040ae8 >> 0x1f" (identifier "DAT_00040ae8") (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (lVar20 != 0) {\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }" (if "if") (parenthesized_expression "(lVar20 != 0)" (( "(") (binary_expression "lVar20 != 0" (identifier "lVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar5 = *param_2;\n            uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));\n                    \n            FUN_0002c8e0(uVar10,uVar5,iVar6);\n          }" ({ "{") (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" (identifier "uVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20));" (assignment_expression "uVar10 = dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" (identifier "uVar10") (= "=") (call_expression "dcgettext(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" (identifier "dcgettext") (argument_list "(0,\n                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"\n                               ,5,(int)((ulonglong)lVar20 >> 0x20))" (( "(") (number_literal "0") (, ",") (string_literal ""cannot reverse bytes: length of section %s must be evenly divisible by %d"" (" """) (string_content "cannot reverse bytes: length of section %s must be evenly divisible by %d") (" """)) (, ",") (number_literal "5") (, ",") (cast_expression "(int)((ulonglong)lVar20 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar20 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar20 >> 0x20" (cast_expression "(ulonglong)lVar20" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar20")) (>> ">>") (number_literal "0x20")) () ")"))) () ")")))) (; ";")) (expression_statement "FUN_0002c8e0(uVar10,uVar5,iVar6);" (call_expression "FUN_0002c8e0(uVar10,uVar5,iVar6)" (identifier "FUN_0002c8e0") (argument_list "(uVar10,uVar5,iVar6)" (( "(") (identifier "uVar10") (, ",") (identifier "uVar5") (, ",") (identifier "iVar6") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_48 != 0 || local_4c != 0) {\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }" (if "if") (parenthesized_expression "(local_48 != 0 || local_4c != 0)" (( "(") (binary_expression "local_48 != 0 || local_4c != 0" (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n            local_54 = 0;\n            iVar7 = iVar6 + -1;\n            uVar18 = iVar6 / 2;\n            do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));\n          }" ({ "{") (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = iVar6 + -1;" (assignment_expression "iVar7 = iVar6 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar18 = iVar6 / 2;" (assignment_expression "uVar18 = iVar6 / 2" (identifier "uVar18") (= "=") (binary_expression "iVar6 / 2" (identifier "iVar6") (/ "/") (number_literal "2"))) (; ";")) (do_statement "do {\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));" (do "do") (compound_statement "{\n              uVar11 = local_54;\n              if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }\n              iVar7 = iVar7 + iVar6 * 2;\n              local_54 = local_54 + iVar6;\n              uVar18 = uVar18 + iVar6;\n            }" ({ "{") (expression_statement "uVar11 = local_54;" (assignment_expression "uVar11 = local_54" (identifier "uVar11") (= "=") (identifier "local_54")) (; ";")) (if_statement "if (iVar6 / 2 != 0) {\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }" (if "if") (parenthesized_expression "(iVar6 / 2 != 0)" (( "(") (binary_expression "iVar6 / 2 != 0" (binary_expression "iVar6 / 2" (identifier "iVar6") (/ "/") (number_literal "2")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);\n              }" ({ "{") (do_statement "do {\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                } while (uVar18 != uVar12);" (do "do") (compound_statement "{\n                  uVar12 = uVar11 + 1;\n                  uVar3 = local_28[uVar11];\n                  local_28[uVar11] = local_28[iVar7 - uVar11];\n                  local_28[iVar7 - uVar11] = uVar3;\n                  local_4c = local_24;\n                  uVar11 = uVar12;\n                  local_48 = local_20;\n                }" ({ "{") (expression_statement "uVar12 = uVar11 + 1;" (assignment_expression "uVar12 = uVar11 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = local_28[uVar11];" (assignment_expression "uVar3 = local_28[uVar11]" (identifier "uVar3") (= "=") (subscript_expression "local_28[uVar11]" (identifier "local_28") ([ "[") (identifier "uVar11") (] "]"))) (; ";")) (expression_statement "local_28[uVar11] = local_28[iVar7 - uVar11];" (assignment_expression "local_28[uVar11] = local_28[iVar7 - uVar11]" (subscript_expression "local_28[uVar11]" (identifier "local_28") ([ "[") (identifier "uVar11") (] "]")) (= "=") (subscript_expression "local_28[iVar7 - uVar11]" (identifier "local_28") ([ "[") (binary_expression "iVar7 - uVar11" (identifier "iVar7") (- "-") (identifier "uVar11")) (] "]"))) (; ";")) (expression_statement "local_28[iVar7 - uVar11] = uVar3;" (assignment_expression "local_28[iVar7 - uVar11] = uVar3" (subscript_expression "local_28[iVar7 - uVar11]" (identifier "local_28") ([ "[") (binary_expression "iVar7 - uVar11" (identifier "iVar7") (- "-") (identifier "uVar11")) (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "local_4c = local_24;" (assignment_expression "local_4c = local_24" (identifier "local_4c") (= "=") (identifier "local_24")) (; ";")) (expression_statement "uVar11 = uVar12;" (assignment_expression "uVar11 = uVar12" (identifier "uVar11") (= "=") (identifier "uVar12")) (; ";")) (expression_statement "local_48 = local_20;" (assignment_expression "local_48 = local_20" (identifier "local_48") (= "=") (identifier "local_20")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar18 != uVar12)" (( "(") (binary_expression "uVar18 != uVar12" (identifier "uVar18") (!= "!=") (identifier "uVar12")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar7 = iVar7 + iVar6 * 2;" (assignment_expression "iVar7 = iVar7 + iVar6 * 2" (identifier "iVar7") (= "=") (binary_expression "iVar7 + iVar6 * 2" (identifier "iVar7") (+ "+") (binary_expression "iVar6 * 2" (identifier "iVar6") (* "*") (number_literal "2")))) (; ";")) (expression_statement "local_54 = local_54 + iVar6;" (assignment_expression "local_54 = local_54 + iVar6" (identifier "local_54") (= "=") (binary_expression "local_54 + iVar6" (identifier "local_54") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "uVar18 = uVar18 + iVar6;" (assignment_expression "uVar18 = uVar18 + iVar6" (identifier "uVar18") (= "=") (binary_expression "uVar18 + iVar6" (identifier "uVar18") (+ "+") (identifier "iVar6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c))" (( "(") (binary_expression "local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c)" (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(uint)-local_48 < (uint)(local_54 < local_4c)" (binary_expression "(uint)-local_48" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "local_48")) (< "<") (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_54 < local_4c)" (( "(") (binary_expression "local_54 < local_4c" (identifier "local_54") (< "<") (identifier "local_4c")) () ")"))))) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" (identifier "puVar17") (= "=") (identifier "local_28")) (; ";")) (expression_statement "iVar6 = DAT_00040bd4;" (assignment_expression "iVar6 = DAT_00040bd4" (identifier "iVar6") (= "=") (identifier "DAT_00040bd4")) (; ";")) (expression_statement "uVar18 = DAT_00040274;" (assignment_expression "uVar18 = DAT_00040274" (identifier "uVar18") (= "=") (identifier "DAT_00040274")) (; ";")) (expression_statement "lVar20 = CONCAT44(local_48,local_4c);" (assignment_expression "lVar20 = CONCAT44(local_48,local_4c)" (identifier "lVar20") (= "=") (call_expression "CONCAT44(local_48,local_4c)" (identifier "CONCAT44") (argument_list "(local_48,local_4c)" (( "(") (identifier "local_48") (, ",") (identifier "local_4c") () ")")))) (; ";")) (if_statement "if (-1 < (int)DAT_00040274) {\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }" (if "if") (parenthesized_expression "(-1 < (int)DAT_00040274)" (( "(") (binary_expression "-1 < (int)DAT_00040274" (number_literal "-1") (< "<") (cast_expression "(int)DAT_00040274" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00040274"))) () ")")) (compound_statement "{\n          puVar13 = local_28 + local_4c;\n          iVar14 = DAT_00040bd4 >> 0x1f;\n          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);\n          iVar7 = DAT_00040270;\n          puVar15 = puVar17 + (uVar18 - iVar8);\n          if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }\n          if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }\n          uVar11 = (iVar6 - 1U) - uVar18;\n          lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);\n          lVar20 = lVar20 * iVar7;\n          local_4c = (uint)lVar20;\n          local_20 = (int)((ulonglong)lVar20 >> 0x20);\n          local_24 = local_4c;\n          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);\n          if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }\n        }" ({ "{") (expression_statement "puVar13 = local_28 + local_4c;" (assignment_expression "puVar13 = local_28 + local_4c" (identifier "puVar13") (= "=") (binary_expression "local_28 + local_4c" (identifier "local_28") (+ "+") (identifier "local_4c"))) (; ";")) (expression_statement "iVar14 = DAT_00040bd4 >> 0x1f;" (assignment_expression "iVar14 = DAT_00040bd4 >> 0x1f" (identifier "iVar14") (= "=") (binary_expression "DAT_00040bd4 >> 0x1f" (identifier "DAT_00040bd4") (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);" (assignment_expression "iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14)" (identifier "iVar8") (= "=") (call_expression "FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14)" (identifier "FUN_0002e840") (argument_list "(param_2[9],param_2[10],DAT_00040bd4,iVar14)" (( "(") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (, ",") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (, ",") (identifier "DAT_00040bd4") (, ",") (identifier "iVar14") () ")")))) (; ";")) (expression_statement "iVar7 = DAT_00040270;" (assignment_expression "iVar7 = DAT_00040270" (identifier "iVar7") (= "=") (identifier "DAT_00040270")) (; ";")) (expression_statement "puVar15 = puVar17 + (uVar18 - iVar8);" (assignment_expression "puVar15 = puVar17 + (uVar18 - iVar8)" (identifier "puVar15") (= "=") (binary_expression "puVar17 + (uVar18 - iVar8)" (identifier "puVar17") (+ "+") (parenthesized_expression "(uVar18 - iVar8)" (( "(") (binary_expression "uVar18 - iVar8" (identifier "uVar18") (- "-") (identifier "iVar8")) () ")")))) (; ";")) (if_statement "if ((int)uVar18 < iVar8) {\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }" (if "if") (parenthesized_expression "((int)uVar18 < iVar8)" (( "(") (binary_expression "(int)uVar18 < iVar8" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;\n          }" ({ "{") (expression_statement "puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;" (assignment_expression "puVar15 = puVar17 + (uVar18 - iVar8) + iVar6" (identifier "puVar15") (= "=") (binary_expression "puVar17 + (uVar18 - iVar8) + iVar6" (binary_expression "puVar17 + (uVar18 - iVar8)" (identifier "puVar17") (+ "+") (parenthesized_expression "(uVar18 - iVar8)" (( "(") (binary_expression "uVar18 - iVar8" (identifier "uVar18") (- "-") (identifier "iVar8")) () ")"))) (+ "+") (identifier "iVar6"))) (; ";")) (} "}"))) (if_statement "if (puVar15 < puVar13) {\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }" (if "if") (parenthesized_expression "(puVar15 < puVar13)" (( "(") (binary_expression "puVar15 < puVar13" (identifier "puVar15") (< "<") (identifier "puVar13")) () ")")) (compound_statement "{\n            iVar19 = (int)puVar13 - (int)puVar15;\n            do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);\n            local_4c = local_24;\n            local_48 = local_20;\n            puVar17 = local_28;\n          }" ({ "{") (expression_statement "iVar19 = (int)puVar13 - (int)puVar15;" (assignment_expression "iVar19 = (int)puVar13 - (int)puVar15" (identifier "iVar19") (= "=") (binary_expression "(int)puVar13 - (int)puVar15" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (- "-") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")))) (; ";")) (do_statement "do {\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            } while (puVar15 < puVar13);" (do "do") (compound_statement "{\n              if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }\n              puVar15 = puVar15 + iVar6;\n              iVar19 = iVar19 - iVar6;\n            }" ({ "{") (if_statement "if ((0 < iVar7) && (puVar15 < puVar13)) {\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }" (if "if") (parenthesized_expression "((0 < iVar7) && (puVar15 < puVar13))" (( "(") (binary_expression "(0 < iVar7) && (puVar15 < puVar13)" (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (&& "&&") (parenthesized_expression "(puVar15 < puVar13)" (( "(") (binary_expression "puVar15 < puVar13" (identifier "puVar15") (< "<") (identifier "puVar13")) () ")"))) () ")")) (compound_statement "{\n                puVar1 = puVar17 + iVar7;\n                puVar2 = puVar17 + iVar19;\n                puVar9 = puVar15;\n                puVar16 = puVar17;\n                do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);\n              }" ({ "{") (expression_statement "puVar1 = puVar17 + iVar7;" (assignment_expression "puVar1 = puVar17 + iVar7" (identifier "puVar1") (= "=") (binary_expression "puVar17 + iVar7" (identifier "puVar17") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "puVar2 = puVar17 + iVar19;" (assignment_expression "puVar2 = puVar17 + iVar19" (identifier "puVar2") (= "=") (binary_expression "puVar17 + iVar19" (identifier "puVar17") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "puVar9 = puVar15;" (assignment_expression "puVar9 = puVar15" (identifier "puVar9") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "puVar16 = puVar17;" (assignment_expression "puVar16 = puVar17" (identifier "puVar16") (= "=") (identifier "puVar17")) (; ";")) (do_statement "do {\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                } while (puVar17 != puVar2);" (do "do") (compound_statement "{\n                  puVar17 = puVar16 + 1;\n                  *puVar16 = *puVar9;\n                  if (puVar17 == puVar1) break;\n                  puVar9 = puVar9 + 1;\n                  puVar16 = puVar17;\n                }" ({ "{") (expression_statement "puVar17 = puVar16 + 1;" (assignment_expression "puVar17 = puVar16 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar16 = *puVar9;" (assignment_expression "*puVar16 = *puVar9" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (if_statement "if (puVar17 == puVar1) break;" (if "if") (parenthesized_expression "(puVar17 == puVar1)" (( "(") (binary_expression "puVar17 == puVar1" (identifier "puVar17") (== "==") (identifier "puVar1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar17;" (assignment_expression "puVar16 = puVar17" (identifier "puVar16") (= "=") (identifier "puVar17")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar17 != puVar2)" (( "(") (binary_expression "puVar17 != puVar2" (identifier "puVar17") (!= "!=") (identifier "puVar2")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar15 = puVar15 + iVar6;" (assignment_expression "puVar15 = puVar15 + iVar6" (identifier "puVar15") (= "=") (binary_expression "puVar15 + iVar6" (identifier "puVar15") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "iVar19 = iVar19 - iVar6;" (assignment_expression "iVar19 = iVar19 - iVar6" (identifier "iVar19") (= "=") (binary_expression "iVar19 - iVar6" (identifier "iVar19") (- "-") (identifier "iVar6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar15 < puVar13)" (( "(") (binary_expression "puVar15 < puVar13" (identifier "puVar15") (< "<") (identifier "puVar13")) () ")")) (; ";")) (expression_statement "local_4c = local_24;" (assignment_expression "local_4c = local_24" (identifier "local_4c") (= "=") (identifier "local_24")) (; ";")) (expression_statement "local_48 = local_20;" (assignment_expression "local_48 = local_20" (identifier "local_48") (= "=") (identifier "local_20")) (; ";")) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" (identifier "puVar17") (= "=") (identifier "local_28")) (; ";")) (} "}"))) (expression_statement "uVar11 = (iVar6 - 1U) - uVar18;" (assignment_expression "uVar11 = (iVar6 - 1U) - uVar18" (identifier "uVar11") (= "=") (binary_expression "(iVar6 - 1U) - uVar18" (parenthesized_expression "(iVar6 - 1U)" (( "(") (binary_expression "iVar6 - 1U" (identifier "iVar6") (- "-") (number_literal "1U")) () ")")) (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);" (assignment_expression "lVar20 = FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" (identifier "lVar20") (= "=") (call_expression "FUN_0002e730(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" (identifier "FUN_0002e730") (argument_list "(uVar11 + local_4c,\n                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14)" (( "(") (binary_expression "uVar11 + local_4c" (identifier "uVar11") (+ "+") (identifier "local_4c")) (, ",") (binary_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48 +\n                                (uint)CARRY4(uVar11,local_4c)" (binary_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)) + local_48" (parenthesized_expression "(((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18))" (( "(") (binary_expression "((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -\n                                (uint)(iVar6 - 1U < uVar18)" (parenthesized_expression "((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f))" (( "(") (binary_expression "(iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)" (parenthesized_expression "(iVar14 + -1 + (uint)(iVar6 != 0))" (( "(") (binary_expression "iVar14 + -1 + (uint)(iVar6 != 0)" (binary_expression "iVar14 + -1" (identifier "iVar14") (+ "+") (number_literal "-1")) (+ "+") (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")))) () ")")) (- "-") (parenthesized_expression "((int)uVar18 >> 0x1f)" (( "(") (binary_expression "(int)uVar18 >> 0x1f" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (>> ">>") (number_literal "0x1f")) () ")"))) () ")")) (- "-") (call_expression "(uint)(iVar6 - 1U < uVar18)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar6 - 1U < uVar18)" (( "(") (binary_expression "iVar6 - 1U < uVar18" (binary_expression "iVar6 - 1U" (identifier "iVar6") (- "-") (number_literal "1U")) (< "<") (identifier "uVar18")) () ")")))) () ")")) (+ "+") (identifier "local_48")) (+ "+") (cast_expression "(uint)CARRY4(uVar11,local_4c)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar11,local_4c)" (identifier "CARRY4") (argument_list "(uVar11,local_4c)" (( "(") (identifier "uVar11") (, ",") (identifier "local_4c") () ")"))))) (, ",") (identifier "iVar6") (, ",") (identifier "iVar14") () ")")))) (; ";")) (expression_statement "lVar20 = lVar20 * iVar7;" (assignment_expression "lVar20 = lVar20 * iVar7" (identifier "lVar20") (= "=") (binary_expression "lVar20 * iVar7" (identifier "lVar20") (* "*") (identifier "iVar7"))) (; ";")) (expression_statement "local_4c = (uint)lVar20;" (assignment_expression "local_4c = (uint)lVar20" (identifier "local_4c") (= "=") (cast_expression "(uint)lVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar20"))) (; ";")) (expression_statement "local_20 = (int)((ulonglong)lVar20 >> 0x20);" (assignment_expression "local_20 = (int)((ulonglong)lVar20 >> 0x20)" (identifier "local_20") (= "=") (cast_expression "(int)((ulonglong)lVar20 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar20 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar20 >> 0x20" (cast_expression "(ulonglong)lVar20" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar20")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_24 = local_4c;" (assignment_expression "local_24 = local_4c" (identifier "local_24") (= "=") (identifier "local_4c")) (; ";")) (expression_statement "lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);" (assignment_expression "lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14)" (identifier "lVar21") (= "=") (call_expression "FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14)" (identifier "FUN_0002e730") (argument_list "(puVar4[9],puVar4[10],iVar6,iVar14)" (( "(") (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]")) (, ",") (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]")) (, ",") (identifier "iVar6") (, ",") (identifier "iVar14") () ")")))) (; ";")) (if_statement "if ((int)uVar18 < iVar8) {\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }\n          else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" (if "if") (parenthesized_expression "((int)uVar18 < iVar8)" (( "(") (binary_expression "(int)uVar18 < iVar8" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n            *(longlong *)(puVar4 + 9) = lVar21 + 1;\n          }" ({ "{") (expression_statement "*(longlong *)(puVar4 + 9) = lVar21 + 1;" (assignment_expression "*(longlong *)(puVar4 + 9) = lVar21 + 1" (pointer_expression "*(longlong *)(puVar4 + 9)" (* "*") (cast_expression "(longlong *)(puVar4 + 9)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 9)" (( "(") (binary_expression "puVar4 + 9" (identifier "puVar4") (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "lVar21 + 1" (identifier "lVar21") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" (else "else") (compound_statement "{\n            *(longlong *)(puVar4 + 9) = lVar21;\n          }" ({ "{") (expression_statement "*(longlong *)(puVar4 + 9) = lVar21;" (assignment_expression "*(longlong *)(puVar4 + 9) = lVar21" (pointer_expression "*(longlong *)(puVar4 + 9)" (* "*") (cast_expression "(longlong *)(puVar4 + 9)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 9)" (( "(") (binary_expression "puVar4 + 9" (identifier "puVar4") (+ "+") (number_literal "9")) () ")")))) (= "=") (identifier "lVar21")) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);" (assignment_expression "iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20)" (identifier "iVar6") (= "=") (call_expression "bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20)" (identifier "bfd_set_section_contents") (argument_list "(param_3,puVar4,puVar17,0,0,lVar20)" (( "(") (identifier "param_3") (, ",") (identifier "puVar4") (, ",") (identifier "puVar17") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "lVar20") () ")")))) (; ";")) (expression_statement "param_1 = param_3;" (assignment_expression "param_1 = param_3" (identifier "param_1") (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_2 = puVar4;" (assignment_expression "param_2 = puVar4" (identifier "param_2") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (iVar6 != 0) {\n          free(local_28);\n          return;\n        }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          free(local_28);\n          return;\n        }" ({ "{") (expression_statement "free(local_28);" (call_expression "free(local_28)" (identifier "free") (argument_list "(local_28)" (( "(") (identifier "local_28") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "DAT_00040bc8 = 1;" (assignment_expression "DAT_00040bc8 = 1" (identifier "DAT_00040bc8") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_0002d3a0(0,param_1,param_2,0);" (call_expression "FUN_0002d3a0(0,param_1,param_2,0)" (identifier "FUN_0002d3a0") (argument_list "(0,param_1,param_2,0)" (( "(") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "free(local_28);" (call_expression "free(local_28)" (identifier "free") (argument_list "(local_28)" (( "(") (identifier "local_28") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar6 = FUN_00016a30();" (assignment_expression "iVar6 = FUN_00016a30()" (identifier "iVar6") (= "=") (call_expression "FUN_00016a30()" (identifier "FUN_00016a30") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }" (if "if") (parenthesized_expression "((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0))" (( "(") (binary_expression "(iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)" (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(iVar6 + 0x21) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar6 + 0x21) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x21) & 1)" (( "(") (binary_expression "*(byte *)(iVar6 + 0x21) & 1" (pointer_expression "*(byte *)(iVar6 + 0x21)" (* "*") (cast_expression "(byte *)(iVar6 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x21)" (( "(") (binary_expression "iVar6 + 0x21" (identifier "iVar6") (+ "+") (number_literal "0x21")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      __s = (void *)xmalloc(local_24);\n      iVar6 = local_20;\n      uVar18 = local_24;\n      memset(__s,0,local_24);\n      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);\n      if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }\n    }" ({ "{") (expression_statement "__s = (void *)xmalloc(local_24);" (assignment_expression "__s = (void *)xmalloc(local_24)" (identifier "__s") (= "=") (cast_expression "(void *)xmalloc(local_24)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(local_24)" (identifier "xmalloc") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")"))))) (; ";")) (expression_statement "iVar6 = local_20;" (assignment_expression "iVar6 = local_20" (identifier "iVar6") (= "=") (identifier "local_20")) (; ";")) (expression_statement "uVar18 = local_24;" (assignment_expression "uVar18 = local_24" (identifier "uVar18") (= "=") (identifier "local_24")) (; ";")) (expression_statement "memset(__s,0,local_24);" (call_expression "memset(__s,0,local_24)" (identifier "memset") (argument_list "(__s,0,local_24)" (( "(") (identifier "__s") (, ",") (number_literal "0") (, ",") (identifier "local_24") () ")"))) (; ";")) (expression_statement "iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);" (assignment_expression "iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6)" (identifier "iVar6") (= "=") (call_expression "bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6)" (identifier "bfd_set_section_contents") (argument_list "(param_3,puVar4,__s,0,0,uVar18,iVar6)" (( "(") (identifier "param_3") (, ",") (identifier "puVar4") (, ",") (identifier "__s") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar18") (, ",") (identifier "iVar6") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }\n      else {\n        free(__s);\n      }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        DAT_00040bc8 = 1;\n        FUN_0002d3a0(0,param_3,puVar4,0);\n        free(__s);\n      }" ({ "{") (expression_statement "DAT_00040bc8 = 1;" (assignment_expression "DAT_00040bc8 = 1" (identifier "DAT_00040bc8") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_0002d3a0(0,param_3,puVar4,0);" (call_expression "FUN_0002d3a0(0,param_3,puVar4,0)" (identifier "FUN_0002d3a0") (argument_list "(0,param_3,puVar4,0)" (( "(") (number_literal "0") (, ",") (identifier "param_3") (, ",") (identifier "puVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "free(__s);" (call_expression "free(__s)" (identifier "free") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        free(__s);\n      }" (else "else") (compound_statement "{\n        free(__s);\n      }" ({ "{") (expression_statement "free(__s);" (call_expression "free(__s)" (identifier "free") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void function_1(type_1 *ibfd,type_2 isection,void *obfdarg)

{
  type_3 *var_29;
  type_3 *var_31;
  type_3 bVar3;
  type_4 *section;
  char *pcVar4;
  int var_26;
  size_t sVar6;
  type_5 var_2;
  type_6 *var_40;
  int var_6;
  int var_23;
  type_3 *var_30;
  void *__s;
  int var_4;
  char *format;
  type_7 var_14;
  type_7 var_16;
  type_3 *var_25;
  int var_33;
  type_3 *var_24;
  type_3 *var_28;
  type_3 *var_22;
  type_7 var_15;
  int var_27;
  type_8 var_9;
  type_9 var_35;
  type_7 var_17;
  type_7 var_13;
  int var_12;
  type_3 *var_20;
  type_10 size;
  
  var_2 = var_1(ibfd,isection,1);
  if (var_2 == 0) {
    section = isection->output_section;
    size._4_4_ = *(int *)((int)&isection->size + 4);
    size._0_4_ = (type_7)isection->size;
    if (((isection->flags & 0x100) != 0) && ((section->flags & 0x100) != 0)) {
      var_20 = (type_3 *)0x0;
      var_4 = var_3(ibfd,isection,&var_20);
      if ((var_4 != 0) &&
         (var_6 = var_5(ibfd,isection,obfdarg,&var_20,&size),
         var_12 = size._4_4_, var_13 = (type_7)size, var_4 = var_7, var_6 != 0)) {
        if (var_7 != 0) {
          var_9 = var_8((type_7)size,size._4_4_,var_7,var_7 >> 0x1f);
          if (var_9 != 0) {
            pcVar4 = isection->name;
            format = (char *)var_10(0,
                                       "cannot reverse bytes: length of section %s must be evenly divisible by %d"
                                       ,5,(int)((type_11)var_9 >> 0x20));
                    /* WARNING: Subroutine does not return */
            var_11(format,pcVar4,var_4);
          }
          if (var_12 != 0 || var_13 != 0) {
            var_17 = 0;
            var_6 = var_4 + -1;
            var_15 = var_4 / 2;
            do {
              var_14 = var_17;
              if (var_4 / 2 != 0) {
                do {
                  var_16 = var_14 + 1;
                  bVar3 = var_20[var_14];
                  var_20[var_14] = var_20[var_6 - var_14];
                  var_20[var_6 - var_14] = bVar3;
                  var_13 = (type_7)size;
                  var_14 = var_16;
                  var_12 = size._4_4_;
                } while (var_15 != var_16);
              }
              var_6 = var_6 + var_4 * 2;
              var_17 = var_17 + var_4;
              var_15 = var_15 + var_4;
            } while (var_12 != 0 || (type_7)-var_12 < (type_7)(var_17 < var_13));
          }
        }
        var_22 = var_20;
        var_6 = var_21;
        var_4 = var_19;
        var_9 = var_18(var_12,var_13);
        if (-1 < var_19) {
          var_25 = var_20 + var_13;
          var_33 = var_21 >> 0x1f;
          var_23 = var_8((int)isection->lma,*(type_12 *)((int)&isection->lma + 4),var_21,
                             var_33);
          var_26 = copy_width;
          var_24 = var_22 + (var_4 - var_23);
          if (var_4 < var_23) {
            var_24 = var_22 + (var_4 - var_23) + var_6;
          }
          if (var_24 < var_25) {
            var_27 = (int)var_25 - (int)var_24;
            do {
              if ((0 < var_26) && (var_24 < var_25)) {
                var_29 = var_22 + var_26;
                var_31 = var_22 + var_27;
                var_30 = var_24;
                var_28 = var_22;
                do {
                  var_22 = var_28 + 1;
                  *var_28 = *var_30;
                  if (var_22 == var_29) break;
                  var_30 = var_30 + 1;
                  var_28 = var_22;
                } while (var_22 != var_31);
              }
              var_24 = var_24 + var_6;
              var_27 = var_27 - var_6;
            } while (var_24 < var_25);
            var_13 = (type_7)size;
            var_12 = size._4_4_;
            var_22 = var_20;
          }
          var_15 = (var_6 - 1U) - var_4;
          var_9 = var_32(var_15 + var_13,
                             (((var_33 + -1 + (type_7)(var_6 != 0)) - (var_4 >> 0x1f)) -
                             (type_7)(var_6 - 1U < (type_7)var_4)) + var_12 +
                             (type_7)var_34(var_15,var_13),var_6,var_33);
          var_9 = var_9 * var_26;
          var_13 = (type_7)var_9;
          size._4_4_ = (int)((type_11)var_9 >> 0x20);
          size._0_4_ = var_13;
          var_35 = var_32((int)section->lma,*(type_12 *)((int)&section->lma + 4),var_6,var_33)
          ;
          if (var_4 < var_23) {
            section->lma = var_35 + 1;
          }
          else {
            section->lma = var_35;
          }
        }
        var_4 = var_36(obfdarg,section,var_22,0,0,var_9);
        ibfd = (type_1 *)obfdarg;
        isection = section;
        if (var_4 != 0) {
          var_37(var_20);
          return;
        }
      }
      status = 1;
      var_38((char *)0x0,ibfd,isection,(char *)0x0);
      var_37(var_20);
      return;
    }
    var_40 = var_39(isection->name,0,0x40);
    if ((var_40 != (type_6 *)0x0) && ((var_40->flags & 0x100) != 0)) {
      __s = (void *)var_41((type_7)size);
      var_4 = size._4_4_;
      sVar6 = (type_7)size;
      var_42(__s,0,(type_7)size);
      var_4 = var_36(obfdarg,section,__s,0,0,sVar6,var_4);
      if (var_4 == 0) {
        status = 1;
        var_38((char *)0x0,(type_1 *)obfdarg,section,(char *)0x0);
        var_37(__s);
      }
      else {
        var_37(__s);
      }
    }
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined1 *puVar1;
  undefined1 *puVar2;
  undefined1 uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined1 *puVar9;
  void *__s;
  undefined4 uVar10;
  uint uVar11;
  uint uVar12;
  undefined1 *puVar13;
  int iVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  undefined1 *puVar17;
  uint uVar18;
  int iVar19;
  longlong lVar20;
  longlong lVar21;
  uint local_54;
  uint local_4c;
  int local_48;
  undefined1 *local_28;
  uint local_24;
  int local_20;
  
  iVar6 = FUN_00017fd0();
  if (iVar6 == 0) {
    puVar4 = (undefined4 *)param_2[0x15];
    local_20 = param_2[0xc];
    local_24 = param_2[0xb];
    if (((*(byte *)((int)param_2 + 0x15) & 1) != 0) && ((*(byte *)((int)puVar4 + 0x15) & 1) != 0)) {
      local_28 = (undefined1 *)0x0;
      iVar6 = bfd_get_full_section_contents(param_1,param_2,&local_28);
      if ((iVar6 != 0) &&
         (iVar7 = bfd_convert_section_contents(param_1,param_2,param_3,&local_28,&local_24),
         local_48 = local_20, local_4c = local_24, iVar6 = DAT_00040ae8, iVar7 != 0)) {
        if (DAT_00040ae8 != 0) {
          lVar20 = FUN_0002e840(local_24,local_20,DAT_00040ae8,DAT_00040ae8 >> 0x1f);
          if (lVar20 != 0) {
            uVar5 = *param_2;
            uVar10 = dcgettext(0,
                               "cannot reverse bytes: length of section %s must be evenly divisible by %d"
                               ,5,(int)((ulonglong)lVar20 >> 0x20));
                    /* WARNING: Subroutine does not return */
            FUN_0002c8e0(uVar10,uVar5,iVar6);
          }
          if (local_48 != 0 || local_4c != 0) {
            local_54 = 0;
            iVar7 = iVar6 + -1;
            uVar18 = iVar6 / 2;
            do {
              uVar11 = local_54;
              if (iVar6 / 2 != 0) {
                do {
                  uVar12 = uVar11 + 1;
                  uVar3 = local_28[uVar11];
                  local_28[uVar11] = local_28[iVar7 - uVar11];
                  local_28[iVar7 - uVar11] = uVar3;
                  local_4c = local_24;
                  uVar11 = uVar12;
                  local_48 = local_20;
                } while (uVar18 != uVar12);
              }
              iVar7 = iVar7 + iVar6 * 2;
              local_54 = local_54 + iVar6;
              uVar18 = uVar18 + iVar6;
            } while (local_48 != 0 || (uint)-local_48 < (uint)(local_54 < local_4c));
          }
        }
        puVar17 = local_28;
        iVar6 = DAT_00040bd4;
        uVar18 = DAT_00040274;
        lVar20 = CONCAT44(local_48,local_4c);
        if (-1 < (int)DAT_00040274) {
          puVar13 = local_28 + local_4c;
          iVar14 = DAT_00040bd4 >> 0x1f;
          iVar8 = FUN_0002e840(param_2[9],param_2[10],DAT_00040bd4,iVar14);
          iVar7 = DAT_00040270;
          puVar15 = puVar17 + (uVar18 - iVar8);
          if ((int)uVar18 < iVar8) {
            puVar15 = puVar17 + (uVar18 - iVar8) + iVar6;
          }
          if (puVar15 < puVar13) {
            iVar19 = (int)puVar13 - (int)puVar15;
            do {
              if ((0 < iVar7) && (puVar15 < puVar13)) {
                puVar1 = puVar17 + iVar7;
                puVar2 = puVar17 + iVar19;
                puVar9 = puVar15;
                puVar16 = puVar17;
                do {
                  puVar17 = puVar16 + 1;
                  *puVar16 = *puVar9;
                  if (puVar17 == puVar1) break;
                  puVar9 = puVar9 + 1;
                  puVar16 = puVar17;
                } while (puVar17 != puVar2);
              }
              puVar15 = puVar15 + iVar6;
              iVar19 = iVar19 - iVar6;
            } while (puVar15 < puVar13);
            local_4c = local_24;
            local_48 = local_20;
            puVar17 = local_28;
          }
          uVar11 = (iVar6 - 1U) - uVar18;
          lVar20 = FUN_0002e730(uVar11 + local_4c,
                                (((iVar14 + -1 + (uint)(iVar6 != 0)) - ((int)uVar18 >> 0x1f)) -
                                (uint)(iVar6 - 1U < uVar18)) + local_48 +
                                (uint)CARRY4(uVar11,local_4c),iVar6,iVar14);
          lVar20 = lVar20 * iVar7;
          local_4c = (uint)lVar20;
          local_20 = (int)((ulonglong)lVar20 >> 0x20);
          local_24 = local_4c;
          lVar21 = FUN_0002e730(puVar4[9],puVar4[10],iVar6,iVar14);
          if ((int)uVar18 < iVar8) {
            *(longlong *)(puVar4 + 9) = lVar21 + 1;
          }
          else {
            *(longlong *)(puVar4 + 9) = lVar21;
          }
        }
        iVar6 = bfd_set_section_contents(param_3,puVar4,puVar17,0,0,lVar20);
        param_1 = param_3;
        param_2 = puVar4;
        if (iVar6 != 0) {
          free(local_28);
          return;
        }
      }
      DAT_00040bc8 = 1;
      FUN_0002d3a0(0,param_1,param_2,0);
      free(local_28);
      return;
    }
    iVar6 = FUN_00016a30();
    if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0x21) & 1) != 0)) {
      __s = (void *)xmalloc(local_24);
      iVar6 = local_20;
      uVar18 = local_24;
      memset(__s,0,local_24);
      iVar6 = bfd_set_section_contents(param_3,puVar4,__s,0,0,uVar18,iVar6);
      if (iVar6 == 0) {
        DAT_00040bc8 = 1;
        FUN_0002d3a0(0,param_3,puVar4,0);
        free(__s);
      }
      else {
        free(__s);
      }
    }
  }
  return;
}

