
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original name: init_fixed_output_section<64, false>
   DWARF original prototype: Output_section * init_fixed_output_section<64,_false>(Layout * this,
   char * name, Shdr<64,_false> * shdr) */

Output_section * __thiscall
gold::Layout::init_fixed_output_section<64,_false>(Layout *this,char *name,Shdr<64,_false> *shdr)

{
  uint sh_type;
  Shdr_data<64> *pSVar1;
  Elf_Xword EVar2;
  uint64_t uVar3;
  Elf_Off EVar4;
  Elf_WXword EVar5;
  uint64_t uVar6;
  bool bVar7;
  char *pcVar8;
  Output_section *this_00;
  int iVar9;
  byte *pbVar10;
  byte *pbVar11;
  bool bVar12;
  byte bVar13;
  char *local_44;
  Key name_key;
  undefined4 uStack_14;
  
  bVar13 = 0;
  uStack_14 = 0xbf5d9;
  sh_type = shdr->p_->sh_type;
  bVar7 = can_incremental_update(sh_type);
  if (!bVar7) {
    return (Output_section *)0x0;
  }
  if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  if ((parameters->options_->gdb_index_).value != false) {
    bVar7 = sh_type == 0;
    bVar12 = sh_type == 1;
    if (bVar12) {
      iVar9 = 0xb;
      pbVar10 = (byte *)name;
      pbVar11 = (byte *)".gdb_index";
      do {
        if (iVar9 == 0) break;
        iVar9 = iVar9 + -1;
        bVar7 = *pbVar10 < *pbVar11;
        bVar12 = *pbVar10 == *pbVar11;
        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;
        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;
      } while (bVar12);
      if ((!bVar7 && !bVar12) == bVar7) {
        return (Output_section *)0x0;
      }
      pSVar1 = shdr->p_;
      uVar3 = pSVar1->sh_addr;
      EVar5 = pSVar1->sh_size;
      local_44 = *(char **)&pSVar1->sh_offset;
      EVar4 = pSVar1->sh_offset;
      EVar2 = pSVar1->sh_flags;
      uVar6 = pSVar1->sh_addralign;
      pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);
      this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);
      Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);
      goto LAB_000bf795;
    }
  }
  pSVar1 = shdr->p_;
  uVar3 = pSVar1->sh_addr;
  EVar5 = pSVar1->sh_size;
  local_44 = *(char **)&pSVar1->sh_offset;
  EVar4 = pSVar1->sh_offset;
  EVar2 = pSVar1->sh_flags;
  uVar6 = pSVar1->sh_addralign;
  pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);
  this_00 = get_output_section(this,pcVar8,name_key,sh_type,EVar2,ORDER_INVALID,false);
  Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);
  if (sh_type == 8) {
    return this_00;
  }
LAB_000bf795:
  Free_list::remove(&this->free_list_,local_44);
  return this_00;
}



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

undefined4 FUN_000bf5d0(int param_1,byte *param_2,int *param_3)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  uint uVar11;
  int iVar12;
  uint uVar13;
  int iVar14;
  undefined4 uVar15;
  undefined4 uVar16;
  undefined4 uVar17;
  undefined4 uVar18;
  undefined4 uVar19;
  undefined4 local_20 [3];
  undefined4 uStack_14;
  
  bVar10 = 0;
  uStack_14 = 0xbf5d9;
  iVar5 = *(int *)(*param_3 + 4);
  cVar2 = FUN_00084420(iVar5);
  if (cVar2 == '\0') {
    return 0;
  }
  if (*(int *)(DAT_003af408 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);
  }
  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {
    bVar8 = iVar5 == 0;
    bVar9 = iVar5 == 1;
    if (bVar9) {
      iVar5 = 0xb;
      pbVar6 = param_2;
      pbVar7 = (byte *)".gdb_index";
      do {
        if (iVar5 == 0) break;
        iVar5 = iVar5 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;
      } while (bVar9);
      if ((!bVar8 && !bVar9) == bVar8) {
        return 0;
      }
      iVar5 = *param_3;
      uVar16 = *(undefined4 *)(iVar5 + 0x10);
      uVar18 = *(undefined4 *)(iVar5 + 0x14);
      uVar11 = *(uint *)(iVar5 + 0x20);
      iVar12 = *(int *)(iVar5 + 0x24);
      uVar13 = *(uint *)(iVar5 + 0x18);
      iVar14 = *(int *)(iVar5 + 0x1c);
      uVar4 = *(undefined4 *)(iVar5 + 8);
      uVar17 = *(undefined4 *)(iVar5 + 0xc);
      uVar19 = *(undefined4 *)(iVar5 + 0x34);
      uVar15 = *(undefined4 *)(iVar5 + 0x30);
      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,
                           uVar15,uVar19);
      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);
      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);
      goto LAB_000bf795;
    }
  }
  iVar1 = *param_3;
  uVar16 = *(undefined4 *)(iVar1 + 0x10);
  uVar18 = *(undefined4 *)(iVar1 + 0x14);
  uVar11 = *(uint *)(iVar1 + 0x20);
  iVar12 = *(int *)(iVar1 + 0x24);
  uVar13 = *(uint *)(iVar1 + 0x18);
  iVar14 = *(int *)(iVar1 + 0x1c);
  uVar17 = *(undefined4 *)(iVar1 + 0x34);
  uVar4 = *(undefined4 *)(iVar1 + 8);
  uVar19 = *(undefined4 *)(iVar1 + 0xc);
  uVar15 = *(undefined4 *)(iVar1 + 0x30);
  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,
                       uVar16,uVar18);
  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);
  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);
  if (iVar5 == 8) {
    return uVar4;
  }
LAB_000bf795:
  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,
               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));
  return uVar4;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00036f20
ADD EBX,0x2efa27
SUB ESP,0x48
MOV EBP,dword ptr [ESP + 0x64]
MOV EAX,dword ptr [EBP]
MOV ESI,dword ptr [EAX + 0x4]
PUSH ESI
CALL 0x00084420
ADD ESP,0x10
TEST AL,AL
JZ 0x000bf7d0
LEA EAX,[EBX + 0x408]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x000bf7dc
CMP byte ptr [EAX + 0x192d],0x0
JZ 0x000bf622
CMP ESI,0x1
JZ 0x000bf6d8
MOV EAX,dword ptr [EBP]
MOV EDX,dword ptr [EAX + 0x10]
MOV ECX,dword ptr [EAX + 0x14]
MOV EDI,dword ptr [EAX + 0x20]
MOV EBP,dword ptr [EAX + 0x24]
MOV dword ptr [ESP + 0x18],EDX
MOV EDX,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x1c],ECX
MOV ECX,dword ptr [EAX + 0x1c]
MOV dword ptr [ESP + 0x8],EDX
MOV EDX,dword ptr [EAX + 0x34]
MOV dword ptr [ESP],EDI
MOV EDI,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x4],EBP
MOV EBP,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0xc],ECX
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESP + 0x2c]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x5c]
MOV ECX,dword ptr [ESP + 0x5c]
LEA EAX,[ECX + 0x8]
PUSH EAX
CALL 0x00187d90
ADD ESP,0x10
PUSH 0x0
PUSH 0x0
PUSH EBP
PUSH EDI
PUSH ESI
PUSH dword ptr [ESP + 0x40]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
CALL 0x000b4b00
ADD ESP,0x14
PUSH dword ptr [ESP + 0x20]
MOV EDI,EAX
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x40]
PUSH dword ptr [ESP + 0x40]
PUSH EAX
CALL 0x00105670
ADD ESP,0x30
CMP ESI,0x8
JNZ 0x000bf795
ADD ESP,0x3c
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [ESP + 0x54]
MOV ECX,0xb
LEA EDI,[EBX + 0xffef7e68]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x000bf7d0
MOV EAX,dword ptr [EBP]
MOV ESI,dword ptr [EAX + 0x10]
MOV EDI,dword ptr [EAX + 0x14]
MOV EDX,dword ptr [EAX + 0x20]
MOV ECX,dword ptr [EAX + 0x24]
MOV dword ptr [ESP + 0x10],ESI
MOV ESI,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x14],EDI
MOV EDI,dword ptr [EAX + 0x1c]
MOV dword ptr [ESP + 0x8],ESI
MOV ESI,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,dword ptr [EAX + 0xc]
MOV dword ptr [ESP],EDX
MOV EDX,dword ptr [EAX + 0x34]
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x4],ECX
MOV dword ptr [ESP + 0x1c],EDX
MOV dword ptr [ESP + 0x18],EAX
LEA EAX,[ESP + 0x2c]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x5c]
MOV ECX,dword ptr [ESP + 0x5c]
LEA EAX,[ECX + 0x8]
PUSH EAX
CALL 0x00187d90
ADD ESP,0x10
PUSH 0x0
PUSH 0x0
PUSH EDI
PUSH ESI
PUSH 0x1
PUSH dword ptr [ESP + 0x40]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
CALL 0x000b4b00
ADD ESP,0x14
PUSH dword ptr [ESP + 0x28]
MOV EDI,EAX
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x38]
PUSH EAX
CALL 0x00105670
ADD ESP,0x30
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [ESP + 0x14]
MOV EBX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x10]
ADD EAX,ECX
ADC EDX,EBX
PUSH EDX
PUSH EAX
PUSH EBX
PUSH ECX
MOV EAX,dword ptr [ESP + 0x6c]
ADD EAX,0x248
PUSH EAX
CALL 0x000ab0f0
ADD ESP,0x20
MOV EAX,EDI
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0x3c
XOR EDI,EDI
POP EBX
MOV EAX,EDI
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
LEA EAX,[EBX + 0xffef8588]
PUSH EAX
LEA EAX,[EBX + 0xffee926d]
PUSH 0x5c
PUSH EAX
CALL 0x0007d010
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_000bf5d0(int param_1,byte *param_2,int *param_3)\n\n{\n  int iVar1;\n  char cVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar10 = 0;\n  uStack_14 = 0xbf5d9;\n  iVar5 = *(int *)(*param_3 + 4);\n  cVar2 = FUN_00084420(iVar5);\n  if (cVar2 == '\0') {\n    return 0;\n  }\n  if (*(int *)(DAT_003af408 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }\n  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }\n  iVar1 = *param_3;\n  uVar16 = *(undefined4 *)(iVar1 + 0x10);\n  uVar18 = *(undefined4 *)(iVar1 + 0x14);\n  uVar11 = *(uint *)(iVar1 + 0x20);\n  iVar12 = *(int *)(iVar1 + 0x24);\n  uVar13 = *(uint *)(iVar1 + 0x18);\n  iVar14 = *(int *)(iVar1 + 0x1c);\n  uVar17 = *(undefined4 *)(iVar1 + 0x34);\n  uVar4 = *(undefined4 *)(iVar1 + 8);\n  uVar19 = *(undefined4 *)(iVar1 + 0xc);\n  uVar15 = *(undefined4 *)(iVar1 + 0x30);\n  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);\n  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);\n  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);\n  if (iVar5 == 8) {\n    return uVar4;\n  }\nLAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));\n  return uVar4;\n}\n\n" comment (function_definition "undefined4 FUN_000bf5d0(int param_1,byte *param_2,int *param_3)\n\n{\n  int iVar1;\n  char cVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar10 = 0;\n  uStack_14 = 0xbf5d9;\n  iVar5 = *(int *)(*param_3 + 4);\n  cVar2 = FUN_00084420(iVar5);\n  if (cVar2 == '\0') {\n    return 0;\n  }\n  if (*(int *)(DAT_003af408 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }\n  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }\n  iVar1 = *param_3;\n  uVar16 = *(undefined4 *)(iVar1 + 0x10);\n  uVar18 = *(undefined4 *)(iVar1 + 0x14);\n  uVar11 = *(uint *)(iVar1 + 0x20);\n  iVar12 = *(int *)(iVar1 + 0x24);\n  uVar13 = *(uint *)(iVar1 + 0x18);\n  iVar14 = *(int *)(iVar1 + 0x1c);\n  uVar17 = *(undefined4 *)(iVar1 + 0x34);\n  uVar4 = *(undefined4 *)(iVar1 + 8);\n  uVar19 = *(undefined4 *)(iVar1 + 0xc);\n  uVar15 = *(undefined4 *)(iVar1 + 0x30);\n  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);\n  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);\n  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);\n  if (iVar5 == 8) {\n    return uVar4;\n  }\nLAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));\n  return uVar4;\n}" type_identifier (function_declarator "FUN_000bf5d0(int param_1,byte *param_2,int *param_3)" identifier (parameter_list "(int param_1,byte *param_2,int *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar10 = 0;\n  uStack_14 = 0xbf5d9;\n  iVar5 = *(int *)(*param_3 + 4);\n  cVar2 = FUN_00084420(iVar5);\n  if (cVar2 == '\0') {\n    return 0;\n  }\n  if (*(int *)(DAT_003af408 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }\n  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }\n  iVar1 = *param_3;\n  uVar16 = *(undefined4 *)(iVar1 + 0x10);\n  uVar18 = *(undefined4 *)(iVar1 + 0x14);\n  uVar11 = *(uint *)(iVar1 + 0x20);\n  iVar12 = *(int *)(iVar1 + 0x24);\n  uVar13 = *(uint *)(iVar1 + 0x18);\n  iVar14 = *(int *)(iVar1 + 0x1c);\n  uVar17 = *(undefined4 *)(iVar1 + 0x34);\n  uVar4 = *(undefined4 *)(iVar1 + 8);\n  uVar19 = *(undefined4 *)(iVar1 + 0xc);\n  uVar15 = *(undefined4 *)(iVar1 + 0x30);\n  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);\n  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);\n  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);\n  if (iVar5 == 8) {\n    return uVar4;\n  }\nLAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "undefined4 local_20 [3];" type_identifier (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0xbf5d9;" (assignment_expression "uStack_14 = 0xbf5d9" identifier = number_literal) ;) (expression_statement "iVar5 = *(int *)(*param_3 + 4);" (assignment_expression "iVar5 = *(int *)(*param_3 + 4)" identifier = (pointer_expression "*(int *)(*param_3 + 4)" * (cast_expression "(int *)(*param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 4)" ( (binary_expression "*param_3 + 4" (pointer_expression "*param_3" * identifier) + number_literal) ))))) ;) (expression_statement "cVar2 = FUN_00084420(iVar5);" (assignment_expression "cVar2 = FUN_00084420(iVar5)" identifier = (call_expression "FUN_00084420(iVar5)" identifier (argument_list "(iVar5)" ( identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    return 0;\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(DAT_003af408 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }" if (parenthesized_expression "(*(int *)(DAT_003af408 + 8) == 0)" ( (binary_expression "*(int *)(DAT_003af408 + 8) == 0" (pointer_expression "*(int *)(DAT_003af408 + 8)" * (cast_expression "(int *)(DAT_003af408 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_003af408 + 8)" ( (binary_expression "DAT_003af408 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }" { comment (expression_statement "FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_0007d010("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (if_statement "if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }" if (parenthesized_expression "(*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0')" ( (binary_expression "*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0'" (pointer_expression "*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d)" * (cast_expression "(char *)(*(int *)(DAT_003af408 + 8) + 0x192d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_003af408 + 8) + 0x192d)" ( (binary_expression "*(int *)(DAT_003af408 + 8) + 0x192d" (pointer_expression "*(int *)(DAT_003af408 + 8)" * (cast_expression "(int *)(DAT_003af408 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_003af408 + 8)" ( (binary_expression "DAT_003af408 + 8" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }" { (expression_statement "bVar8 = iVar5 == 0;" (assignment_expression "bVar8 = iVar5 == 0" identifier = (binary_expression "iVar5 == 0" identifier == number_literal)) ;) (expression_statement "bVar9 = iVar5 == 1;" (assignment_expression "bVar9 = iVar5 == 1" identifier = (binary_expression "iVar5 == 1" identifier == number_literal)) ;) (if_statement "if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }" { (expression_statement "iVar5 = 0xb;" (assignment_expression "iVar5 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar6 = param_2;" (assignment_expression "pbVar6 = param_2" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".gdb_index";" (assignment_expression "pbVar7 = (byte *)".gdb_index"" identifier = (cast_expression "(byte *)".gdb_index"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gdb_index"" " string_content "))) ;) (do_statement "do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }" if (parenthesized_expression "((!bVar8 && !bVar9) == bVar8)" ( (binary_expression "(!bVar8 && !bVar9) == bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = *param_3;" (assignment_expression "iVar5 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar16 = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "uVar16 = *(undefined4 *)(iVar5 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = *(undefined4 *)(iVar5 + 0x14);" (assignment_expression "uVar18 = *(undefined4 *)(iVar5 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(iVar5 + 0x20);" (assignment_expression "uVar11 = *(uint *)(iVar5 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x20)" * (cast_expression "(uint *)(iVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar5 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar5 + 0x24)" identifier = (pointer_expression "*(int *)(iVar5 + 0x24)" * (cast_expression "(int *)(iVar5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(uint *)(iVar5 + 0x18);" (assignment_expression "uVar13 = *(uint *)(iVar5 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x18)" * (cast_expression "(uint *)(iVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = *(int *)(iVar5 + 0x1c);" (assignment_expression "iVar14 = *(int *)(iVar5 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar5 + 0x1c)" * (cast_expression "(int *)(iVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar5 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar5 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 8)" * (cast_expression "(undefined4 *)(iVar5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(undefined4 *)(iVar5 + 0xc);" (assignment_expression "uVar17 = *(undefined4 *)(iVar5 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" * (cast_expression "(undefined4 *)(iVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(undefined4 *)(iVar5 + 0x34);" (assignment_expression "uVar19 = *(undefined4 *)(iVar5 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x34)" * (cast_expression "(undefined4 *)(iVar5 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(undefined4 *)(iVar5 + 0x30);" (assignment_expression "uVar15 = *(undefined4 *)(iVar5 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" * (cast_expression "(undefined4 *)(iVar5 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);" (assignment_expression "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" identifier = (call_expression "FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" identifier (argument_list "(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" ( (binary_expression "param_1 + 8" identifier + number_literal) , identifier , number_literal , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);" (assignment_expression "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" identifier = (call_expression "FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" identifier (argument_list "(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" ( identifier , identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , number_literal , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);" (call_expression "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19)" identifier (argument_list "(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000bf795;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar16 = *(undefined4 *)(iVar1 + 0x10);" (assignment_expression "uVar16 = *(undefined4 *)(iVar1 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" * (cast_expression "(undefined4 *)(iVar1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = *(undefined4 *)(iVar1 + 0x14);" (assignment_expression "uVar18 = *(undefined4 *)(iVar1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(iVar1 + 0x20);" (assignment_expression "uVar11 = *(uint *)(iVar1 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x20)" * (cast_expression "(uint *)(iVar1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar1 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar1 + 0x24)" identifier = (pointer_expression "*(int *)(iVar1 + 0x24)" * (cast_expression "(int *)(iVar1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x24)" ( (binary_expression "iVar1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(uint *)(iVar1 + 0x18);" (assignment_expression "uVar13 = *(uint *)(iVar1 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x18)" * (cast_expression "(uint *)(iVar1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = *(int *)(iVar1 + 0x1c);" (assignment_expression "iVar14 = *(int *)(iVar1 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar1 + 0x1c)" * (cast_expression "(int *)(iVar1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(undefined4 *)(iVar1 + 0x34);" (assignment_expression "uVar17 = *(undefined4 *)(iVar1 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x34)" * (cast_expression "(undefined4 *)(iVar1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar1 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar1 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 8)" * (cast_expression "(undefined4 *)(iVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(undefined4 *)(iVar1 + 0xc);" (assignment_expression "uVar19 = *(undefined4 *)(iVar1 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(undefined4 *)(iVar1 + 0x30);" (assignment_expression "uVar15 = *(undefined4 *)(iVar1 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x30)" * (cast_expression "(undefined4 *)(iVar1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);" (assignment_expression "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" identifier = (call_expression "FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" identifier (argument_list "(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" ( (binary_expression "param_1 + 8" identifier + number_literal) , identifier , number_literal , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);" (assignment_expression "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" identifier = (call_expression "FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" identifier (argument_list "(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" ( identifier , identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);" (call_expression "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17)" identifier (argument_list "(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (iVar5 == 8) {\n    return uVar4;\n  }" if (parenthesized_expression "(iVar5 == 8)" ( (binary_expression "iVar5 == 8" identifier == number_literal) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) })) (labeled_statement "LAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));" statement_identifier : (expression_statement "FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));" (call_expression "FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13))" identifier (argument_list "(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13))" ( (binary_expression "param_1 + 0x248" identifier + number_literal) , identifier , identifier , (binary_expression "uVar11 + uVar13" identifier + identifier) , (binary_expression "iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13)" (binary_expression "iVar12 + iVar14" identifier + identifier) + (cast_expression "(uint)CARRY4(uVar11,uVar13)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar11,uVar13)" identifier (argument_list "(uVar11,uVar13)" ( identifier , identifier ))))) ))) ;)) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original name: init_fixed_output_section<64, false>\n   DWARF original prototype: Output_section * init_fixed_output_section<64,_false>(Layout * this,\n   char * name, Shdr<64,_false> * shdr) */\n\nOutput_section * __thiscall\ngold::Layout::init_fixed_output_section<64,_false>(Layout *this,char *name,Shdr<64,_false> *shdr)\n\n{\n  uint sh_type;\n  Shdr_data<64> *pSVar1;\n  Elf_Xword EVar2;\n  uint64_t uVar3;\n  Elf_Off EVar4;\n  Elf_WXword EVar5;\n  uint64_t uVar6;\n  bool bVar7;\n  char *pcVar8;\n  Output_section *this_00;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  byte bVar13;\n  char *local_44;\n  Key name_key;\n  undefined4 uStack_14;\n  \n  bVar13 = 0;\n  uStack_14 = 0xbf5d9;\n  sh_type = shdr->p_->sh_type;\n  bVar7 = can_incremental_update(sh_type);\n  if (!bVar7) {\n    return (Output_section *)0x0;\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((parameters->options_->gdb_index_).value != false) {\n    bVar7 = sh_type == 0;\n    bVar12 = sh_type == 1;\n    if (bVar12) {\n      iVar9 = 0xb;\n      pbVar10 = (byte *)name;\n      pbVar11 = (byte *)".gdb_index";\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar7 = *pbVar10 < *pbVar11;\n        bVar12 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;\n        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;\n      } while (bVar12);\n      if ((!bVar7 && !bVar12) == bVar7) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      uVar3 = pSVar1->sh_addr;\n      EVar5 = pSVar1->sh_size;\n      local_44 = *(char **)&pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_offset;\n      EVar2 = pSVar1->sh_flags;\n      uVar6 = pSVar1->sh_addralign;\n      pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);\n      goto LAB_000bf795;\n    }\n  }\n  pSVar1 = shdr->p_;\n  uVar3 = pSVar1->sh_addr;\n  EVar5 = pSVar1->sh_size;\n  local_44 = *(char **)&pSVar1->sh_offset;\n  EVar4 = pSVar1->sh_offset;\n  EVar2 = pSVar1->sh_flags;\n  uVar6 = pSVar1->sh_addralign;\n  pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n  this_00 = get_output_section(this,pcVar8,name_key,sh_type,EVar2,ORDER_INVALID,false);\n  Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);\n  if (sh_type == 8) {\n    return this_00;\n  }\nLAB_000bf795:\n  Free_list::remove(&this->free_list_,local_44);\n  return this_00;\n}\n\n" comment comment comment comment (ERROR "Output_section * __thiscall\ngold::Layout::init_fixed_output_section<64,_false>(Layout *this,char *name,Shdr<64,_false> *shdr)" (binary_expression "Output_section * __thiscall\ngold::Layout::init_fixed_output_section<64,_false>(Layout *this,char *name,Shdr<64,_false> *shdr)" (binary_expression "Output_section * __thiscall\ngold::Layout::init_fixed_output_section<64" (binary_expression "Output_section * __thiscall" identifier * identifier) (ERROR "gold::Layout::init_fixed_output_section" identifier : : identifier : : identifier) < number_literal) (ERROR ",_false" , identifier) > (parenthesized_expression "(Layout *this,char *name,Shdr<64,_false> *shdr)" ( (comma_expression "Layout *this,char *name,Shdr<64,_false> *shdr" (binary_expression "Layout *this" identifier * identifier) , (comma_expression "char *name,Shdr<64,_false> *shdr" (binary_expression "char *name" identifier * identifier) , (comma_expression "Shdr<64,_false> *shdr" (binary_expression "Shdr<64" identifier < number_literal) , (binary_expression "_false> *shdr" identifier > (pointer_expression "*shdr" * identifier))))) )))) (compound_statement "{\n  uint sh_type;\n  Shdr_data<64> *pSVar1;\n  Elf_Xword EVar2;\n  uint64_t uVar3;\n  Elf_Off EVar4;\n  Elf_WXword EVar5;\n  uint64_t uVar6;\n  bool bVar7;\n  char *pcVar8;\n  Output_section *this_00;\n  int iVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  byte bVar13;\n  char *local_44;\n  Key name_key;\n  undefined4 uStack_14;\n  \n  bVar13 = 0;\n  uStack_14 = 0xbf5d9;\n  sh_type = shdr->p_->sh_type;\n  bVar7 = can_incremental_update(sh_type);\n  if (!bVar7) {\n    return (Output_section *)0x0;\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((parameters->options_->gdb_index_).value != false) {\n    bVar7 = sh_type == 0;\n    bVar12 = sh_type == 1;\n    if (bVar12) {\n      iVar9 = 0xb;\n      pbVar10 = (byte *)name;\n      pbVar11 = (byte *)".gdb_index";\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar7 = *pbVar10 < *pbVar11;\n        bVar12 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;\n        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;\n      } while (bVar12);\n      if ((!bVar7 && !bVar12) == bVar7) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      uVar3 = pSVar1->sh_addr;\n      EVar5 = pSVar1->sh_size;\n      local_44 = *(char **)&pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_offset;\n      EVar2 = pSVar1->sh_flags;\n      uVar6 = pSVar1->sh_addralign;\n      pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);\n      goto LAB_000bf795;\n    }\n  }\n  pSVar1 = shdr->p_;\n  uVar3 = pSVar1->sh_addr;\n  EVar5 = pSVar1->sh_size;\n  local_44 = *(char **)&pSVar1->sh_offset;\n  EVar4 = pSVar1->sh_offset;\n  EVar2 = pSVar1->sh_flags;\n  uVar6 = pSVar1->sh_addralign;\n  pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n  this_00 = get_output_section(this,pcVar8,name_key,sh_type,EVar2,ORDER_INVALID,false);\n  Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);\n  if (sh_type == 8) {\n    return this_00;\n  }\nLAB_000bf795:\n  Free_list::remove(&this->free_list_,local_44);\n  return this_00;\n}" { (declaration "uint sh_type;" type_identifier identifier ;) (expression_statement "Shdr_data<64> *pSVar1;" (binary_expression "Shdr_data<64> *pSVar1" (binary_expression "Shdr_data<64" identifier < number_literal) > (pointer_expression "*pSVar1" * identifier)) ;) (declaration "Elf_Xword EVar2;" type_identifier identifier ;) (declaration "uint64_t uVar3;" primitive_type identifier ;) (declaration "Elf_Off EVar4;" type_identifier identifier ;) (declaration "Elf_WXword EVar5;" type_identifier identifier ;) (declaration "uint64_t uVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "Output_section *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "char *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "Key name_key;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0xbf5d9;" (assignment_expression "uStack_14 = 0xbf5d9" identifier = number_literal) ;) (expression_statement "sh_type = shdr->p_->sh_type;" (assignment_expression "sh_type = shdr->p_->sh_type" identifier = (field_expression "shdr->p_->sh_type" (field_expression "shdr->p_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "bVar7 = can_incremental_update(sh_type);" (assignment_expression "bVar7 = can_incremental_update(sh_type)" identifier = (call_expression "can_incremental_update(sh_type)" identifier (argument_list "(sh_type)" ( identifier )))) ;) (if_statement "if (!bVar7) {\n    return (Output_section *)0x0;\n  }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n    return (Output_section *)0x0;\n  }" { (return_statement "return (Output_section *)0x0;" return (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if ((parameters->options_->gdb_index_).value != false) {\n    bVar7 = sh_type == 0;\n    bVar12 = sh_type == 1;\n    if (bVar12) {\n      iVar9 = 0xb;\n      pbVar10 = (byte *)name;\n      pbVar11 = (byte *)".gdb_index";\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar7 = *pbVar10 < *pbVar11;\n        bVar12 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;\n        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;\n      } while (bVar12);\n      if ((!bVar7 && !bVar12) == bVar7) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      uVar3 = pSVar1->sh_addr;\n      EVar5 = pSVar1->sh_size;\n      local_44 = *(char **)&pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_offset;\n      EVar2 = pSVar1->sh_flags;\n      uVar6 = pSVar1->sh_addralign;\n      pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);\n      goto LAB_000bf795;\n    }\n  }" if (parenthesized_expression "((parameters->options_->gdb_index_).value != false)" ( (binary_expression "(parameters->options_->gdb_index_).value != false" (field_expression "(parameters->options_->gdb_index_).value" (parenthesized_expression "(parameters->options_->gdb_index_)" ( (field_expression "parameters->options_->gdb_index_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n    bVar7 = sh_type == 0;\n    bVar12 = sh_type == 1;\n    if (bVar12) {\n      iVar9 = 0xb;\n      pbVar10 = (byte *)name;\n      pbVar11 = (byte *)".gdb_index";\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar7 = *pbVar10 < *pbVar11;\n        bVar12 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;\n        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;\n      } while (bVar12);\n      if ((!bVar7 && !bVar12) == bVar7) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      uVar3 = pSVar1->sh_addr;\n      EVar5 = pSVar1->sh_size;\n      local_44 = *(char **)&pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_offset;\n      EVar2 = pSVar1->sh_flags;\n      uVar6 = pSVar1->sh_addralign;\n      pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);\n      goto LAB_000bf795;\n    }\n  }" { (expression_statement "bVar7 = sh_type == 0;" (assignment_expression "bVar7 = sh_type == 0" identifier = (binary_expression "sh_type == 0" identifier == number_literal)) ;) (expression_statement "bVar12 = sh_type == 1;" (assignment_expression "bVar12 = sh_type == 1" identifier = (binary_expression "sh_type == 1" identifier == number_literal)) ;) (if_statement "if (bVar12) {\n      iVar9 = 0xb;\n      pbVar10 = (byte *)name;\n      pbVar11 = (byte *)".gdb_index";\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar7 = *pbVar10 < *pbVar11;\n        bVar12 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;\n        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;\n      } while (bVar12);\n      if ((!bVar7 && !bVar12) == bVar7) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      uVar3 = pSVar1->sh_addr;\n      EVar5 = pSVar1->sh_size;\n      local_44 = *(char **)&pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_offset;\n      EVar2 = pSVar1->sh_flags;\n      uVar6 = pSVar1->sh_addralign;\n      pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);\n      goto LAB_000bf795;\n    }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n      iVar9 = 0xb;\n      pbVar10 = (byte *)name;\n      pbVar11 = (byte *)".gdb_index";\n      do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar7 = *pbVar10 < *pbVar11;\n        bVar12 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;\n        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;\n      } while (bVar12);\n      if ((!bVar7 && !bVar12) == bVar7) {\n        return (Output_section *)0x0;\n      }\n      pSVar1 = shdr->p_;\n      uVar3 = pSVar1->sh_addr;\n      EVar5 = pSVar1->sh_size;\n      local_44 = *(char **)&pSVar1->sh_offset;\n      EVar4 = pSVar1->sh_offset;\n      EVar2 = pSVar1->sh_flags;\n      uVar6 = pSVar1->sh_addralign;\n      pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);\n      this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);\n      Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);\n      goto LAB_000bf795;\n    }" { (expression_statement "iVar9 = 0xb;" (assignment_expression "iVar9 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)name;" (assignment_expression "pbVar10 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar11 = (byte *)".gdb_index";" (assignment_expression "pbVar11 = (byte *)".gdb_index"" identifier = (cast_expression "(byte *)".gdb_index"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gdb_index"" " string_content "))) ;) (do_statement "do {\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar7 = *pbVar10 < *pbVar11;\n        bVar12 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;\n        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;\n      } while (bVar12);" do (compound_statement "{\n        if (iVar9 == 0) break;\n        iVar9 = iVar9 + -1;\n        bVar7 = *pbVar10 < *pbVar11;\n        bVar12 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;\n        pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;\n      }" { (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = *pbVar10 < *pbVar11;" (assignment_expression "bVar7 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar12 = *pbVar10 == *pbVar11;" (assignment_expression "bVar12 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar7 && !bVar12) == bVar7) {\n        return (Output_section *)0x0;\n      }" if (parenthesized_expression "((!bVar7 && !bVar12) == bVar7)" ( (binary_expression "(!bVar7 && !bVar12) == bVar7" (parenthesized_expression "(!bVar7 && !bVar12)" ( (binary_expression "!bVar7 && !bVar12" (unary_expression "!bVar7" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier) )) (compound_statement "{\n        return (Output_section *)0x0;\n      }" { (return_statement "return (Output_section *)0x0;" return (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pSVar1 = shdr->p_;" (assignment_expression "pSVar1 = shdr->p_" identifier = (field_expression "shdr->p_" identifier -> field_identifier)) ;) (expression_statement "uVar3 = pSVar1->sh_addr;" (assignment_expression "uVar3 = pSVar1->sh_addr" identifier = (field_expression "pSVar1->sh_addr" identifier -> field_identifier)) ;) (expression_statement "EVar5 = pSVar1->sh_size;" (assignment_expression "EVar5 = pSVar1->sh_size" identifier = (field_expression "pSVar1->sh_size" identifier -> field_identifier)) ;) (expression_statement "local_44 = *(char **)&pSVar1->sh_offset;" (assignment_expression "local_44 = *(char **)&pSVar1->sh_offset" identifier = (pointer_expression "*(char **)&pSVar1->sh_offset" * (cast_expression "(char **)&pSVar1->sh_offset" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pSVar1->sh_offset" & (field_expression "pSVar1->sh_offset" identifier -> field_identifier))))) ;) (expression_statement "EVar4 = pSVar1->sh_offset;" (assignment_expression "EVar4 = pSVar1->sh_offset" identifier = (field_expression "pSVar1->sh_offset" identifier -> field_identifier)) ;) (expression_statement "EVar2 = pSVar1->sh_flags;" (assignment_expression "EVar2 = pSVar1->sh_flags" identifier = (field_expression "pSVar1->sh_flags" identifier -> field_identifier)) ;) (expression_statement "uVar6 = pSVar1->sh_addralign;" (assignment_expression "uVar6 = pSVar1->sh_addralign" identifier = (field_expression "pSVar1->sh_addralign" identifier -> field_identifier)) ;) (expression_statement "pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);" (assignment_expression "pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key)" identifier = (binary_expression "Stringpool_template<char>::add(&this->namepool_,name,true,&name_key)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add(&this->namepool_,name,true,&name_key)" identifier (argument_list "(&this->namepool_,name,true,&name_key)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , identifier , true , (pointer_expression "&name_key" & identifier) ))))) ;) (expression_statement "this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);" (assignment_expression "this_00 = get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false)" identifier = (call_expression "get_output_section(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false)" identifier (argument_list "(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false)" ( identifier , identifier , identifier , number_literal , identifier , identifier , false )))) ;) (labeled_statement "Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);" statement_identifier : (ERROR ":" :) (expression_statement "set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);" (call_expression "set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6)" identifier (argument_list "(this_00,uVar3,EVar4,EVar5,uVar6)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_000bf795;" goto statement_identifier ;) })) })) (expression_statement "pSVar1 = shdr->p_;" (assignment_expression "pSVar1 = shdr->p_" identifier = (field_expression "shdr->p_" identifier -> field_identifier)) ;) (expression_statement "uVar3 = pSVar1->sh_addr;" (assignment_expression "uVar3 = pSVar1->sh_addr" identifier = (field_expression "pSVar1->sh_addr" identifier -> field_identifier)) ;) (expression_statement "EVar5 = pSVar1->sh_size;" (assignment_expression "EVar5 = pSVar1->sh_size" identifier = (field_expression "pSVar1->sh_size" identifier -> field_identifier)) ;) (expression_statement "local_44 = *(char **)&pSVar1->sh_offset;" (assignment_expression "local_44 = *(char **)&pSVar1->sh_offset" identifier = (pointer_expression "*(char **)&pSVar1->sh_offset" * (cast_expression "(char **)&pSVar1->sh_offset" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pSVar1->sh_offset" & (field_expression "pSVar1->sh_offset" identifier -> field_identifier))))) ;) (expression_statement "EVar4 = pSVar1->sh_offset;" (assignment_expression "EVar4 = pSVar1->sh_offset" identifier = (field_expression "pSVar1->sh_offset" identifier -> field_identifier)) ;) (expression_statement "EVar2 = pSVar1->sh_flags;" (assignment_expression "EVar2 = pSVar1->sh_flags" identifier = (field_expression "pSVar1->sh_flags" identifier -> field_identifier)) ;) (expression_statement "uVar6 = pSVar1->sh_addralign;" (assignment_expression "uVar6 = pSVar1->sh_addralign" identifier = (field_expression "pSVar1->sh_addralign" identifier -> field_identifier)) ;) (expression_statement "pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key);" (assignment_expression "pcVar8 = Stringpool_template<char>::add(&this->namepool_,name,true,&name_key)" identifier = (binary_expression "Stringpool_template<char>::add(&this->namepool_,name,true,&name_key)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add(&this->namepool_,name,true,&name_key)" identifier (argument_list "(&this->namepool_,name,true,&name_key)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , identifier , true , (pointer_expression "&name_key" & identifier) ))))) ;) (expression_statement "this_00 = get_output_section(this,pcVar8,name_key,sh_type,EVar2,ORDER_INVALID,false);" (assignment_expression "this_00 = get_output_section(this,pcVar8,name_key,sh_type,EVar2,ORDER_INVALID,false)" identifier = (call_expression "get_output_section(this,pcVar8,name_key,sh_type,EVar2,ORDER_INVALID,false)" identifier (argument_list "(this,pcVar8,name_key,sh_type,EVar2,ORDER_INVALID,false)" ( identifier , identifier , identifier , identifier , identifier , identifier , false )))) ;) (labeled_statement "Output_section::set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);" statement_identifier : (ERROR ":" :) (expression_statement "set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6);" (call_expression "set_fixed_layout(this_00,uVar3,EVar4,EVar5,uVar6)" identifier (argument_list "(this_00,uVar3,EVar4,EVar5,uVar6)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (sh_type == 8) {\n    return this_00;\n  }" if (parenthesized_expression "(sh_type == 8)" ( (binary_expression "sh_type == 8" identifier == number_literal) )) (compound_statement "{\n    return this_00;\n  }" { (return_statement "return this_00;" return identifier ;) })) (labeled_statement "LAB_000bf795:\n  Free_list::remove(&this->free_list_,local_44);" statement_identifier : (labeled_statement "Free_list::remove(&this->free_list_,local_44);" statement_identifier : (ERROR ":" :) (expression_statement "remove(&this->free_list_,local_44);" (call_expression "remove(&this->free_list_,local_44)" identifier (argument_list "(&this->free_list_,local_44)" ( (pointer_expression "&this->free_list_" & (field_expression "this->free_list_" identifier -> field_identifier)) , identifier ))) ;))) (return_statement "return this_00;" return identifier ;) }))
(translation_unit "undefined4 FUN_000bf5d0(int param_1,byte *param_2,int *param_3)\n\n{\n  int iVar1;\n  char cVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar10 = 0;\n  uStack_14 = 0xbf5d9;\n  iVar5 = *(int *)(*param_3 + 4);\n  cVar2 = FUN_00084420(iVar5);\n  if (cVar2 == '\0') {\n    return 0;\n  }\n  if (*(int *)(DAT_003af408 + 8) == 0) {\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }\n  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }\n  iVar1 = *param_3;\n  uVar16 = *(undefined4 *)(iVar1 + 0x10);\n  uVar18 = *(undefined4 *)(iVar1 + 0x14);\n  uVar11 = *(uint *)(iVar1 + 0x20);\n  iVar12 = *(int *)(iVar1 + 0x24);\n  uVar13 = *(uint *)(iVar1 + 0x18);\n  iVar14 = *(int *)(iVar1 + 0x1c);\n  uVar17 = *(undefined4 *)(iVar1 + 0x34);\n  uVar4 = *(undefined4 *)(iVar1 + 8);\n  uVar19 = *(undefined4 *)(iVar1 + 0xc);\n  uVar15 = *(undefined4 *)(iVar1 + 0x30);\n  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);\n  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);\n  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);\n  if (iVar5 == 8) {\n    return uVar4;\n  }\nLAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));\n  return uVar4;\n}\n\n" (function_definition "undefined4 FUN_000bf5d0(int param_1,byte *param_2,int *param_3)\n\n{\n  int iVar1;\n  char cVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar10 = 0;\n  uStack_14 = 0xbf5d9;\n  iVar5 = *(int *)(*param_3 + 4);\n  cVar2 = FUN_00084420(iVar5);\n  if (cVar2 == '\0') {\n    return 0;\n  }\n  if (*(int *)(DAT_003af408 + 8) == 0) {\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }\n  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }\n  iVar1 = *param_3;\n  uVar16 = *(undefined4 *)(iVar1 + 0x10);\n  uVar18 = *(undefined4 *)(iVar1 + 0x14);\n  uVar11 = *(uint *)(iVar1 + 0x20);\n  iVar12 = *(int *)(iVar1 + 0x24);\n  uVar13 = *(uint *)(iVar1 + 0x18);\n  iVar14 = *(int *)(iVar1 + 0x1c);\n  uVar17 = *(undefined4 *)(iVar1 + 0x34);\n  uVar4 = *(undefined4 *)(iVar1 + 8);\n  uVar19 = *(undefined4 *)(iVar1 + 0xc);\n  uVar15 = *(undefined4 *)(iVar1 + 0x30);\n  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);\n  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);\n  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);\n  if (iVar5 == 8) {\n    return uVar4;\n  }\nLAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));\n  return uVar4;\n}" type_identifier (function_declarator "FUN_000bf5d0(int param_1,byte *param_2,int *param_3)" identifier (parameter_list "(int param_1,byte *param_2,int *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar10 = 0;\n  uStack_14 = 0xbf5d9;\n  iVar5 = *(int *)(*param_3 + 4);\n  cVar2 = FUN_00084420(iVar5);\n  if (cVar2 == '\0') {\n    return 0;\n  }\n  if (*(int *)(DAT_003af408 + 8) == 0) {\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }\n  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }\n  iVar1 = *param_3;\n  uVar16 = *(undefined4 *)(iVar1 + 0x10);\n  uVar18 = *(undefined4 *)(iVar1 + 0x14);\n  uVar11 = *(uint *)(iVar1 + 0x20);\n  iVar12 = *(int *)(iVar1 + 0x24);\n  uVar13 = *(uint *)(iVar1 + 0x18);\n  iVar14 = *(int *)(iVar1 + 0x1c);\n  uVar17 = *(undefined4 *)(iVar1 + 0x34);\n  uVar4 = *(undefined4 *)(iVar1 + 8);\n  uVar19 = *(undefined4 *)(iVar1 + 0xc);\n  uVar15 = *(undefined4 *)(iVar1 + 0x30);\n  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);\n  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);\n  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);\n  if (iVar5 == 8) {\n    return uVar4;\n  }\nLAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "undefined4 local_20 [3];" type_identifier (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0xbf5d9;" (assignment_expression "uStack_14 = 0xbf5d9" identifier = number_literal) ;) (expression_statement "iVar5 = *(int *)(*param_3 + 4);" (assignment_expression "iVar5 = *(int *)(*param_3 + 4)" identifier = (pointer_expression "*(int *)(*param_3 + 4)" * (cast_expression "(int *)(*param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 4)" ( (binary_expression "*param_3 + 4" (pointer_expression "*param_3" * identifier) + number_literal) ))))) ;) (expression_statement "cVar2 = FUN_00084420(iVar5);" (assignment_expression "cVar2 = FUN_00084420(iVar5)" identifier = (call_expression "FUN_00084420(iVar5)" identifier (argument_list "(iVar5)" ( identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    return 0;\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(DAT_003af408 + 8) == 0) {\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }" if (parenthesized_expression "(*(int *)(DAT_003af408 + 8) == 0)" ( (binary_expression "*(int *)(DAT_003af408 + 8) == 0" (pointer_expression "*(int *)(DAT_003af408 + 8)" * (cast_expression "(int *)(DAT_003af408 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_003af408 + 8)" ( (binary_expression "DAT_003af408 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }" { (expression_statement "FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_0007d010("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (if_statement "if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }" if (parenthesized_expression "(*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0')" ( (binary_expression "*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0'" (pointer_expression "*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d)" * (cast_expression "(char *)(*(int *)(DAT_003af408 + 8) + 0x192d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_003af408 + 8) + 0x192d)" ( (binary_expression "*(int *)(DAT_003af408 + 8) + 0x192d" (pointer_expression "*(int *)(DAT_003af408 + 8)" * (cast_expression "(int *)(DAT_003af408 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_003af408 + 8)" ( (binary_expression "DAT_003af408 + 8" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }" { (expression_statement "bVar8 = iVar5 == 0;" (assignment_expression "bVar8 = iVar5 == 0" identifier = (binary_expression "iVar5 == 0" identifier == number_literal)) ;) (expression_statement "bVar9 = iVar5 == 1;" (assignment_expression "bVar9 = iVar5 == 1" identifier = (binary_expression "iVar5 == 1" identifier == number_literal)) ;) (if_statement "if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }" { (expression_statement "iVar5 = 0xb;" (assignment_expression "iVar5 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar6 = param_2;" (assignment_expression "pbVar6 = param_2" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".gdb_index";" (assignment_expression "pbVar7 = (byte *)".gdb_index"" identifier = (cast_expression "(byte *)".gdb_index"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gdb_index"" " string_content "))) ;) (do_statement "do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }" if (parenthesized_expression "((!bVar8 && !bVar9) == bVar8)" ( (binary_expression "(!bVar8 && !bVar9) == bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = *param_3;" (assignment_expression "iVar5 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar16 = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "uVar16 = *(undefined4 *)(iVar5 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = *(undefined4 *)(iVar5 + 0x14);" (assignment_expression "uVar18 = *(undefined4 *)(iVar5 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(iVar5 + 0x20);" (assignment_expression "uVar11 = *(uint *)(iVar5 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x20)" * (cast_expression "(uint *)(iVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar5 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar5 + 0x24)" identifier = (pointer_expression "*(int *)(iVar5 + 0x24)" * (cast_expression "(int *)(iVar5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(uint *)(iVar5 + 0x18);" (assignment_expression "uVar13 = *(uint *)(iVar5 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x18)" * (cast_expression "(uint *)(iVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = *(int *)(iVar5 + 0x1c);" (assignment_expression "iVar14 = *(int *)(iVar5 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar5 + 0x1c)" * (cast_expression "(int *)(iVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar5 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar5 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 8)" * (cast_expression "(undefined4 *)(iVar5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(undefined4 *)(iVar5 + 0xc);" (assignment_expression "uVar17 = *(undefined4 *)(iVar5 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" * (cast_expression "(undefined4 *)(iVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(undefined4 *)(iVar5 + 0x34);" (assignment_expression "uVar19 = *(undefined4 *)(iVar5 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x34)" * (cast_expression "(undefined4 *)(iVar5 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(undefined4 *)(iVar5 + 0x30);" (assignment_expression "uVar15 = *(undefined4 *)(iVar5 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" * (cast_expression "(undefined4 *)(iVar5 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);" (assignment_expression "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" identifier = (call_expression "FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" identifier (argument_list "(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" ( (binary_expression "param_1 + 8" identifier + number_literal) , identifier , number_literal , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);" (assignment_expression "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" identifier = (call_expression "FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" identifier (argument_list "(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" ( identifier , identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , number_literal , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);" (call_expression "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19)" identifier (argument_list "(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000bf795;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar16 = *(undefined4 *)(iVar1 + 0x10);" (assignment_expression "uVar16 = *(undefined4 *)(iVar1 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" * (cast_expression "(undefined4 *)(iVar1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = *(undefined4 *)(iVar1 + 0x14);" (assignment_expression "uVar18 = *(undefined4 *)(iVar1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" * (cast_expression "(undefined4 *)(iVar1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(iVar1 + 0x20);" (assignment_expression "uVar11 = *(uint *)(iVar1 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x20)" * (cast_expression "(uint *)(iVar1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar1 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar1 + 0x24)" identifier = (pointer_expression "*(int *)(iVar1 + 0x24)" * (cast_expression "(int *)(iVar1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x24)" ( (binary_expression "iVar1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(uint *)(iVar1 + 0x18);" (assignment_expression "uVar13 = *(uint *)(iVar1 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x18)" * (cast_expression "(uint *)(iVar1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = *(int *)(iVar1 + 0x1c);" (assignment_expression "iVar14 = *(int *)(iVar1 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar1 + 0x1c)" * (cast_expression "(int *)(iVar1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(undefined4 *)(iVar1 + 0x34);" (assignment_expression "uVar17 = *(undefined4 *)(iVar1 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x34)" * (cast_expression "(undefined4 *)(iVar1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar1 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar1 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 8)" * (cast_expression "(undefined4 *)(iVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(undefined4 *)(iVar1 + 0xc);" (assignment_expression "uVar19 = *(undefined4 *)(iVar1 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(undefined4 *)(iVar1 + 0x30);" (assignment_expression "uVar15 = *(undefined4 *)(iVar1 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 0x30)" * (cast_expression "(undefined4 *)(iVar1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);" (assignment_expression "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" identifier = (call_expression "FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" identifier (argument_list "(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" ( (binary_expression "param_1 + 8" identifier + number_literal) , identifier , number_literal , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);" (assignment_expression "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" identifier = (call_expression "FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" identifier (argument_list "(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" ( identifier , identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);" (call_expression "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17)" identifier (argument_list "(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (iVar5 == 8) {\n    return uVar4;\n  }" if (parenthesized_expression "(iVar5 == 8)" ( (binary_expression "iVar5 == 8" identifier == number_literal) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) })) (labeled_statement "LAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));" statement_identifier : (expression_statement "FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));" (call_expression "FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13))" identifier (argument_list "(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13))" ( (binary_expression "param_1 + 0x248" identifier + number_literal) , identifier , identifier , (binary_expression "uVar11 + uVar13" identifier + identifier) , (binary_expression "iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13)" (binary_expression "iVar12 + iVar14" identifier + identifier) + (cast_expression "(uint)CARRY4(uVar11,uVar13)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar11,uVar13)" identifier (argument_list "(uVar11,uVar13)" ( identifier , identifier ))))) ))) ;)) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT , IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , (binary_expression IDENT + IDENT) , (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ))) ;)) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_000bf5d0(int param_1,byte *param_2,int *param_3)\n\n{\n  int iVar1;\n  char cVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar10 = 0;\n  uStack_14 = 0xbf5d9;\n  iVar5 = *(int *)(*param_3 + 4);\n  cVar2 = FUN_00084420(iVar5);\n  if (cVar2 == '\0') {\n    return 0;\n  }\n  if (*(int *)(DAT_003af408 + 8) == 0) {\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }\n  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }\n  iVar1 = *param_3;\n  uVar16 = *(undefined4 *)(iVar1 + 0x10);\n  uVar18 = *(undefined4 *)(iVar1 + 0x14);\n  uVar11 = *(uint *)(iVar1 + 0x20);\n  iVar12 = *(int *)(iVar1 + 0x24);\n  uVar13 = *(uint *)(iVar1 + 0x18);\n  iVar14 = *(int *)(iVar1 + 0x1c);\n  uVar17 = *(undefined4 *)(iVar1 + 0x34);\n  uVar4 = *(undefined4 *)(iVar1 + 8);\n  uVar19 = *(undefined4 *)(iVar1 + 0xc);\n  uVar15 = *(undefined4 *)(iVar1 + 0x30);\n  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);\n  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);\n  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);\n  if (iVar5 == 8) {\n    return uVar4;\n  }\nLAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));\n  return uVar4;\n}" (type_identifier "undefined4") (function_declarator "FUN_000bf5d0(int param_1,byte *param_2,int *param_3)" (identifier "FUN_000bf5d0") (parameter_list "(int param_1,byte *param_2,int *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  undefined4 local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar10 = 0;\n  uStack_14 = 0xbf5d9;\n  iVar5 = *(int *)(*param_3 + 4);\n  cVar2 = FUN_00084420(iVar5);\n  if (cVar2 == '\0') {\n    return 0;\n  }\n  if (*(int *)(DAT_003af408 + 8) == 0) {\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }\n  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }\n  iVar1 = *param_3;\n  uVar16 = *(undefined4 *)(iVar1 + 0x10);\n  uVar18 = *(undefined4 *)(iVar1 + 0x14);\n  uVar11 = *(uint *)(iVar1 + 0x20);\n  iVar12 = *(int *)(iVar1 + 0x24);\n  uVar13 = *(uint *)(iVar1 + 0x18);\n  iVar14 = *(int *)(iVar1 + 0x1c);\n  uVar17 = *(undefined4 *)(iVar1 + 0x34);\n  uVar4 = *(undefined4 *)(iVar1 + 8);\n  uVar19 = *(undefined4 *)(iVar1 + 0xc);\n  uVar15 = *(undefined4 *)(iVar1 + 0x30);\n  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);\n  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);\n  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);\n  if (iVar5 == 8) {\n    return uVar4;\n  }\nLAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));\n  return uVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined4 uVar15;" (type_identifier "undefined4") (identifier "uVar15") (; ";")) (declaration "undefined4 uVar16;" (type_identifier "undefined4") (identifier "uVar16") (; ";")) (declaration "undefined4 uVar17;" (type_identifier "undefined4") (identifier "uVar17") (; ";")) (declaration "undefined4 uVar18;" (type_identifier "undefined4") (identifier "uVar18") (; ";")) (declaration "undefined4 uVar19;" (type_identifier "undefined4") (identifier "uVar19") (; ";")) (declaration "undefined4 local_20 [3];" (type_identifier "undefined4") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" (identifier "bVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0xbf5d9;" (assignment_expression "uStack_14 = 0xbf5d9" (identifier "uStack_14") (= "=") (number_literal "0xbf5d9")) (; ";")) (expression_statement "iVar5 = *(int *)(*param_3 + 4);" (assignment_expression "iVar5 = *(int *)(*param_3 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(*param_3 + 4)" (* "*") (cast_expression "(int *)(*param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + 4)" (( "(") (binary_expression "*param_3 + 4" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "cVar2 = FUN_00084420(iVar5);" (assignment_expression "cVar2 = FUN_00084420(iVar5)" (identifier "cVar2") (= "=") (call_expression "FUN_00084420(iVar5)" (identifier "FUN_00084420") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n    return 0;\n  }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(int *)(DAT_003af408 + 8) == 0) {\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }" (if "if") (parenthesized_expression "(*(int *)(DAT_003af408 + 8) == 0)" (( "(") (binary_expression "*(int *)(DAT_003af408 + 8) == 0" (pointer_expression "*(int *)(DAT_003af408 + 8)" (* "*") (cast_expression "(int *)(DAT_003af408 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_003af408 + 8)" (( "(") (binary_expression "DAT_003af408 + 8" (identifier "DAT_003af408") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);\n  }" ({ "{") (expression_statement "FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_0007d010("../../gold/parameters.h",0x5c,"options",0)" (identifier "FUN_0007d010") (argument_list "("../../gold/parameters.h",0x5c,"options",0)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0'" (pointer_expression "*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d)" (* "*") (cast_expression "(char *)(*(int *)(DAT_003af408 + 8) + 0x192d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_003af408 + 8) + 0x192d)" (( "(") (binary_expression "*(int *)(DAT_003af408 + 8) + 0x192d" (pointer_expression "*(int *)(DAT_003af408 + 8)" (* "*") (cast_expression "(int *)(DAT_003af408 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_003af408 + 8)" (( "(") (binary_expression "DAT_003af408 + 8" (identifier "DAT_003af408") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x192d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    bVar8 = iVar5 == 0;\n    bVar9 = iVar5 == 1;\n    if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }\n  }" ({ "{") (expression_statement "bVar8 = iVar5 == 0;" (assignment_expression "bVar8 = iVar5 == 0" (identifier "bVar8") (= "=") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0"))) (; ";")) (expression_statement "bVar9 = iVar5 == 1;" (assignment_expression "bVar9 = iVar5 == 1" (identifier "bVar9") (= "=") (binary_expression "iVar5 == 1" (identifier "iVar5") (== "==") (number_literal "1"))) (; ";")) (if_statement "if (bVar9) {\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n      iVar5 = 0xb;\n      pbVar6 = param_2;\n      pbVar7 = (byte *)".gdb_index";\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }\n      iVar5 = *param_3;\n      uVar16 = *(undefined4 *)(iVar5 + 0x10);\n      uVar18 = *(undefined4 *)(iVar5 + 0x14);\n      uVar11 = *(uint *)(iVar5 + 0x20);\n      iVar12 = *(int *)(iVar5 + 0x24);\n      uVar13 = *(uint *)(iVar5 + 0x18);\n      iVar14 = *(int *)(iVar5 + 0x1c);\n      uVar4 = *(undefined4 *)(iVar5 + 8);\n      uVar17 = *(undefined4 *)(iVar5 + 0xc);\n      uVar19 = *(undefined4 *)(iVar5 + 0x34);\n      uVar15 = *(undefined4 *)(iVar5 + 0x30);\n      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);\n      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);\n      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);\n      goto LAB_000bf795;\n    }" ({ "{") (expression_statement "iVar5 = 0xb;" (assignment_expression "iVar5 = 0xb" (identifier "iVar5") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "pbVar6 = param_2;" (assignment_expression "pbVar6 = param_2" (identifier "pbVar6") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar7 = (byte *)".gdb_index";" (assignment_expression "pbVar7 = (byte *)".gdb_index"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".gdb_index"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".gdb_index"" (" """) (string_content ".gdb_index") (" """)))) (; ";")) (do_statement "do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);" (do "do") (compound_statement "{\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" (identifier "bVar8") (= "=") (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar10 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar10 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (if_statement "if ((!bVar8 && !bVar9) == bVar8) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((!bVar8 && !bVar9) == bVar8)" (( "(") (binary_expression "(!bVar8 && !bVar9) == bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" (( "(") (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" (! "!") (identifier "bVar8")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar8")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar5 = *param_3;" (assignment_expression "iVar5 = *param_3" (identifier "iVar5") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "uVar16 = *(undefined4 *)(iVar5 + 0x10)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar18 = *(undefined4 *)(iVar5 + 0x14);" (assignment_expression "uVar18 = *(undefined4 *)(iVar5 + 0x14)" (identifier "uVar18") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar11 = *(uint *)(iVar5 + 0x20);" (assignment_expression "uVar11 = *(uint *)(iVar5 + 0x20)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x20)" (* "*") (cast_expression "(uint *)(iVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x20)" (( "(") (binary_expression "iVar5 + 0x20" (identifier "iVar5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar12 = *(int *)(iVar5 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar5 + 0x24)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar5 + 0x24)" (* "*") (cast_expression "(int *)(iVar5 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x24)" (( "(") (binary_expression "iVar5 + 0x24" (identifier "iVar5") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar13 = *(uint *)(iVar5 + 0x18);" (assignment_expression "uVar13 = *(uint *)(iVar5 + 0x18)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x18)" (* "*") (cast_expression "(uint *)(iVar5 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "iVar14 = *(int *)(iVar5 + 0x1c);" (assignment_expression "iVar14 = *(int *)(iVar5 + 0x1c)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(iVar5 + 0x1c)" (* "*") (cast_expression "(int *)(iVar5 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x1c)" (( "(") (binary_expression "iVar5 + 0x1c" (identifier "iVar5") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(undefined4 *)(iVar5 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar5 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar17 = *(undefined4 *)(iVar5 + 0xc);" (assignment_expression "uVar17 = *(undefined4 *)(iVar5 + 0xc)" (identifier "uVar17") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar19 = *(undefined4 *)(iVar5 + 0x34);" (assignment_expression "uVar19 = *(undefined4 *)(iVar5 + 0x34)" (identifier "uVar19") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0x34)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x34)" (( "(") (binary_expression "iVar5 + 0x34" (identifier "iVar5") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar15 = *(undefined4 *)(iVar5 + 0x30);" (assignment_expression "uVar15 = *(undefined4 *)(iVar5 + 0x30)" (identifier "uVar15") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x30)" (( "(") (binary_expression "iVar5 + 0x30" (identifier "iVar5") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19);" (assignment_expression "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" (identifier "uVar3") (= "=") (call_expression "FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" (identifier "FUN_00187d90") (argument_list "(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,\n                           uVar15,uVar19)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) (, ",") (identifier "param_2") (, ",") (number_literal "1") (, ",") (identifier "local_20") (, ",") (identifier "uVar11") (, ",") (identifier "iVar12") (, ",") (identifier "uVar13") (, ",") (identifier "iVar14") (, ",") (identifier "uVar16") (, ",") (identifier "uVar18") (, ",") (identifier "uVar15") (, ",") (identifier "uVar19") () ")")))) (; ";")) (expression_statement "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);" (assignment_expression "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" (identifier "uVar4") (= "=") (call_expression "FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" (identifier "FUN_000b4b00") (argument_list "(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") (, ",") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "uVar4") (, ",") (identifier "uVar17") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);" (call_expression "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19)" (identifier "FUN_00105670") (argument_list "(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar16") (, ",") (identifier "uVar18") (, ",") (identifier "uVar13") (, ",") (identifier "iVar14") (, ",") (identifier "uVar11") (, ",") (identifier "iVar12") (, ",") (identifier "uVar15") (, ",") (identifier "uVar19") () ")"))) (; ";")) (goto_statement "goto LAB_000bf795;" (goto "goto") (statement_identifier "LAB_000bf795") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar1 = *param_3;" (assignment_expression "iVar1 = *param_3" (identifier "iVar1") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(iVar1 + 0x10);" (assignment_expression "uVar16 = *(undefined4 *)(iVar1 + 0x10)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar18 = *(undefined4 *)(iVar1 + 0x14);" (assignment_expression "uVar18 = *(undefined4 *)(iVar1 + 0x14)" (identifier "uVar18") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar11 = *(uint *)(iVar1 + 0x20);" (assignment_expression "uVar11 = *(uint *)(iVar1 + 0x20)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x20)" (* "*") (cast_expression "(uint *)(iVar1 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x20)" (( "(") (binary_expression "iVar1 + 0x20" (identifier "iVar1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar12 = *(int *)(iVar1 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar1 + 0x24)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar1 + 0x24)" (* "*") (cast_expression "(int *)(iVar1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x24)" (( "(") (binary_expression "iVar1 + 0x24" (identifier "iVar1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar13 = *(uint *)(iVar1 + 0x18);" (assignment_expression "uVar13 = *(uint *)(iVar1 + 0x18)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x18)" (* "*") (cast_expression "(uint *)(iVar1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "iVar14 = *(int *)(iVar1 + 0x1c);" (assignment_expression "iVar14 = *(int *)(iVar1 + 0x1c)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(iVar1 + 0x1c)" (* "*") (cast_expression "(int *)(iVar1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1c)" (( "(") (binary_expression "iVar1 + 0x1c" (identifier "iVar1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "uVar17 = *(undefined4 *)(iVar1 + 0x34);" (assignment_expression "uVar17 = *(undefined4 *)(iVar1 + 0x34)" (identifier "uVar17") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x34)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x34)" (( "(") (binary_expression "iVar1 + 0x34" (identifier "iVar1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(undefined4 *)(iVar1 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar1 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar19 = *(undefined4 *)(iVar1 + 0xc);" (assignment_expression "uVar19 = *(undefined4 *)(iVar1 + 0xc)" (identifier "uVar19") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar15 = *(undefined4 *)(iVar1 + 0x30);" (assignment_expression "uVar15 = *(undefined4 *)(iVar1 + 0x30)" (identifier "uVar15") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x30)" (( "(") (binary_expression "iVar1 + 0x30" (identifier "iVar1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18);" (assignment_expression "uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" (identifier "uVar3") (= "=") (call_expression "FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" (identifier "FUN_00187d90") (argument_list "(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,\n                       uVar16,uVar18)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) (, ",") (identifier "param_2") (, ",") (number_literal "1") (, ",") (identifier "local_20") (, ",") (identifier "uVar11") (, ",") (identifier "iVar12") (, ",") (identifier "uVar13") (, ",") (identifier "iVar14") (, ",") (identifier "uVar15") (, ",") (identifier "uVar17") (, ",") (identifier "uVar16") (, ",") (identifier "uVar18") () ")")))) (; ";")) (expression_statement "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);" (assignment_expression "uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" (identifier "uVar4") (= "=") (call_expression "FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" (identifier "FUN_000b4b00") (argument_list "(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") (, ",") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "iVar5") (, ",") (identifier "uVar4") (, ",") (identifier "uVar19") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);" (call_expression "FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17)" (identifier "FUN_00105670") (argument_list "(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar16") (, ",") (identifier "uVar18") (, ",") (identifier "uVar13") (, ",") (identifier "iVar14") (, ",") (identifier "uVar11") (, ",") (identifier "iVar12") (, ",") (identifier "uVar15") (, ",") (identifier "uVar17") () ")"))) (; ";")) (if_statement "if (iVar5 == 8) {\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(iVar5 == 8)" (( "(") (binary_expression "iVar5 == 8" (identifier "iVar5") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n    return uVar4;\n  }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (labeled_statement "LAB_000bf795:\n  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));" (statement_identifier "LAB_000bf795") (: ":") (expression_statement "FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));" (call_expression "FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13))" (identifier "FUN_000ab0f0") (argument_list "(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,\n               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13))" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) (, ",") (identifier "uVar13") (, ",") (identifier "iVar14") (, ",") (binary_expression "uVar11 + uVar13" (identifier "uVar11") (+ "+") (identifier "uVar13")) (, ",") (binary_expression "iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13)" (binary_expression "iVar12 + iVar14" (identifier "iVar12") (+ "+") (identifier "iVar14")) (+ "+") (cast_expression "(uint)CARRY4(uVar11,uVar13)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar11,uVar13)" (identifier "CARRY4") (argument_list "(uVar11,uVar13)" (( "(") (identifier "uVar11") (, ",") (identifier "uVar13") () ")"))))) () ")"))) (; ";"))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original name: init_fixed_output_section<64, false>
   DWARF original prototype: Output_section * init_fixed_output_section<64,_false>(Layout * this,
   char * name, Shdr<64,_false> * shdr) */

type_5 * __thiscall
gold::Layout::init_fixed_output_section<64,_false>(Layout *this,var_10 *name,Shdr<64,_false> *shdr)

{
  type_1 var_4;
  var_1<64> *pSVar1;
  type_2 EVar2;
  uint64_t uVar3;
  type_3 EVar4;
  type_4 EVar5;
  uint64_t uVar6;
  bool var_8;
  char *pcVar8;
  type_5 *this_00;
  int var_5;
  type_6 *var_6;
  type_6 *var_7;
  bool bVar12;
  type_6 bVar13;
  char *local_44;
  type_7 name_key;
  type_8 uStack_14;
  
  bVar13 = 0;
  uStack_14 = 0xbf5d9;
  var_4 = shdr->p_->var_4;
  var_8 = var_2(var_4);
  if (!var_8) {
    return (type_5 *)0x0;
  }
  if (parameters->options_ == (type_9 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("../../gold/parameters.h",0x5c,"options");
  }
  if ((parameters->options_->gdb_index_).value != false) {
    var_8 = var_4 == 0;
    bVar12 = var_4 == 1;
    if (bVar12) {
      var_5 = 0xb;
      var_6 = (type_6 *)name;
      var_7 = (type_6 *)".gdb_index";
      do {
        if (var_5 == 0) break;
        var_5 = var_5 + -1;
        var_8 = *var_6 < *var_7;
        bVar12 = *var_6 == *var_7;
        var_6 = var_6 + (type_1)bVar13 * -2 + 1;
        var_7 = var_7 + (type_1)bVar13 * -2 + 1;
      } while (bVar12);
      if ((!var_8 && !bVar12) == var_8) {
        return (type_5 *)0x0;
      }
      pSVar1 = shdr->p_;
      uVar3 = pSVar1->sh_addr;
      EVar5 = pSVar1->sh_size;
      local_44 = *(char **)&pSVar1->sh_offset;
      EVar4 = pSVar1->sh_offset;
      EVar2 = pSVar1->sh_flags;
      uVar6 = pSVar1->sh_addralign;
      pcVar8 = var_9<var_10>::var_11(&this->namepool_,name,true,&name_key);
      this_00 = var_12(this,pcVar8,name_key,1,EVar2,ORDER_INVALID,false);
      Output_section::var_13(this_00,uVar3,EVar4,EVar5,uVar6);
      goto LAB_000bf795;
    }
  }
  pSVar1 = shdr->p_;
  uVar3 = pSVar1->sh_addr;
  EVar5 = pSVar1->sh_size;
  local_44 = *(char **)&pSVar1->sh_offset;
  EVar4 = pSVar1->sh_offset;
  EVar2 = pSVar1->sh_flags;
  uVar6 = pSVar1->sh_addralign;
  pcVar8 = var_9<var_10>::var_11(&this->namepool_,name,true,&name_key);
  this_00 = var_12(this,pcVar8,name_key,var_4,EVar2,ORDER_INVALID,false);
  Output_section::var_13(this_00,uVar3,EVar4,EVar5,uVar6);
  if (var_4 == 8) {
    return this_00;
  }
LAB_000bf795:
  Free_list::var_14(&this->free_list_,local_44);
  return this_00;
}


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

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

undefined4 MASKED(int param_1,byte *param_2,int *param_3)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  uint uVar11;
  int iVar12;
  uint uVar13;
  int iVar14;
  undefined4 uVar15;
  undefined4 uVar16;
  undefined4 uVar17;
  undefined4 uVar18;
  undefined4 uVar19;
  undefined4 local_20 [3];
  undefined4 uStack_14;
  
  bVar10 = 0;
  uStack_14 = 0xbf5d9;
  iVar5 = *(int *)(*param_3 + 4);
  cVar2 = FUN_00084420(iVar5);
  if (cVar2 == '\0') {
    return 0;
  }
  if (*(int *)(DAT_003af408 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0007d010("../../gold/parameters.h",0x5c,"options",0);
  }
  if (*(char *)(*(int *)(DAT_003af408 + 8) + 0x192d) != '\0') {
    bVar8 = iVar5 == 0;
    bVar9 = iVar5 == 1;
    if (bVar9) {
      iVar5 = 0xb;
      pbVar6 = param_2;
      pbVar7 = (byte *)".gdb_index";
      do {
        if (iVar5 == 0) break;
        iVar5 = iVar5 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;
      } while (bVar9);
      if ((!bVar8 && !bVar9) == bVar8) {
        return 0;
      }
      iVar5 = *param_3;
      uVar16 = *(undefined4 *)(iVar5 + 0x10);
      uVar18 = *(undefined4 *)(iVar5 + 0x14);
      uVar11 = *(uint *)(iVar5 + 0x20);
      iVar12 = *(int *)(iVar5 + 0x24);
      uVar13 = *(uint *)(iVar5 + 0x18);
      iVar14 = *(int *)(iVar5 + 0x1c);
      uVar4 = *(undefined4 *)(iVar5 + 8);
      uVar17 = *(undefined4 *)(iVar5 + 0xc);
      uVar19 = *(undefined4 *)(iVar5 + 0x34);
      uVar15 = *(undefined4 *)(iVar5 + 0x30);
      uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar16,uVar18,
                           uVar15,uVar19);
      uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],1,uVar4,uVar17,0,0);
      FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar19);
      goto LAB_000bf795;
    }
  }
  iVar1 = *param_3;
  uVar16 = *(undefined4 *)(iVar1 + 0x10);
  uVar18 = *(undefined4 *)(iVar1 + 0x14);
  uVar11 = *(uint *)(iVar1 + 0x20);
  iVar12 = *(int *)(iVar1 + 0x24);
  uVar13 = *(uint *)(iVar1 + 0x18);
  iVar14 = *(int *)(iVar1 + 0x1c);
  uVar17 = *(undefined4 *)(iVar1 + 0x34);
  uVar4 = *(undefined4 *)(iVar1 + 8);
  uVar19 = *(undefined4 *)(iVar1 + 0xc);
  uVar15 = *(undefined4 *)(iVar1 + 0x30);
  uVar3 = FUN_00187d90(param_1 + 8,param_2,1,local_20,uVar11,iVar12,uVar13,iVar14,uVar15,uVar17,
                       uVar16,uVar18);
  uVar4 = FUN_000b4b00(param_1,uVar3,local_20[0],iVar5,uVar4,uVar19,0,0);
  FUN_00105670(uVar4,uVar16,uVar18,uVar13,iVar14,uVar11,iVar12,uVar15,uVar17);
  if (iVar5 == 8) {
    return uVar4;
  }
LAB_000bf795:
  FUN_000ab0f0(param_1 + 0x248,uVar13,iVar14,uVar11 + uVar13,
               iVar12 + iVar14 + (uint)CARRY4(uVar11,uVar13));
  return uVar4;
}

