
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool include_linkonce_section(Sized_relobj_file<64,_false> * this,
   Layout * layout, uint index, char * name, Shdr<64,_false> * shdr) */

bool __thiscall
gold::Sized_relobj_file<64,_false>::include_linkonce_section
          (Sized_relobj_file<64,_false> *this,Layout *layout,uint index,char *name,
          Shdr<64,_false> *shdr)

{
  Kept_section *kept1;
  Kept_section *kept2;
  string sig1;
  string sig2;
  
}



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

uint FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)

{
  byte *pbVar1;
  size_t sVar2;
  uint uVar3;
  uint uVar4;
  char *pcVar5;
  int iVar6;
  undefined4 *puVar7;
  int *piVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  int iStack_b0;
  int local_ac;
  int local_a8;
  undefined1 *local_a0;
  undefined1 *local_9c;
  undefined **local_98;
  undefined1 local_94 [16];
  int *local_84;
  int *local_80;
  undefined1 *local_7c [2];
  undefined1 local_74 [16];
  undefined1 *local_64 [2];
  undefined1 local_5c [16];
  undefined4 local_4c;
  int local_48;
  int local_44;
  undefined4 local_3c;
  undefined1 local_38;
  undefined4 local_34;
  int local_30;
  int local_2c;
  int *local_28;
  undefined4 local_24;
  undefined1 local_20;
  undefined4 uStack_14;
  
  iVar6 = 0x10;
  uStack_14 = 0x29ce40;
  local_98 = &__DT_PLTGOT;
  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;
  bVar11 = &stack0x00000000 == (undefined1 *)0xac;
  local_a8 = *(int *)(*param_5 + 0x24);
  local_ac = *(int *)(*param_5 + 0x20);
  pbVar9 = param_4;
  pbVar1 = (byte *)".gnu.linkonce.t.";
  do {
    if (iVar6 == 0) break;
    iVar6 = iVar6 + -1;
    bVar10 = *pbVar9 < *pbVar1;
    bVar11 = *pbVar9 == *pbVar1;
    pbVar9 = pbVar9 + 1;
    pbVar1 = pbVar1 + 1;
  } while (bVar11);
  if ((!bVar10 && !bVar11) == bVar10) {
    pbVar9 = param_4 + 0x10;
  }
  else {
    pcVar5 = strrchr((char *)param_4,0x2e);
    pbVar9 = (byte *)(pcVar5 + 1);
  }
  piVar8 = &local_ac;
  local_9c = local_74;
  pbVar1 = (byte *)0xffffffff;
  local_7c[0] = local_9c;
  if (pbVar9 != (byte *)0x0) {
    sVar2 = strlen((char *)pbVar9);
    pbVar1 = pbVar9 + sVar2;
  }
  iStack_b0 = 0;
  FUN_00072b90(local_7c,pbVar9,pbVar1);
  local_a0 = local_5c;
  local_64[0] = local_a0;
  sVar2 = strlen((char *)param_4);
  iStack_b0 = 0;
                    /* try { // try from 0029cee8 to 0029ceec has its CatchHandler @ 0029d0e9 */
  FUN_00072b90(local_64,param_4,param_4 + sVar2);
                    /* try { // try from 0029cf08 to 0029d0e4 has its CatchHandler @ 0029d0e5 */
  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);
  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);
  if ((char)uVar4 == '\0') {
    piVar8 = &local_ac;
    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;
    local_4c = param_3;
    local_48 = local_ac;
    local_3c = 0;
    local_44 = local_a8;
    puVar7 = &local_4c;
    local_38 = 0;
  }
  else {
    if ((char)uVar3 != '\0') {
      if ((char)local_84[2] != '\0') {
                    /* WARNING: Subroutine does not return */
        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);
      }
      local_84[3] = local_ac;
      local_84[4] = local_a8;
      if ((char)local_80[2] != '\0') {
        iStack_b0 = local_ac;
                    /* WARNING: Subroutine does not return */
        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);
      }
      local_80[3] = local_ac;
      local_80[4] = local_a8;
      goto LAB_0029cf4f;
    }
    piVar8 = &local_ac;
    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;
    local_20 = 0;
    local_24 = 0;
    local_34 = param_3;
    local_30 = local_ac;
    puVar7 = &local_34;
    local_2c = local_a8;
    local_28 = local_84;
  }
  FUN_00299c70(local_94,param_1 + 0x104,puVar7);
  piVar8 = &iStack_b0;
LAB_0029cf4f:
  if (local_64[0] != local_a0) {
    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];
    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;
    FUN_003ae080();
  }
  if (local_7c[0] != local_9c) {
    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];
    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;
    FUN_003ae080();
  }
  return uVar3 & uVar4;
}


PUSH EBP
MOV ECX,0x10
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x34d1c0
SUB ESP,0x9c
MOV ESI,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EBP + 0x18]
MOV EAX,dword ptr [EAX]
LEA EDI,[EBX + 0xffea03f2]
MOV EDX,dword ptr [EAX + 0x24]
MOV EAX,dword ptr [EAX + 0x20]
MOV dword ptr [EBP + 0xffffff6c],EBX
CMPSB.REPE ES:EDI,ESI
MOV dword ptr [EBP + 0xffffff58],EAX
MOV dword ptr [EBP + 0xffffff5c],EDX
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0029cf98
MOV EAX,dword ptr [EBP + 0x14]
LEA ESI,[EAX + 0x10]
LEA EAX,[EBP + -0x70]
MOV dword ptr [EBP + 0xffffff68],EAX
MOV dword ptr [EBP + -0x78],EAX
MOV EAX,0xffffffff
TEST ESI,ESI
JZ 0x0029ceb0
SUB ESP,0xc
MOV EBX,dword ptr [EBP + 0xffffff6c]
PUSH ESI
CALL 0x00039330
ADD ESP,0x10
ADD EAX,ESI
LEA EDI,[EBP + -0x78]
PUSH 0x0
PUSH EAX
PUSH ESI
LEA ESI,[EBP + -0x60]
PUSH EDI
CALL 0x00072b90
LEA EAX,[EBP + -0x58]
MOV EBX,dword ptr [EBP + 0xffffff6c]
MOV dword ptr [EBP + 0xffffff64],EAX
MOV dword ptr [EBP + -0x60],EAX
POP EAX
PUSH dword ptr [EBP + 0x14]
CALL 0x00039330
ADD ESP,0x10
ADD EAX,dword ptr [EBP + 0x14]
PUSH 0x0
PUSH EAX
PUSH dword ptr [EBP + 0x14]
PUSH ESI
CALL 0x00072b90
ADD ESP,0xc
LEA EAX,[EBP + -0x80]
MOV EBX,dword ptr [EBP + 0xffffff6c]
PUSH EAX
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0x8]
PUSH EDI
PUSH dword ptr [EBP + 0xc]
CALL 0x00278ce0
ADD ESP,0x1c
MOV EDI,EAX
LEA EAX,[EBP + -0x7c]
MOV EBX,dword ptr [EBP + 0xffffff6c]
PUSH EAX
PUSH 0x1
PUSH 0x0
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0x8]
PUSH ESI
PUSH dword ptr [EBP + 0xc]
CALL 0x00278ce0
MOV EBX,EAX
ADD ESP,0x20
TEST AL,AL
JNZ 0x0029cfc0
MOV EAX,dword ptr [EBP + -0x7c]
MOV EDX,dword ptr [EAX]
TEST EDX,EDX
JZ 0x0029cf4f
CMP byte ptr [EAX + 0x8],0x0
JZ 0x0029d070
AND EDI,EBX
MOV EAX,dword ptr [EBP + -0x60]
CMP EAX,dword ptr [EBP + 0xffffff64]
JZ 0x0029cf6e
SUB ESP,0xc
MOV EBX,dword ptr [EBP + 0xffffff6c]
PUSH EAX
CALL 0x003ae080
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x78]
CMP EAX,dword ptr [EBP + 0xffffff68]
JZ 0x0029cf8b
SUB ESP,0xc
MOV EBX,dword ptr [EBP + 0xffffff6c]
PUSH EAX
CALL 0x003ae080
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
MOV EBX,dword ptr [EBP + 0xffffff6c]
PUSH 0x2e
PUSH dword ptr [EBP + 0x14]
CALL 0x00039510
ADD ESP,0x10
LEA ESI,[EAX + 0x1]
JMP 0x0029ce87
MOV EDX,EDI
MOV EAX,dword ptr [EBP + -0x80]
TEST DL,DL
JNZ 0x0029d030
MOV ESI,dword ptr [EAX]
TEST ESI,ESI
JZ 0x0029cf4f
CMP byte ptr [EAX + 0x8],0x0
JZ 0x0029cf4f
MOV ECX,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [EBP + 0xffffff58]
MOV byte ptr [EBP + -0x1c],0x0
SUB ESP,0x4
MOV dword ptr [EBP + -0x20],0x0
MOV dword ptr [EBP + -0x30],ECX
MOV ECX,dword ptr [EBP + 0xffffff5c]
MOV dword ptr [EBP + -0x2c],EDX
LEA EDX,[EBP + -0x30]
MOV dword ptr [EBP + -0x28],ECX
MOV dword ptr [EBP + -0x24],EAX
LEA EAX,[EBP + 0xffffff70]
MOV ECX,dword ptr [EBP + 0x8]
PUSH EDX
LEA EDX,[ECX + 0x104]
PUSH EDX
PUSH EAX
CALL 0x00299c70
ADD ESP,0xc
JMP 0x0029cf4f
CMP byte ptr [EAX + 0x8],0x0
JNZ 0x0029d0c6
MOV EDX,dword ptr [EBP + 0xffffff58]
MOV ECX,dword ptr [EBP + 0xffffff5c]
MOV dword ptr [EAX + 0xc],EDX
MOV dword ptr [EAX + 0x10],ECX
MOV EAX,dword ptr [EBP + -0x7c]
CMP byte ptr [EAX + 0x8],0x0
JNZ 0x0029d0a7
MOV EDX,dword ptr [EBP + 0xffffff58]
MOV ECX,dword ptr [EBP + 0xffffff5c]
MOV dword ptr [EAX + 0xc],EDX
MOV dword ptr [EAX + 0x10],ECX
JMP 0x0029cf4f
MOV ECX,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [EBP + 0xffffff58]
MOV dword ptr [EBP + -0x3c],EAX
SUB ESP,0x4
MOV dword ptr [EBP + -0x38],0x0
LEA EAX,[EBP + 0xffffff70]
MOV dword ptr [EBP + -0x48],ECX
MOV ECX,dword ptr [EBP + 0xffffff5c]
MOV dword ptr [EBP + -0x44],EDX
LEA EDX,[EBP + -0x48]
MOV dword ptr [EBP + -0x40],ECX
MOV byte ptr [EBP + -0x34],0x0
JMP 0x0029d00f
MOV EBX,dword ptr [EBP + 0xffffff6c]
PUSH EDX
LEA EAX,[EBX + 0xffea2a20]
PUSH EAX
LEA EAX,[EBX + 0xffe873ee]
PUSH 0x163
PUSH EAX
CALL 0x002446e0
MOV EBX,dword ptr [EBP + 0xffffff6c]
PUSH ECX
LEA EAX,[EBX + 0xffea2a20]
PUSH EAX
LEA EAX,[EBX + 0xffe873ee]
PUSH 0x163
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)\n\n{\n  byte *pbVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  int iStack_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 *local_a0;\n  undefined1 *local_9c;\n  undefined **local_98;\n  undefined1 local_94 [16];\n  int *local_84;\n  int *local_80;\n  undefined1 *local_7c [2];\n  undefined1 local_74 [16];\n  undefined1 *local_64 [2];\n  undefined1 local_5c [16];\n  undefined4 local_4c;\n  int local_48;\n  int local_44;\n  undefined4 local_3c;\n  undefined1 local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  int *local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined4 uStack_14;\n  \n  iVar6 = 0x10;\n  uStack_14 = 0x29ce40;\n  local_98 = &__DT_PLTGOT;\n  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;\n  bVar11 = &stack0x00000000 == (undefined1 *)0xac;\n  local_a8 = *(int *)(*param_5 + 0x24);\n  local_ac = *(int *)(*param_5 + 0x20);\n  pbVar9 = param_4;\n  pbVar1 = (byte *)".gnu.linkonce.t.";\n  do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);\n  if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }\n  piVar8 = &local_ac;\n  local_9c = local_74;\n  pbVar1 = (byte *)0xffffffff;\n  local_7c[0] = local_9c;\n  if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }\n  iStack_b0 = 0;\n  FUN_00072b90(local_7c,pbVar9,pbVar1);\n  local_a0 = local_5c;\n  local_64[0] = local_a0;\n  sVar2 = strlen((char *)param_4);\n  iStack_b0 = 0;\n                    /* try { // try from 0029cee8 to 0029ceec has its CatchHandler @ 0029d0e9 */\n  FUN_00072b90(local_64,param_4,param_4 + sVar2);\n                    /* try { // try from 0029cf08 to 0029d0e4 has its CatchHandler @ 0029d0e5 */\n  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);\n  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);\n  if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }\n  FUN_00299c70(local_94,param_1 + 0x104,puVar7);\n  piVar8 = &iStack_b0;\nLAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }\n  if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }\n  return uVar3 & uVar4;\n}\n\n" comment (function_definition "uint FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)\n\n{\n  byte *pbVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  int iStack_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 *local_a0;\n  undefined1 *local_9c;\n  undefined **local_98;\n  undefined1 local_94 [16];\n  int *local_84;\n  int *local_80;\n  undefined1 *local_7c [2];\n  undefined1 local_74 [16];\n  undefined1 *local_64 [2];\n  undefined1 local_5c [16];\n  undefined4 local_4c;\n  int local_48;\n  int local_44;\n  undefined4 local_3c;\n  undefined1 local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  int *local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined4 uStack_14;\n  \n  iVar6 = 0x10;\n  uStack_14 = 0x29ce40;\n  local_98 = &__DT_PLTGOT;\n  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;\n  bVar11 = &stack0x00000000 == (undefined1 *)0xac;\n  local_a8 = *(int *)(*param_5 + 0x24);\n  local_ac = *(int *)(*param_5 + 0x20);\n  pbVar9 = param_4;\n  pbVar1 = (byte *)".gnu.linkonce.t.";\n  do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);\n  if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }\n  piVar8 = &local_ac;\n  local_9c = local_74;\n  pbVar1 = (byte *)0xffffffff;\n  local_7c[0] = local_9c;\n  if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }\n  iStack_b0 = 0;\n  FUN_00072b90(local_7c,pbVar9,pbVar1);\n  local_a0 = local_5c;\n  local_64[0] = local_a0;\n  sVar2 = strlen((char *)param_4);\n  iStack_b0 = 0;\n                    /* try { // try from 0029cee8 to 0029ceec has its CatchHandler @ 0029d0e9 */\n  FUN_00072b90(local_64,param_4,param_4 + sVar2);\n                    /* try { // try from 0029cf08 to 0029d0e4 has its CatchHandler @ 0029d0e5 */\n  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);\n  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);\n  if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }\n  FUN_00299c70(local_94,param_1 + 0x104,puVar7);\n  piVar8 = &iStack_b0;\nLAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }\n  if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }\n  return uVar3 & uVar4;\n}" type_identifier (function_declarator "FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "byte *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  int iStack_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 *local_a0;\n  undefined1 *local_9c;\n  undefined **local_98;\n  undefined1 local_94 [16];\n  int *local_84;\n  int *local_80;\n  undefined1 *local_7c [2];\n  undefined1 local_74 [16];\n  undefined1 *local_64 [2];\n  undefined1 local_5c [16];\n  undefined4 local_4c;\n  int local_48;\n  int local_44;\n  undefined4 local_3c;\n  undefined1 local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  int *local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined4 uStack_14;\n  \n  iVar6 = 0x10;\n  uStack_14 = 0x29ce40;\n  local_98 = &__DT_PLTGOT;\n  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;\n  bVar11 = &stack0x00000000 == (undefined1 *)0xac;\n  local_a8 = *(int *)(*param_5 + 0x24);\n  local_ac = *(int *)(*param_5 + 0x20);\n  pbVar9 = param_4;\n  pbVar1 = (byte *)".gnu.linkonce.t.";\n  do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);\n  if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }\n  piVar8 = &local_ac;\n  local_9c = local_74;\n  pbVar1 = (byte *)0xffffffff;\n  local_7c[0] = local_9c;\n  if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }\n  iStack_b0 = 0;\n  FUN_00072b90(local_7c,pbVar9,pbVar1);\n  local_a0 = local_5c;\n  local_64[0] = local_a0;\n  sVar2 = strlen((char *)param_4);\n  iStack_b0 = 0;\n                    /* try { // try from 0029cee8 to 0029ceec has its CatchHandler @ 0029d0e9 */\n  FUN_00072b90(local_64,param_4,param_4 + sVar2);\n                    /* try { // try from 0029cf08 to 0029d0e4 has its CatchHandler @ 0029d0e5 */\n  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);\n  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);\n  if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }\n  FUN_00299c70(local_94,param_1 + 0x104,puVar7);\n  piVar8 = &iStack_b0;\nLAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }\n  if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }\n  return uVar3 & uVar4;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "int iStack_b0;" primitive_type identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "undefined1 *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "undefined1 *local_9c;" type_identifier (pointer_declarator "*local_9c" * identifier) ;) (declaration "undefined **local_98;" type_identifier (pointer_declarator "**local_98" * (pointer_declarator "*local_98" * identifier)) ;) (declaration "undefined1 local_94 [16];" type_identifier (array_declarator "local_94 [16]" identifier [ number_literal ]) ;) (declaration "int *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "int *local_80;" primitive_type (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined1 *local_7c [2];" type_identifier (pointer_declarator "*local_7c [2]" * (array_declarator "local_7c [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_74 [16];" type_identifier (array_declarator "local_74 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_64 [2];" type_identifier (pointer_declarator "*local_64 [2]" * (array_declarator "local_64 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_5c [16];" type_identifier (array_declarator "local_5c [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined1 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined1 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x29ce40;" (assignment_expression "uStack_14 = 0x29ce40" identifier = number_literal) ;) (expression_statement "local_98 = &__DT_PLTGOT;" (assignment_expression "local_98 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;" (assignment_expression "bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c" identifier = (binary_expression "&stack0xfffffff0 < (undefined1 *)0x9c" (pointer_expression "&stack0xfffffff0" & identifier) < (cast_expression "(undefined1 *)0x9c" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar11 = &stack0x00000000 == (undefined1 *)0xac;" (assignment_expression "bVar11 = &stack0x00000000 == (undefined1 *)0xac" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0xac" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0xac" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "local_a8 = *(int *)(*param_5 + 0x24);" (assignment_expression "local_a8 = *(int *)(*param_5 + 0x24)" identifier = (pointer_expression "*(int *)(*param_5 + 0x24)" * (cast_expression "(int *)(*param_5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) (expression_statement "local_ac = *(int *)(*param_5 + 0x20);" (assignment_expression "local_ac = *(int *)(*param_5 + 0x20)" identifier = (pointer_expression "*(int *)(*param_5 + 0x20)" * (cast_expression "(int *)(*param_5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x20)" ( (binary_expression "*param_5 + 0x20" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) (expression_statement "pbVar9 = param_4;" (assignment_expression "pbVar9 = param_4" identifier = identifier) ;) (expression_statement "pbVar1 = (byte *)".gnu.linkonce.t.";" (assignment_expression "pbVar1 = (byte *)".gnu.linkonce.t."" identifier = (cast_expression "(byte *)".gnu.linkonce.t."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gnu.linkonce.t."" " string_content "))) ;) (do_statement "do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);" do (compound_statement "{\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar9 < *pbVar1;" (assignment_expression "bVar10 = *pbVar9 < *pbVar1" identifier = (binary_expression "*pbVar9 < *pbVar1" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar1" * identifier))) ;) (expression_statement "bVar11 = *pbVar9 == *pbVar1;" (assignment_expression "bVar11 = *pbVar9 == *pbVar1" identifier = (binary_expression "*pbVar9 == *pbVar1" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar1" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar1 = pbVar1 + 1;" (assignment_expression "pbVar1 = pbVar1 + 1" identifier = (binary_expression "pbVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" if (parenthesized_expression "((!bVar10 && !bVar11) == bVar10)" ( (binary_expression "(!bVar10 && !bVar11) == bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n    pbVar9 = param_4 + 0x10;\n  }" { (expression_statement "pbVar9 = param_4 + 0x10;" (assignment_expression "pbVar9 = param_4 + 0x10" identifier = (binary_expression "param_4 + 0x10" identifier + number_literal)) ;) }) (else_clause "else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" else (compound_statement "{\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" { (expression_statement "pcVar5 = strrchr((char *)param_4,0x2e);" (assignment_expression "pcVar5 = strrchr((char *)param_4,0x2e)" identifier = (call_expression "strrchr((char *)param_4,0x2e)" identifier (argument_list "((char *)param_4,0x2e)" ( (cast_expression "(char *)param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "pbVar9 = (byte *)(pcVar5 + 1);" (assignment_expression "pbVar9 = (byte *)(pcVar5 + 1)" identifier = (cast_expression "(byte *)(pcVar5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) }))) (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) ;) (expression_statement "local_9c = local_74;" (assignment_expression "local_9c = local_74" identifier = identifier) ;) (expression_statement "pbVar1 = (byte *)0xffffffff;" (assignment_expression "pbVar1 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_7c[0] = local_9c;" (assignment_expression "local_7c[0] = local_9c" (subscript_expression "local_7c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }" if (parenthesized_expression "(pbVar9 != (byte *)0x0)" ( (binary_expression "pbVar9 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }" { (expression_statement "sVar2 = strlen((char *)pbVar9);" (assignment_expression "sVar2 = strlen((char *)pbVar9)" identifier = (call_expression "strlen((char *)pbVar9)" identifier (argument_list "((char *)pbVar9)" ( (cast_expression "(char *)pbVar9" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pbVar1 = pbVar9 + sVar2;" (assignment_expression "pbVar1 = pbVar9 + sVar2" identifier = (binary_expression "pbVar9 + sVar2" identifier + identifier)) ;) })) (expression_statement "iStack_b0 = 0;" (assignment_expression "iStack_b0 = 0" identifier = number_literal) ;) (expression_statement "FUN_00072b90(local_7c,pbVar9,pbVar1);" (call_expression "FUN_00072b90(local_7c,pbVar9,pbVar1)" identifier (argument_list "(local_7c,pbVar9,pbVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_a0 = local_5c;" (assignment_expression "local_a0 = local_5c" identifier = identifier) ;) (expression_statement "local_64[0] = local_a0;" (assignment_expression "local_64[0] = local_a0" (subscript_expression "local_64[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "sVar2 = strlen((char *)param_4);" (assignment_expression "sVar2 = strlen((char *)param_4)" identifier = (call_expression "strlen((char *)param_4)" identifier (argument_list "((char *)param_4)" ( (cast_expression "(char *)param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iStack_b0 = 0;" (assignment_expression "iStack_b0 = 0" identifier = number_literal) ;) comment (expression_statement "FUN_00072b90(local_64,param_4,param_4 + sVar2);" (call_expression "FUN_00072b90(local_64,param_4,param_4 + sVar2)" identifier (argument_list "(local_64,param_4,param_4 + sVar2)" ( identifier , identifier , (binary_expression "param_4 + sVar2" identifier + identifier) ))) ;) comment (expression_statement "uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);" (assignment_expression "uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84)" identifier = (call_expression "FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84)" identifier (argument_list "(param_2,local_7c,param_1,param_3,0,0,&local_84)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , (pointer_expression "&local_84" & identifier) )))) ;) (expression_statement "uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);" (assignment_expression "uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80)" identifier = (call_expression "FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80)" identifier (argument_list "(param_2,local_64,param_1,param_3,0,1,&local_80)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , (pointer_expression "&local_80" & identifier) )))) ;) (if_statement "if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" if (parenthesized_expression "((char)uVar4 == '\0')" ( (binary_expression "(char)uVar4 == '\0'" (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }" { (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) ;) (if_statement "if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;" if (parenthesized_expression "((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0'))" ( (binary_expression "(*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')" (parenthesized_expression "(*local_80 == 0)" ( (binary_expression "*local_80 == 0" (pointer_expression "*local_80" * identifier) == number_literal) )) || (parenthesized_expression "(piVar8 = &local_ac, (char)local_80[2] != '\0')" ( (comma_expression "piVar8 = &local_ac, (char)local_80[2] != '\0'" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) , (binary_expression "(char)local_80[2] != '\0'" (cast_expression "(char)local_80[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_80[2]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_0029cf4f;" goto statement_identifier ;)) (expression_statement "local_4c = param_3;" (assignment_expression "local_4c = param_3" identifier = identifier) ;) (expression_statement "local_48 = local_ac;" (assignment_expression "local_48 = local_ac" identifier = identifier) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_44 = local_a8;" (assignment_expression "local_44 = local_a8" identifier = identifier) ;) (expression_statement "puVar7 = &local_4c;" (assignment_expression "puVar7 = &local_4c" identifier = (pointer_expression "&local_4c" & identifier)) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" else (compound_statement "{\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" { (if_statement "if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }" if (parenthesized_expression "((char)uVar3 != '\0')" ( (binary_expression "(char)uVar3 != '\0'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }" { (if_statement "if ((char)local_84[2] != '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" if (parenthesized_expression "((char)local_84[2] != '\0')" ( (binary_expression "(char)local_84[2] != '\0'" (cast_expression "(char)local_84[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_84[2]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" { comment (expression_statement "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);" (call_expression "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" identifier (argument_list "((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" ( (binary_expression "(int)local_98 + -0x178c12" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_98 + -0x57578" identifier + number_literal) ))) ;) })) (expression_statement "local_84[3] = local_ac;" (assignment_expression "local_84[3] = local_ac" (subscript_expression "local_84[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_84[4] = local_a8;" (assignment_expression "local_84[4] = local_a8" (subscript_expression "local_84[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" if (parenthesized_expression "((char)local_80[2] != '\0')" ( (binary_expression "(char)local_80[2] != '\0'" (cast_expression "(char)local_80[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_80[2]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iStack_b0 = local_ac;\n                    /* WARNING: Subroutine does not return */\n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" { (expression_statement "iStack_b0 = local_ac;" (assignment_expression "iStack_b0 = local_ac" identifier = identifier) ;) comment (expression_statement "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);" (call_expression "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" identifier (argument_list "((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" ( (binary_expression "(int)local_98 + -0x178c12" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_98 + -0x57578" identifier + number_literal) ))) ;) })) (expression_statement "local_80[3] = local_ac;" (assignment_expression "local_80[3] = local_ac" (subscript_expression "local_80[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_80[4] = local_a8;" (assignment_expression "local_80[4] = local_a8" (subscript_expression "local_80[4]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0029cf4f;" goto statement_identifier ;) })) (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) ;) (if_statement "if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;" if (parenthesized_expression "((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0'))" ( (binary_expression "(*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')" (parenthesized_expression "(*local_84 == 0)" ( (binary_expression "*local_84 == 0" (pointer_expression "*local_84" * identifier) == number_literal) )) || (parenthesized_expression "(piVar8 = &local_ac, (char)local_84[2] == '\0')" ( (comma_expression "piVar8 = &local_ac, (char)local_84[2] == '\0'" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) , (binary_expression "(char)local_84[2] == '\0'" (cast_expression "(char)local_84[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_84[2]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_0029cf4f;" goto statement_identifier ;)) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" identifier = identifier) ;) (expression_statement "local_30 = local_ac;" (assignment_expression "local_30 = local_ac" identifier = identifier) ;) (expression_statement "puVar7 = &local_34;" (assignment_expression "puVar7 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_2c = local_a8;" (assignment_expression "local_2c = local_a8" identifier = identifier) ;) (expression_statement "local_28 = local_84;" (assignment_expression "local_28 = local_84" identifier = identifier) ;) }))) (expression_statement "FUN_00299c70(local_94,param_1 + 0x104,puVar7);" (call_expression "FUN_00299c70(local_94,param_1 + 0x104,puVar7)" identifier (argument_list "(local_94,param_1 + 0x104,puVar7)" ( identifier , (binary_expression "param_1 + 0x104" identifier + number_literal) , identifier ))) ;) (expression_statement "piVar8 = &iStack_b0;" (assignment_expression "piVar8 = &iStack_b0" identifier = (pointer_expression "&iStack_b0" & identifier)) ;) (labeled_statement "LAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" statement_identifier : (if_statement "if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" if (parenthesized_expression "(local_64[0] != local_a0)" ( (binary_expression "local_64[0] != local_a0" (subscript_expression "local_64[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" { (expression_statement "*(undefined1 **)((int)piVar8 + -0x10) = local_64[0];" (assignment_expression "*(undefined1 **)((int)piVar8 + -0x10) = local_64[0]" (pointer_expression "*(undefined1 **)((int)piVar8 + -0x10)" * (cast_expression "(undefined1 **)((int)piVar8 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar8 + -0x10)" ( (binary_expression "(int)piVar8 + -0x10" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_64[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;" (assignment_expression "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b" (pointer_expression "*(undefined4 *)((int)piVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)piVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + -0x14)" ( (binary_expression "(int)piVar8 + -0x14" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }" if (parenthesized_expression "(local_7c[0] != local_9c)" ( (binary_expression "local_7c[0] != local_9c" (subscript_expression "local_7c[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }" { (expression_statement "*(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];" (assignment_expression "*(undefined1 **)((int)piVar8 + -0x10) = local_7c[0]" (pointer_expression "*(undefined1 **)((int)piVar8 + -0x10)" * (cast_expression "(undefined1 **)((int)piVar8 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar8 + -0x10)" ( (binary_expression "(int)piVar8 + -0x10" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_7c[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;" (assignment_expression "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88" (pointer_expression "*(undefined4 *)((int)piVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)piVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + -0x14)" ( (binary_expression "(int)piVar8 + -0x14" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return uVar3 & uVar4;" return (binary_expression "uVar3 & uVar4" identifier & 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/* DWARF original prototype: bool include_linkonce_section(Sized_relobj_file<64,_false> * this,\n   Layout * layout, uint index, char * name, Shdr<64,_false> * shdr) */\n\nbool __thiscall\ngold::Sized_relobj_file<64,_false>::include_linkonce_section\n          (Sized_relobj_file<64,_false> *this,Layout *layout,uint index,char *name,\n          Shdr<64,_false> *shdr)\n\n{\n  Kept_section *kept1;\n  Kept_section *kept2;\n  string sig1;\n  string sig2;\n  \n}\n\n" comment comment comment (declaration "bool __thiscall\ngold::Sized_relobj_file<64,_false>::include_linkonce_section\n          (Sized_relobj_file<64,_false> *this,Layout *layout,uint index,char *name,\n          Shdr<64,_false> *shdr)\n\n{\n  Kept_section *kept1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::include_linkonce_section\n          (Sized_relobj_file<64,_false> *this,Layout *layout,uint index,char *name,\n          Shdr<64,_false> *shdr)\n\n{\n  Kept_section" identifier > : : (function_declarator "include_linkonce_section\n          (Sized_relobj_file<64,_false> *this,Layout *layout,uint index,char *name,\n          Shdr<64,_false> *shdr)" identifier (parameter_list "(Sized_relobj_file<64,_false> *this,Layout *layout,uint index,char *name,\n          Shdr<64,_false> *shdr)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "uint index" type_identifier identifier) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "Shdr" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *shdr" type_identifier (ERROR ">" >) (pointer_declarator "*shdr" * identifier)) ))) { identifier) (pointer_declarator "*kept1" * identifier) ;) (declaration "Kept_section *kept2;" type_identifier (pointer_declarator "*kept2" * identifier) ;) (declaration "string sig1;" type_identifier identifier ;) (declaration "string sig2;" type_identifier identifier ;) (ERROR "}" }))
(translation_unit "uint FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)\n\n{\n  byte *pbVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  int iStack_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 *local_a0;\n  undefined1 *local_9c;\n  undefined **local_98;\n  undefined1 local_94 [16];\n  int *local_84;\n  int *local_80;\n  undefined1 *local_7c [2];\n  undefined1 local_74 [16];\n  undefined1 *local_64 [2];\n  undefined1 local_5c [16];\n  undefined4 local_4c;\n  int local_48;\n  int local_44;\n  undefined4 local_3c;\n  undefined1 local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  int *local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined4 uStack_14;\n  \n  iVar6 = 0x10;\n  uStack_14 = 0x29ce40;\n  local_98 = &__DT_PLTGOT;\n  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;\n  bVar11 = &stack0x00000000 == (undefined1 *)0xac;\n  local_a8 = *(int *)(*param_5 + 0x24);\n  local_ac = *(int *)(*param_5 + 0x20);\n  pbVar9 = param_4;\n  pbVar1 = (byte *)".gnu.linkonce.t.";\n  do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);\n  if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }\n  piVar8 = &local_ac;\n  local_9c = local_74;\n  pbVar1 = (byte *)0xffffffff;\n  local_7c[0] = local_9c;\n  if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }\n  iStack_b0 = 0;\n  FUN_00072b90(local_7c,pbVar9,pbVar1);\n  local_a0 = local_5c;\n  local_64[0] = local_a0;\n  sVar2 = strlen((char *)param_4);\n  iStack_b0 = 0;\n                    \n  FUN_00072b90(local_64,param_4,param_4 + sVar2);\n                    \n  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);\n  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);\n  if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }\n  FUN_00299c70(local_94,param_1 + 0x104,puVar7);\n  piVar8 = &iStack_b0;\nLAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }\n  if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }\n  return uVar3 & uVar4;\n}\n\n" (function_definition "uint FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)\n\n{\n  byte *pbVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  int iStack_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 *local_a0;\n  undefined1 *local_9c;\n  undefined **local_98;\n  undefined1 local_94 [16];\n  int *local_84;\n  int *local_80;\n  undefined1 *local_7c [2];\n  undefined1 local_74 [16];\n  undefined1 *local_64 [2];\n  undefined1 local_5c [16];\n  undefined4 local_4c;\n  int local_48;\n  int local_44;\n  undefined4 local_3c;\n  undefined1 local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  int *local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined4 uStack_14;\n  \n  iVar6 = 0x10;\n  uStack_14 = 0x29ce40;\n  local_98 = &__DT_PLTGOT;\n  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;\n  bVar11 = &stack0x00000000 == (undefined1 *)0xac;\n  local_a8 = *(int *)(*param_5 + 0x24);\n  local_ac = *(int *)(*param_5 + 0x20);\n  pbVar9 = param_4;\n  pbVar1 = (byte *)".gnu.linkonce.t.";\n  do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);\n  if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }\n  piVar8 = &local_ac;\n  local_9c = local_74;\n  pbVar1 = (byte *)0xffffffff;\n  local_7c[0] = local_9c;\n  if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }\n  iStack_b0 = 0;\n  FUN_00072b90(local_7c,pbVar9,pbVar1);\n  local_a0 = local_5c;\n  local_64[0] = local_a0;\n  sVar2 = strlen((char *)param_4);\n  iStack_b0 = 0;\n                    \n  FUN_00072b90(local_64,param_4,param_4 + sVar2);\n                    \n  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);\n  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);\n  if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }\n  FUN_00299c70(local_94,param_1 + 0x104,puVar7);\n  piVar8 = &iStack_b0;\nLAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }\n  if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }\n  return uVar3 & uVar4;\n}" type_identifier (function_declarator "FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "byte *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  int iStack_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 *local_a0;\n  undefined1 *local_9c;\n  undefined **local_98;\n  undefined1 local_94 [16];\n  int *local_84;\n  int *local_80;\n  undefined1 *local_7c [2];\n  undefined1 local_74 [16];\n  undefined1 *local_64 [2];\n  undefined1 local_5c [16];\n  undefined4 local_4c;\n  int local_48;\n  int local_44;\n  undefined4 local_3c;\n  undefined1 local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  int *local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined4 uStack_14;\n  \n  iVar6 = 0x10;\n  uStack_14 = 0x29ce40;\n  local_98 = &__DT_PLTGOT;\n  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;\n  bVar11 = &stack0x00000000 == (undefined1 *)0xac;\n  local_a8 = *(int *)(*param_5 + 0x24);\n  local_ac = *(int *)(*param_5 + 0x20);\n  pbVar9 = param_4;\n  pbVar1 = (byte *)".gnu.linkonce.t.";\n  do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);\n  if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }\n  piVar8 = &local_ac;\n  local_9c = local_74;\n  pbVar1 = (byte *)0xffffffff;\n  local_7c[0] = local_9c;\n  if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }\n  iStack_b0 = 0;\n  FUN_00072b90(local_7c,pbVar9,pbVar1);\n  local_a0 = local_5c;\n  local_64[0] = local_a0;\n  sVar2 = strlen((char *)param_4);\n  iStack_b0 = 0;\n                    \n  FUN_00072b90(local_64,param_4,param_4 + sVar2);\n                    \n  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);\n  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);\n  if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }\n  FUN_00299c70(local_94,param_1 + 0x104,puVar7);\n  piVar8 = &iStack_b0;\nLAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }\n  if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }\n  return uVar3 & uVar4;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "int iStack_b0;" primitive_type identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "undefined1 *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "undefined1 *local_9c;" type_identifier (pointer_declarator "*local_9c" * identifier) ;) (declaration "undefined **local_98;" type_identifier (pointer_declarator "**local_98" * (pointer_declarator "*local_98" * identifier)) ;) (declaration "undefined1 local_94 [16];" type_identifier (array_declarator "local_94 [16]" identifier [ number_literal ]) ;) (declaration "int *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "int *local_80;" primitive_type (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined1 *local_7c [2];" type_identifier (pointer_declarator "*local_7c [2]" * (array_declarator "local_7c [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_74 [16];" type_identifier (array_declarator "local_74 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_64 [2];" type_identifier (pointer_declarator "*local_64 [2]" * (array_declarator "local_64 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_5c [16];" type_identifier (array_declarator "local_5c [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined1 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined1 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x29ce40;" (assignment_expression "uStack_14 = 0x29ce40" identifier = number_literal) ;) (expression_statement "local_98 = &__DT_PLTGOT;" (assignment_expression "local_98 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;" (assignment_expression "bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c" identifier = (binary_expression "&stack0xfffffff0 < (undefined1 *)0x9c" (pointer_expression "&stack0xfffffff0" & identifier) < (cast_expression "(undefined1 *)0x9c" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar11 = &stack0x00000000 == (undefined1 *)0xac;" (assignment_expression "bVar11 = &stack0x00000000 == (undefined1 *)0xac" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0xac" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0xac" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "local_a8 = *(int *)(*param_5 + 0x24);" (assignment_expression "local_a8 = *(int *)(*param_5 + 0x24)" identifier = (pointer_expression "*(int *)(*param_5 + 0x24)" * (cast_expression "(int *)(*param_5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) (expression_statement "local_ac = *(int *)(*param_5 + 0x20);" (assignment_expression "local_ac = *(int *)(*param_5 + 0x20)" identifier = (pointer_expression "*(int *)(*param_5 + 0x20)" * (cast_expression "(int *)(*param_5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x20)" ( (binary_expression "*param_5 + 0x20" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) (expression_statement "pbVar9 = param_4;" (assignment_expression "pbVar9 = param_4" identifier = identifier) ;) (expression_statement "pbVar1 = (byte *)".gnu.linkonce.t.";" (assignment_expression "pbVar1 = (byte *)".gnu.linkonce.t."" identifier = (cast_expression "(byte *)".gnu.linkonce.t."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gnu.linkonce.t."" " string_content "))) ;) (do_statement "do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);" do (compound_statement "{\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar9 < *pbVar1;" (assignment_expression "bVar10 = *pbVar9 < *pbVar1" identifier = (binary_expression "*pbVar9 < *pbVar1" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar1" * identifier))) ;) (expression_statement "bVar11 = *pbVar9 == *pbVar1;" (assignment_expression "bVar11 = *pbVar9 == *pbVar1" identifier = (binary_expression "*pbVar9 == *pbVar1" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar1" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar1 = pbVar1 + 1;" (assignment_expression "pbVar1 = pbVar1 + 1" identifier = (binary_expression "pbVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" if (parenthesized_expression "((!bVar10 && !bVar11) == bVar10)" ( (binary_expression "(!bVar10 && !bVar11) == bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n    pbVar9 = param_4 + 0x10;\n  }" { (expression_statement "pbVar9 = param_4 + 0x10;" (assignment_expression "pbVar9 = param_4 + 0x10" identifier = (binary_expression "param_4 + 0x10" identifier + number_literal)) ;) }) (else_clause "else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" else (compound_statement "{\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" { (expression_statement "pcVar5 = strrchr((char *)param_4,0x2e);" (assignment_expression "pcVar5 = strrchr((char *)param_4,0x2e)" identifier = (call_expression "strrchr((char *)param_4,0x2e)" identifier (argument_list "((char *)param_4,0x2e)" ( (cast_expression "(char *)param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "pbVar9 = (byte *)(pcVar5 + 1);" (assignment_expression "pbVar9 = (byte *)(pcVar5 + 1)" identifier = (cast_expression "(byte *)(pcVar5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) }))) (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) ;) (expression_statement "local_9c = local_74;" (assignment_expression "local_9c = local_74" identifier = identifier) ;) (expression_statement "pbVar1 = (byte *)0xffffffff;" (assignment_expression "pbVar1 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_7c[0] = local_9c;" (assignment_expression "local_7c[0] = local_9c" (subscript_expression "local_7c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }" if (parenthesized_expression "(pbVar9 != (byte *)0x0)" ( (binary_expression "pbVar9 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }" { (expression_statement "sVar2 = strlen((char *)pbVar9);" (assignment_expression "sVar2 = strlen((char *)pbVar9)" identifier = (call_expression "strlen((char *)pbVar9)" identifier (argument_list "((char *)pbVar9)" ( (cast_expression "(char *)pbVar9" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pbVar1 = pbVar9 + sVar2;" (assignment_expression "pbVar1 = pbVar9 + sVar2" identifier = (binary_expression "pbVar9 + sVar2" identifier + identifier)) ;) })) (expression_statement "iStack_b0 = 0;" (assignment_expression "iStack_b0 = 0" identifier = number_literal) ;) (expression_statement "FUN_00072b90(local_7c,pbVar9,pbVar1);" (call_expression "FUN_00072b90(local_7c,pbVar9,pbVar1)" identifier (argument_list "(local_7c,pbVar9,pbVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_a0 = local_5c;" (assignment_expression "local_a0 = local_5c" identifier = identifier) ;) (expression_statement "local_64[0] = local_a0;" (assignment_expression "local_64[0] = local_a0" (subscript_expression "local_64[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "sVar2 = strlen((char *)param_4);" (assignment_expression "sVar2 = strlen((char *)param_4)" identifier = (call_expression "strlen((char *)param_4)" identifier (argument_list "((char *)param_4)" ( (cast_expression "(char *)param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iStack_b0 = 0;" (assignment_expression "iStack_b0 = 0" identifier = number_literal) ;) (expression_statement "FUN_00072b90(local_64,param_4,param_4 + sVar2);" (call_expression "FUN_00072b90(local_64,param_4,param_4 + sVar2)" identifier (argument_list "(local_64,param_4,param_4 + sVar2)" ( identifier , identifier , (binary_expression "param_4 + sVar2" identifier + identifier) ))) ;) (expression_statement "uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);" (assignment_expression "uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84)" identifier = (call_expression "FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84)" identifier (argument_list "(param_2,local_7c,param_1,param_3,0,0,&local_84)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , (pointer_expression "&local_84" & identifier) )))) ;) (expression_statement "uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);" (assignment_expression "uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80)" identifier = (call_expression "FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80)" identifier (argument_list "(param_2,local_64,param_1,param_3,0,1,&local_80)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , (pointer_expression "&local_80" & identifier) )))) ;) (if_statement "if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" if (parenthesized_expression "((char)uVar4 == '\0')" ( (binary_expression "(char)uVar4 == '\0'" (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }" { (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) ;) (if_statement "if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;" if (parenthesized_expression "((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0'))" ( (binary_expression "(*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')" (parenthesized_expression "(*local_80 == 0)" ( (binary_expression "*local_80 == 0" (pointer_expression "*local_80" * identifier) == number_literal) )) || (parenthesized_expression "(piVar8 = &local_ac, (char)local_80[2] != '\0')" ( (comma_expression "piVar8 = &local_ac, (char)local_80[2] != '\0'" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) , (binary_expression "(char)local_80[2] != '\0'" (cast_expression "(char)local_80[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_80[2]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_0029cf4f;" goto statement_identifier ;)) (expression_statement "local_4c = param_3;" (assignment_expression "local_4c = param_3" identifier = identifier) ;) (expression_statement "local_48 = local_ac;" (assignment_expression "local_48 = local_ac" identifier = identifier) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_44 = local_a8;" (assignment_expression "local_44 = local_a8" identifier = identifier) ;) (expression_statement "puVar7 = &local_4c;" (assignment_expression "puVar7 = &local_4c" identifier = (pointer_expression "&local_4c" & identifier)) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" else (compound_statement "{\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" { (if_statement "if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }" if (parenthesized_expression "((char)uVar3 != '\0')" ( (binary_expression "(char)uVar3 != '\0'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }" { (if_statement "if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" if (parenthesized_expression "((char)local_84[2] != '\0')" ( (binary_expression "(char)local_84[2] != '\0'" (cast_expression "(char)local_84[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_84[2]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" { (expression_statement "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);" (call_expression "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" identifier (argument_list "((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" ( (binary_expression "(int)local_98 + -0x178c12" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_98 + -0x57578" identifier + number_literal) ))) ;) })) (expression_statement "local_84[3] = local_ac;" (assignment_expression "local_84[3] = local_ac" (subscript_expression "local_84[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_84[4] = local_a8;" (assignment_expression "local_84[4] = local_a8" (subscript_expression "local_84[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" if (parenthesized_expression "((char)local_80[2] != '\0')" ( (binary_expression "(char)local_80[2] != '\0'" (cast_expression "(char)local_80[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_80[2]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" { (expression_statement "iStack_b0 = local_ac;" (assignment_expression "iStack_b0 = local_ac" identifier = identifier) ;) (expression_statement "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);" (call_expression "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" identifier (argument_list "((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" ( (binary_expression "(int)local_98 + -0x178c12" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_98 + -0x57578" identifier + number_literal) ))) ;) })) (expression_statement "local_80[3] = local_ac;" (assignment_expression "local_80[3] = local_ac" (subscript_expression "local_80[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_80[4] = local_a8;" (assignment_expression "local_80[4] = local_a8" (subscript_expression "local_80[4]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0029cf4f;" goto statement_identifier ;) })) (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) ;) (if_statement "if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;" if (parenthesized_expression "((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0'))" ( (binary_expression "(*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')" (parenthesized_expression "(*local_84 == 0)" ( (binary_expression "*local_84 == 0" (pointer_expression "*local_84" * identifier) == number_literal) )) || (parenthesized_expression "(piVar8 = &local_ac, (char)local_84[2] == '\0')" ( (comma_expression "piVar8 = &local_ac, (char)local_84[2] == '\0'" (assignment_expression "piVar8 = &local_ac" identifier = (pointer_expression "&local_ac" & identifier)) , (binary_expression "(char)local_84[2] == '\0'" (cast_expression "(char)local_84[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_84[2]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (goto_statement "goto LAB_0029cf4f;" goto statement_identifier ;)) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" identifier = identifier) ;) (expression_statement "local_30 = local_ac;" (assignment_expression "local_30 = local_ac" identifier = identifier) ;) (expression_statement "puVar7 = &local_34;" (assignment_expression "puVar7 = &local_34" identifier = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "local_2c = local_a8;" (assignment_expression "local_2c = local_a8" identifier = identifier) ;) (expression_statement "local_28 = local_84;" (assignment_expression "local_28 = local_84" identifier = identifier) ;) }))) (expression_statement "FUN_00299c70(local_94,param_1 + 0x104,puVar7);" (call_expression "FUN_00299c70(local_94,param_1 + 0x104,puVar7)" identifier (argument_list "(local_94,param_1 + 0x104,puVar7)" ( identifier , (binary_expression "param_1 + 0x104" identifier + number_literal) , identifier ))) ;) (expression_statement "piVar8 = &iStack_b0;" (assignment_expression "piVar8 = &iStack_b0" identifier = (pointer_expression "&iStack_b0" & identifier)) ;) (labeled_statement "LAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" statement_identifier : (if_statement "if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" if (parenthesized_expression "(local_64[0] != local_a0)" ( (binary_expression "local_64[0] != local_a0" (subscript_expression "local_64[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" { (expression_statement "*(undefined1 **)((int)piVar8 + -0x10) = local_64[0];" (assignment_expression "*(undefined1 **)((int)piVar8 + -0x10) = local_64[0]" (pointer_expression "*(undefined1 **)((int)piVar8 + -0x10)" * (cast_expression "(undefined1 **)((int)piVar8 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar8 + -0x10)" ( (binary_expression "(int)piVar8 + -0x10" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_64[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;" (assignment_expression "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b" (pointer_expression "*(undefined4 *)((int)piVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)piVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + -0x14)" ( (binary_expression "(int)piVar8 + -0x14" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }" if (parenthesized_expression "(local_7c[0] != local_9c)" ( (binary_expression "local_7c[0] != local_9c" (subscript_expression "local_7c[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }" { (expression_statement "*(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];" (assignment_expression "*(undefined1 **)((int)piVar8 + -0x10) = local_7c[0]" (pointer_expression "*(undefined1 **)((int)piVar8 + -0x10)" * (cast_expression "(undefined1 **)((int)piVar8 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar8 + -0x10)" ( (binary_expression "(int)piVar8 + -0x10" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_7c[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;" (assignment_expression "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88" (pointer_expression "*(undefined4 *)((int)piVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)piVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + -0x14)" ( (binary_expression "(int)piVar8 + -0x14" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return uVar3 & uVar4;" return (binary_expression "uVar3 & uVar4" identifier & identifier) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_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 = 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 IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression & IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence '))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression & IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence '))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return (binary_expression IDENT & IDENT) ;) })))
(function_definition "uint FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)\n\n{\n  byte *pbVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  int iStack_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 *local_a0;\n  undefined1 *local_9c;\n  undefined **local_98;\n  undefined1 local_94 [16];\n  int *local_84;\n  int *local_80;\n  undefined1 *local_7c [2];\n  undefined1 local_74 [16];\n  undefined1 *local_64 [2];\n  undefined1 local_5c [16];\n  undefined4 local_4c;\n  int local_48;\n  int local_44;\n  undefined4 local_3c;\n  undefined1 local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  int *local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined4 uStack_14;\n  \n  iVar6 = 0x10;\n  uStack_14 = 0x29ce40;\n  local_98 = &__DT_PLTGOT;\n  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;\n  bVar11 = &stack0x00000000 == (undefined1 *)0xac;\n  local_a8 = *(int *)(*param_5 + 0x24);\n  local_ac = *(int *)(*param_5 + 0x20);\n  pbVar9 = param_4;\n  pbVar1 = (byte *)".gnu.linkonce.t.";\n  do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);\n  if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }\n  piVar8 = &local_ac;\n  local_9c = local_74;\n  pbVar1 = (byte *)0xffffffff;\n  local_7c[0] = local_9c;\n  if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }\n  iStack_b0 = 0;\n  FUN_00072b90(local_7c,pbVar9,pbVar1);\n  local_a0 = local_5c;\n  local_64[0] = local_a0;\n  sVar2 = strlen((char *)param_4);\n  iStack_b0 = 0;\n                    \n  FUN_00072b90(local_64,param_4,param_4 + sVar2);\n                    \n  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);\n  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);\n  if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }\n  FUN_00299c70(local_94,param_1 + 0x104,puVar7);\n  piVar8 = &iStack_b0;\nLAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }\n  if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }\n  return uVar3 & uVar4;\n}" (type_identifier "uint") (function_declarator "FUN_0029ce30(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)" (identifier "FUN_0029ce30") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "byte *param_4" (type_identifier "byte") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  char *pcVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  int iStack_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 *local_a0;\n  undefined1 *local_9c;\n  undefined **local_98;\n  undefined1 local_94 [16];\n  int *local_84;\n  int *local_80;\n  undefined1 *local_7c [2];\n  undefined1 local_74 [16];\n  undefined1 *local_64 [2];\n  undefined1 local_5c [16];\n  undefined4 local_4c;\n  int local_48;\n  int local_44;\n  undefined4 local_3c;\n  undefined1 local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  int *local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined4 uStack_14;\n  \n  iVar6 = 0x10;\n  uStack_14 = 0x29ce40;\n  local_98 = &__DT_PLTGOT;\n  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;\n  bVar11 = &stack0x00000000 == (undefined1 *)0xac;\n  local_a8 = *(int *)(*param_5 + 0x24);\n  local_ac = *(int *)(*param_5 + 0x20);\n  pbVar9 = param_4;\n  pbVar1 = (byte *)".gnu.linkonce.t.";\n  do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);\n  if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }\n  piVar8 = &local_ac;\n  local_9c = local_74;\n  pbVar1 = (byte *)0xffffffff;\n  local_7c[0] = local_9c;\n  if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }\n  iStack_b0 = 0;\n  FUN_00072b90(local_7c,pbVar9,pbVar1);\n  local_a0 = local_5c;\n  local_64[0] = local_a0;\n  sVar2 = strlen((char *)param_4);\n  iStack_b0 = 0;\n                    \n  FUN_00072b90(local_64,param_4,param_4 + sVar2);\n                    \n  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);\n  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);\n  if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }\n  FUN_00299c70(local_94,param_1 + 0x104,puVar7);\n  piVar8 = &iStack_b0;\nLAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }\n  if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }\n  return uVar3 & uVar4;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "size_t sVar2;" (primitive_type "size_t") (identifier "sVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "int iStack_b0;" (primitive_type "int") (identifier "iStack_b0") (; ";")) (declaration "int local_ac;" (primitive_type "int") (identifier "local_ac") (; ";")) (declaration "int local_a8;" (primitive_type "int") (identifier "local_a8") (; ";")) (declaration "undefined1 *local_a0;" (type_identifier "undefined1") (pointer_declarator "*local_a0" (* "*") (identifier "local_a0")) (; ";")) (declaration "undefined1 *local_9c;" (type_identifier "undefined1") (pointer_declarator "*local_9c" (* "*") (identifier "local_9c")) (; ";")) (declaration "undefined **local_98;" (type_identifier "undefined") (pointer_declarator "**local_98" (* "*") (pointer_declarator "*local_98" (* "*") (identifier "local_98"))) (; ";")) (declaration "undefined1 local_94 [16];" (type_identifier "undefined1") (array_declarator "local_94 [16]" (identifier "local_94") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int *local_84;" (primitive_type "int") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "int *local_80;" (primitive_type "int") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "undefined1 *local_7c [2];" (type_identifier "undefined1") (pointer_declarator "*local_7c [2]" (* "*") (array_declarator "local_7c [2]" (identifier "local_7c") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_74 [16];" (type_identifier "undefined1") (array_declarator "local_74 [16]" (identifier "local_74") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 *local_64 [2];" (type_identifier "undefined1") (pointer_declarator "*local_64 [2]" (* "*") (array_declarator "local_64 [2]" (identifier "local_64") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_5c [16];" (type_identifier "undefined1") (array_declarator "local_5c [16]" (identifier "local_5c") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined1 local_38;" (type_identifier "undefined1") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int *local_28;" (primitive_type "int") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined1 local_20;" (type_identifier "undefined1") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" (identifier "iVar6") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "uStack_14 = 0x29ce40;" (assignment_expression "uStack_14 = 0x29ce40" (identifier "uStack_14") (= "=") (number_literal "0x29ce40")) (; ";")) (expression_statement "local_98 = &__DT_PLTGOT;" (assignment_expression "local_98 = &__DT_PLTGOT" (identifier "local_98") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;" (assignment_expression "bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c" (identifier "bVar10") (= "=") (binary_expression "&stack0xfffffff0 < (undefined1 *)0x9c" (pointer_expression "&stack0xfffffff0" (& "&") (identifier "stack0xfffffff0")) (< "<") (cast_expression "(undefined1 *)0x9c" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x9c")))) (; ";")) (expression_statement "bVar11 = &stack0x00000000 == (undefined1 *)0xac;" (assignment_expression "bVar11 = &stack0x00000000 == (undefined1 *)0xac" (identifier "bVar11") (= "=") (binary_expression "&stack0x00000000 == (undefined1 *)0xac" (pointer_expression "&stack0x00000000" (& "&") (identifier "stack0x00000000")) (== "==") (cast_expression "(undefined1 *)0xac" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xac")))) (; ";")) (expression_statement "local_a8 = *(int *)(*param_5 + 0x24);" (assignment_expression "local_a8 = *(int *)(*param_5 + 0x24)" (identifier "local_a8") (= "=") (pointer_expression "*(int *)(*param_5 + 0x24)" (* "*") (cast_expression "(int *)(*param_5 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 0x24)" (( "(") (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "local_ac = *(int *)(*param_5 + 0x20);" (assignment_expression "local_ac = *(int *)(*param_5 + 0x20)" (identifier "local_ac") (= "=") (pointer_expression "*(int *)(*param_5 + 0x20)" (* "*") (cast_expression "(int *)(*param_5 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 0x20)" (( "(") (binary_expression "*param_5 + 0x20" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "pbVar9 = param_4;" (assignment_expression "pbVar9 = param_4" (identifier "pbVar9") (= "=") (identifier "param_4")) (; ";")) (expression_statement "pbVar1 = (byte *)".gnu.linkonce.t.";" (assignment_expression "pbVar1 = (byte *)".gnu.linkonce.t."" (identifier "pbVar1") (= "=") (cast_expression "(byte *)".gnu.linkonce.t."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".gnu.linkonce.t."" (" """) (string_content ".gnu.linkonce.t.") (" """)))) (; ";")) (do_statement "do {\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  } while (bVar11);" (do "do") (compound_statement "{\n    if (iVar6 == 0) break;\n    iVar6 = iVar6 + -1;\n    bVar10 = *pbVar9 < *pbVar1;\n    bVar11 = *pbVar9 == *pbVar1;\n    pbVar9 = pbVar9 + 1;\n    pbVar1 = pbVar1 + 1;\n  }" ({ "{") (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar9 < *pbVar1;" (assignment_expression "bVar10 = *pbVar9 < *pbVar1" (identifier "bVar10") (= "=") (binary_expression "*pbVar9 < *pbVar1" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")))) (; ";")) (expression_statement "bVar11 = *pbVar9 == *pbVar1;" (assignment_expression "bVar11 = *pbVar9 == *pbVar1" (identifier "bVar11") (= "=") (binary_expression "*pbVar9 == *pbVar1" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar1 = pbVar1 + 1;" (assignment_expression "pbVar1 = pbVar1 + 1" (identifier "pbVar1") (= "=") (binary_expression "pbVar1 + 1" (identifier "pbVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (if_statement "if ((!bVar10 && !bVar11) == bVar10) {\n    pbVar9 = param_4 + 0x10;\n  }\n  else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" (if "if") (parenthesized_expression "((!bVar10 && !bVar11) == bVar10)" (( "(") (binary_expression "(!bVar10 && !bVar11) == bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" (( "(") (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" (! "!") (identifier "bVar10")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (== "==") (identifier "bVar10")) () ")")) (compound_statement "{\n    pbVar9 = param_4 + 0x10;\n  }" ({ "{") (expression_statement "pbVar9 = param_4 + 0x10;" (assignment_expression "pbVar9 = param_4 + 0x10" (identifier "pbVar9") (= "=") (binary_expression "param_4 + 0x10" (identifier "param_4") (+ "+") (number_literal "0x10"))) (; ";")) (} "}")) (else_clause "else {\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" (else "else") (compound_statement "{\n    pcVar5 = strrchr((char *)param_4,0x2e);\n    pbVar9 = (byte *)(pcVar5 + 1);\n  }" ({ "{") (expression_statement "pcVar5 = strrchr((char *)param_4,0x2e);" (assignment_expression "pcVar5 = strrchr((char *)param_4,0x2e)" (identifier "pcVar5") (= "=") (call_expression "strrchr((char *)param_4,0x2e)" (identifier "strrchr") (argument_list "((char *)param_4,0x2e)" (( "(") (cast_expression "(char *)param_4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")) (, ",") (number_literal "0x2e") () ")")))) (; ";")) (expression_statement "pbVar9 = (byte *)(pcVar5 + 1);" (assignment_expression "pbVar9 = (byte *)(pcVar5 + 1)" (identifier "pbVar9") (= "=") (cast_expression "(byte *)(pcVar5 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" (identifier "piVar8") (= "=") (pointer_expression "&local_ac" (& "&") (identifier "local_ac"))) (; ";")) (expression_statement "local_9c = local_74;" (assignment_expression "local_9c = local_74" (identifier "local_9c") (= "=") (identifier "local_74")) (; ";")) (expression_statement "pbVar1 = (byte *)0xffffffff;" (assignment_expression "pbVar1 = (byte *)0xffffffff" (identifier "pbVar1") (= "=") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "local_7c[0] = local_9c;" (assignment_expression "local_7c[0] = local_9c" (subscript_expression "local_7c[0]" (identifier "local_7c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_9c")) (; ";")) (if_statement "if (pbVar9 != (byte *)0x0) {\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }" (if "if") (parenthesized_expression "(pbVar9 != (byte *)0x0)" (( "(") (binary_expression "pbVar9 != (byte *)0x0" (identifier "pbVar9") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen((char *)pbVar9);\n    pbVar1 = pbVar9 + sVar2;\n  }" ({ "{") (expression_statement "sVar2 = strlen((char *)pbVar9);" (assignment_expression "sVar2 = strlen((char *)pbVar9)" (identifier "sVar2") (= "=") (call_expression "strlen((char *)pbVar9)" (identifier "strlen") (argument_list "((char *)pbVar9)" (( "(") (cast_expression "(char *)pbVar9" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar9")) () ")")))) (; ";")) (expression_statement "pbVar1 = pbVar9 + sVar2;" (assignment_expression "pbVar1 = pbVar9 + sVar2" (identifier "pbVar1") (= "=") (binary_expression "pbVar9 + sVar2" (identifier "pbVar9") (+ "+") (identifier "sVar2"))) (; ";")) (} "}"))) (expression_statement "iStack_b0 = 0;" (assignment_expression "iStack_b0 = 0" (identifier "iStack_b0") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00072b90(local_7c,pbVar9,pbVar1);" (call_expression "FUN_00072b90(local_7c,pbVar9,pbVar1)" (identifier "FUN_00072b90") (argument_list "(local_7c,pbVar9,pbVar1)" (( "(") (identifier "local_7c") (, ",") (identifier "pbVar9") (, ",") (identifier "pbVar1") () ")"))) (; ";")) (expression_statement "local_a0 = local_5c;" (assignment_expression "local_a0 = local_5c" (identifier "local_a0") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "local_64[0] = local_a0;" (assignment_expression "local_64[0] = local_a0" (subscript_expression "local_64[0]" (identifier "local_64") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_a0")) (; ";")) (expression_statement "sVar2 = strlen((char *)param_4);" (assignment_expression "sVar2 = strlen((char *)param_4)" (identifier "sVar2") (= "=") (call_expression "strlen((char *)param_4)" (identifier "strlen") (argument_list "((char *)param_4)" (( "(") (cast_expression "(char *)param_4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")) () ")")))) (; ";")) (expression_statement "iStack_b0 = 0;" (assignment_expression "iStack_b0 = 0" (identifier "iStack_b0") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00072b90(local_64,param_4,param_4 + sVar2);" (call_expression "FUN_00072b90(local_64,param_4,param_4 + sVar2)" (identifier "FUN_00072b90") (argument_list "(local_64,param_4,param_4 + sVar2)" (( "(") (identifier "local_64") (, ",") (identifier "param_4") (, ",") (binary_expression "param_4 + sVar2" (identifier "param_4") (+ "+") (identifier "sVar2")) () ")"))) (; ";")) (expression_statement "uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);" (assignment_expression "uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84)" (identifier "uVar3") (= "=") (call_expression "FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84)" (identifier "FUN_00278ce0") (argument_list "(param_2,local_7c,param_1,param_3,0,0,&local_84)" (( "(") (identifier "param_2") (, ",") (identifier "local_7c") (, ",") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_84" (& "&") (identifier "local_84")) () ")")))) (; ";")) (expression_statement "uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);" (assignment_expression "uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80)" (identifier "uVar4") (= "=") (call_expression "FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80)" (identifier "FUN_00278ce0") (argument_list "(param_2,local_64,param_1,param_3,0,1,&local_80)" (( "(") (identifier "param_2") (, ",") (identifier "local_64") (, ",") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) () ")")))) (; ";")) (if_statement "if ((char)uVar4 == '\0') {\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }\n  else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" (if "if") (parenthesized_expression "((char)uVar4 == '\0')" (( "(") (binary_expression "(char)uVar4 == '\0'" (cast_expression "(char)uVar4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar4")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    piVar8 = &local_ac;\n    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;\n    local_4c = param_3;\n    local_48 = local_ac;\n    local_3c = 0;\n    local_44 = local_a8;\n    puVar7 = &local_4c;\n    local_38 = 0;\n  }" ({ "{") (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" (identifier "piVar8") (= "=") (pointer_expression "&local_ac" (& "&") (identifier "local_ac"))) (; ";")) (if_statement "if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;" (if "if") (parenthesized_expression "((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0'))" (( "(") (binary_expression "(*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')" (parenthesized_expression "(*local_80 == 0)" (( "(") (binary_expression "*local_80 == 0" (pointer_expression "*local_80" (* "*") (identifier "local_80")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(piVar8 = &local_ac, (char)local_80[2] != '\0')" (( "(") (comma_expression "piVar8 = &local_ac, (char)local_80[2] != '\0'" (assignment_expression "piVar8 = &local_ac" (identifier "piVar8") (= "=") (pointer_expression "&local_ac" (& "&") (identifier "local_ac"))) (, ",") (binary_expression "(char)local_80[2] != '\0'" (cast_expression "(char)local_80[2]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "local_80[2]" (identifier "local_80") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (goto_statement "goto LAB_0029cf4f;" (goto "goto") (statement_identifier "LAB_0029cf4f") (; ";"))) (expression_statement "local_4c = param_3;" (assignment_expression "local_4c = param_3" (identifier "local_4c") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_48 = local_ac;" (assignment_expression "local_48 = local_ac" (identifier "local_48") (= "=") (identifier "local_ac")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = local_a8;" (assignment_expression "local_44 = local_a8" (identifier "local_44") (= "=") (identifier "local_a8")) (; ";")) (expression_statement "puVar7 = &local_4c;" (assignment_expression "puVar7 = &local_4c" (identifier "puVar7") (= "=") (pointer_expression "&local_4c" (& "&") (identifier "local_4c"))) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" (else "else") (compound_statement "{\n    if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }\n    piVar8 = &local_ac;\n    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;\n    local_20 = 0;\n    local_24 = 0;\n    local_34 = param_3;\n    local_30 = local_ac;\n    puVar7 = &local_34;\n    local_2c = local_a8;\n    local_28 = local_84;\n  }" ({ "{") (if_statement "if ((char)uVar3 != '\0') {\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }" (if "if") (parenthesized_expression "((char)uVar3 != '\0')" (( "(") (binary_expression "(char)uVar3 != '\0'" (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_84[3] = local_ac;\n      local_84[4] = local_a8;\n      if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }\n      local_80[3] = local_ac;\n      local_80[4] = local_a8;\n      goto LAB_0029cf4f;\n    }" ({ "{") (if_statement "if ((char)local_84[2] != '\0') {\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" (if "if") (parenthesized_expression "((char)local_84[2] != '\0')" (( "(") (binary_expression "(char)local_84[2] != '\0'" (cast_expression "(char)local_84[2]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "local_84[2]" (identifier "local_84") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" ({ "{") (expression_statement "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);" (call_expression "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" (identifier "FUN_002446e0") (argument_list "((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" (( "(") (binary_expression "(int)local_98 + -0x178c12" (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98")) (+ "+") (number_literal "-0x178c12")) (, ",") (number_literal "0x163") (, ",") (binary_expression "local_98 + -0x57578" (identifier "local_98") (+ "+") (number_literal "-0x57578")) () ")"))) (; ";")) (} "}"))) (expression_statement "local_84[3] = local_ac;" (assignment_expression "local_84[3] = local_ac" (subscript_expression "local_84[3]" (identifier "local_84") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "local_84[4] = local_a8;" (assignment_expression "local_84[4] = local_a8" (subscript_expression "local_84[4]" (identifier "local_84") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_a8")) (; ";")) (if_statement "if ((char)local_80[2] != '\0') {\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" (if "if") (parenthesized_expression "((char)local_80[2] != '\0')" (( "(") (binary_expression "(char)local_80[2] != '\0'" (cast_expression "(char)local_80[2]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "local_80[2]" (identifier "local_80") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iStack_b0 = local_ac;\n                    \n        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);\n      }" ({ "{") (expression_statement "iStack_b0 = local_ac;" (assignment_expression "iStack_b0 = local_ac" (identifier "iStack_b0") (= "=") (identifier "local_ac")) (; ";")) (expression_statement "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);" (call_expression "FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" (identifier "FUN_002446e0") (argument_list "((int)local_98 + -0x178c12,0x163,local_98 + -0x57578)" (( "(") (binary_expression "(int)local_98 + -0x178c12" (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98")) (+ "+") (number_literal "-0x178c12")) (, ",") (number_literal "0x163") (, ",") (binary_expression "local_98 + -0x57578" (identifier "local_98") (+ "+") (number_literal "-0x57578")) () ")"))) (; ";")) (} "}"))) (expression_statement "local_80[3] = local_ac;" (assignment_expression "local_80[3] = local_ac" (subscript_expression "local_80[3]" (identifier "local_80") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_ac")) (; ";")) (expression_statement "local_80[4] = local_a8;" (assignment_expression "local_80[4] = local_a8" (subscript_expression "local_80[4]" (identifier "local_80") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_a8")) (; ";")) (goto_statement "goto LAB_0029cf4f;" (goto "goto") (statement_identifier "LAB_0029cf4f") (; ";")) (} "}"))) (expression_statement "piVar8 = &local_ac;" (assignment_expression "piVar8 = &local_ac" (identifier "piVar8") (= "=") (pointer_expression "&local_ac" (& "&") (identifier "local_ac"))) (; ";")) (if_statement "if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;" (if "if") (parenthesized_expression "((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0'))" (( "(") (binary_expression "(*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')" (parenthesized_expression "(*local_84 == 0)" (( "(") (binary_expression "*local_84 == 0" (pointer_expression "*local_84" (* "*") (identifier "local_84")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(piVar8 = &local_ac, (char)local_84[2] == '\0')" (( "(") (comma_expression "piVar8 = &local_ac, (char)local_84[2] == '\0'" (assignment_expression "piVar8 = &local_ac" (identifier "piVar8") (= "=") (pointer_expression "&local_ac" (& "&") (identifier "local_ac"))) (, ",") (binary_expression "(char)local_84[2] == '\0'" (cast_expression "(char)local_84[2]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "local_84[2]" (identifier "local_84") ([ "[") (number_literal "2") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (goto_statement "goto LAB_0029cf4f;" (goto "goto") (statement_identifier "LAB_0029cf4f") (; ";"))) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" (identifier "local_34") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_30 = local_ac;" (assignment_expression "local_30 = local_ac" (identifier "local_30") (= "=") (identifier "local_ac")) (; ";")) (expression_statement "puVar7 = &local_34;" (assignment_expression "puVar7 = &local_34" (identifier "puVar7") (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "local_2c = local_a8;" (assignment_expression "local_2c = local_a8" (identifier "local_2c") (= "=") (identifier "local_a8")) (; ";")) (expression_statement "local_28 = local_84;" (assignment_expression "local_28 = local_84" (identifier "local_28") (= "=") (identifier "local_84")) (; ";")) (} "}")))) (expression_statement "FUN_00299c70(local_94,param_1 + 0x104,puVar7);" (call_expression "FUN_00299c70(local_94,param_1 + 0x104,puVar7)" (identifier "FUN_00299c70") (argument_list "(local_94,param_1 + 0x104,puVar7)" (( "(") (identifier "local_94") (, ",") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) (, ",") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "piVar8 = &iStack_b0;" (assignment_expression "piVar8 = &iStack_b0" (identifier "piVar8") (= "=") (pointer_expression "&iStack_b0" (& "&") (identifier "iStack_b0"))) (; ";")) (labeled_statement "LAB_0029cf4f:\n  if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" (statement_identifier "LAB_0029cf4f") (: ":") (if_statement "if (local_64[0] != local_a0) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" (if "if") (parenthesized_expression "(local_64[0] != local_a0)" (( "(") (binary_expression "local_64[0] != local_a0" (subscript_expression "local_64[0]" (identifier "local_64") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_a0")) () ")")) (compound_statement "{\n    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;\n    FUN_003ae080();\n  }" ({ "{") (expression_statement "*(undefined1 **)((int)piVar8 + -0x10) = local_64[0];" (assignment_expression "*(undefined1 **)((int)piVar8 + -0x10) = local_64[0]" (pointer_expression "*(undefined1 **)((int)piVar8 + -0x10)" (* "*") (cast_expression "(undefined1 **)((int)piVar8 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar8 + -0x10)" (( "(") (binary_expression "(int)piVar8 + -0x10" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (subscript_expression "local_64[0]" (identifier "local_64") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;" (assignment_expression "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b" (pointer_expression "*(undefined4 *)((int)piVar8 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)piVar8 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + -0x14)" (( "(") (binary_expression "(int)piVar8 + -0x14" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x29cf6b")) (; ";")) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" (identifier "FUN_003ae080") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_7c[0] != local_9c) {\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }" (if "if") (parenthesized_expression "(local_7c[0] != local_9c)" (( "(") (binary_expression "local_7c[0] != local_9c" (subscript_expression "local_7c[0]" (identifier "local_7c") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_9c")) () ")")) (compound_statement "{\n    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];\n    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;\n    FUN_003ae080();\n  }" ({ "{") (expression_statement "*(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];" (assignment_expression "*(undefined1 **)((int)piVar8 + -0x10) = local_7c[0]" (pointer_expression "*(undefined1 **)((int)piVar8 + -0x10)" (* "*") (cast_expression "(undefined1 **)((int)piVar8 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar8 + -0x10)" (( "(") (binary_expression "(int)piVar8 + -0x10" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (subscript_expression "local_7c[0]" (identifier "local_7c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;" (assignment_expression "*(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88" (pointer_expression "*(undefined4 *)((int)piVar8 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)piVar8 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + -0x14)" (( "(") (binary_expression "(int)piVar8 + -0x14" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x29cf88")) (; ";")) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" (identifier "FUN_003ae080") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return uVar3 & uVar4;" (return "return") (binary_expression "uVar3 & uVar4" (identifier "uVar3") (& "&") (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 */
/* DWARF original prototype: bool include_linkonce_section(Sized_relobj_file<64,_false> * this,
   Layout * layout, uint index, char * name, Shdr<64,_false> * shdr) */

bool __thiscall
gold::Sized_relobj_file<64,_false>::include_linkonce_section
          (Sized_relobj_file<64,_false> *this,Layout *layout,uint index,char *name,
          Shdr<64,_false> *shdr)

{
  type_1 *kept1;
  type_1 *kept2;
  type_2 sig1;
  type_2 sig2;
  
}


(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: (identifier)) (parameter_declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (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: (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: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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 (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (number_literal) (number_literal) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (number_literal) (number_literal) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence))))))) consequence: (goto_statement label: (statement_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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (return_statement (binary_expression left: (identifier) right: (identifier))))))

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

uint MASKED(int param_1,undefined4 param_2,undefined4 param_3,byte *param_4,int *param_5)

{
  byte *pbVar1;
  size_t sVar2;
  uint uVar3;
  uint uVar4;
  char *pcVar5;
  int iVar6;
  undefined4 *puVar7;
  int *piVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  int iStack_b0;
  int local_ac;
  int local_a8;
  undefined1 *local_a0;
  undefined1 *local_9c;
  undefined **local_98;
  undefined1 local_94 [16];
  int *local_84;
  int *local_80;
  undefined1 *local_7c [2];
  undefined1 local_74 [16];
  undefined1 *local_64 [2];
  undefined1 local_5c [16];
  undefined4 local_4c;
  int local_48;
  int local_44;
  undefined4 local_3c;
  undefined1 local_38;
  undefined4 local_34;
  int local_30;
  int local_2c;
  int *local_28;
  undefined4 local_24;
  undefined1 local_20;
  undefined4 uStack_14;
  
  iVar6 = 0x10;
  uStack_14 = 0x29ce40;
  local_98 = &__DT_PLTGOT;
  bVar10 = &stack0xfffffff0 < (undefined1 *)0x9c;
  bVar11 = &stack0x00000000 == (undefined1 *)0xac;
  local_a8 = *(int *)(*param_5 + 0x24);
  local_ac = *(int *)(*param_5 + 0x20);
  pbVar9 = param_4;
  pbVar1 = (byte *)".gnu.linkonce.t.";
  do {
    if (iVar6 == 0) break;
    iVar6 = iVar6 + -1;
    bVar10 = *pbVar9 < *pbVar1;
    bVar11 = *pbVar9 == *pbVar1;
    pbVar9 = pbVar9 + 1;
    pbVar1 = pbVar1 + 1;
  } while (bVar11);
  if ((!bVar10 && !bVar11) == bVar10) {
    pbVar9 = param_4 + 0x10;
  }
  else {
    pcVar5 = strrchr((char *)param_4,0x2e);
    pbVar9 = (byte *)(pcVar5 + 1);
  }
  piVar8 = &local_ac;
  local_9c = local_74;
  pbVar1 = (byte *)0xffffffff;
  local_7c[0] = local_9c;
  if (pbVar9 != (byte *)0x0) {
    sVar2 = strlen((char *)pbVar9);
    pbVar1 = pbVar9 + sVar2;
  }
  iStack_b0 = 0;
  FUN_00072b90(local_7c,pbVar9,pbVar1);
  local_a0 = local_5c;
  local_64[0] = local_a0;
  sVar2 = strlen((char *)param_4);
  iStack_b0 = 0;
                    /* try { // try from 0029cee8 to 0029ceec has its CatchHandler @ 0029d0e9 */
  FUN_00072b90(local_64,param_4,param_4 + sVar2);
                    /* try { // try from 0029cf08 to 0029d0e4 has its CatchHandler @ 0029d0e5 */
  uVar3 = FUN_00278ce0(param_2,local_7c,param_1,param_3,0,0,&local_84);
  uVar4 = FUN_00278ce0(param_2,local_64,param_1,param_3,0,1,&local_80);
  if ((char)uVar4 == '\0') {
    piVar8 = &local_ac;
    if ((*local_80 == 0) || (piVar8 = &local_ac, (char)local_80[2] != '\0')) goto LAB_0029cf4f;
    local_4c = param_3;
    local_48 = local_ac;
    local_3c = 0;
    local_44 = local_a8;
    puVar7 = &local_4c;
    local_38 = 0;
  }
  else {
    if ((char)uVar3 != '\0') {
      if ((char)local_84[2] != '\0') {
                    /* WARNING: Subroutine does not return */
        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);
      }
      local_84[3] = local_ac;
      local_84[4] = local_a8;
      if ((char)local_80[2] != '\0') {
        iStack_b0 = local_ac;
                    /* WARNING: Subroutine does not return */
        FUN_002446e0((int)local_98 + -0x178c12,0x163,local_98 + -0x57578);
      }
      local_80[3] = local_ac;
      local_80[4] = local_a8;
      goto LAB_0029cf4f;
    }
    piVar8 = &local_ac;
    if ((*local_84 == 0) || (piVar8 = &local_ac, (char)local_84[2] == '\0')) goto LAB_0029cf4f;
    local_20 = 0;
    local_24 = 0;
    local_34 = param_3;
    local_30 = local_ac;
    puVar7 = &local_34;
    local_2c = local_a8;
    local_28 = local_84;
  }
  FUN_00299c70(local_94,param_1 + 0x104,puVar7);
  piVar8 = &iStack_b0;
LAB_0029cf4f:
  if (local_64[0] != local_a0) {
    *(undefined1 **)((int)piVar8 + -0x10) = local_64[0];
    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf6b;
    FUN_003ae080();
  }
  if (local_7c[0] != local_9c) {
    *(undefined1 **)((int)piVar8 + -0x10) = local_7c[0];
    *(undefined4 *)((int)piVar8 + -0x14) = 0x29cf88;
    FUN_003ae080();
  }
  return uVar3 & uVar4;
}

