
char ** buildargv(char *input)

{
  byte bVar1;
  int iVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  byte bVar6;
  size_t sVar7;
  byte *__ptr;
  char *pcVar8;
  byte *pbVar9;
  int unaff_EDI;
  char **local_3c;
  int local_38;
  int local_2c;
  char **local_20;
  
  __x86_get_pc_thunk_di();
  local_3c = (char **)0x0;
  if (input == (char *)0x0) {
    return (char **)0x0;
  }
  bVar5 = false;
  sVar7 = strlen(input);
  __ptr = (byte *)xmalloc(sVar7 + 1);
  bVar4 = false;
  iVar2 = *(int *)(
                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */
                  + unaff_EDI + 0x2049);
  local_38 = 0;
  local_2c = 0;
  bVar3 = false;
  do {
    while ((*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0) {
      input = (char *)((byte *)input + 1);
    }
    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {
      if (local_3c == (char **)0x0) {
        local_3c = (char **)xmalloc(0x20);
        local_38 = 8;
      }
      else {
        local_3c = (char **)xrealloc(local_3c,local_38 << 3);
        local_38 = local_38 << 1;
      }
      local_20 = local_3c + local_2c;
      *local_20 = (char *)0x0;
    }
    else {
      local_20 = local_3c + local_2c;
    }
    bVar6 = *input;
    pbVar9 = __ptr;
joined_r0x0003f5f5:
    if (bVar6 != 0) {
      do {
        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {
          bVar3 = false;
          bVar4 = false;
          bVar5 = false;
          break;
        }
        if (bVar5) {
          *pbVar9 = bVar6;
          bVar5 = false;
          pbVar9 = pbVar9 + 1;
        }
        else if (bVar6 == 0x5c) {
          bVar5 = true;
        }
        else if (bVar4) {
          if (bVar6 != 0x27) goto code_r0x0003f644;
          bVar4 = false;
        }
        else if (bVar3) {
          bVar5 = false;
          if (bVar6 == 0x22) {
            bVar3 = false;
          }
          else {
            *pbVar9 = bVar6;
            pbVar9 = pbVar9 + 1;
          }
        }
        else {
          bVar5 = false;
          if (bVar6 == 0x27) {
            bVar4 = true;
          }
          else {
            bVar4 = bVar5;
            if (bVar6 == 0x22) {
              bVar3 = true;
            }
            else {
              *pbVar9 = bVar6;
              pbVar9 = pbVar9 + 1;
            }
          }
        }
        input = (char *)((byte *)input + 1);
        bVar6 = *input;
        if (bVar6 == 0) break;
      } while( true );
    }
    *pbVar9 = 0;
    pcVar8 = (char *)xstrdup(__ptr);
    *local_20 = pcVar8;
    local_3c[local_2c + 1] = (char *)0x0;
    bVar6 = *input;
    bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);
    while ((bVar1 & 0x40) != 0) {
      input = (char *)((byte *)input + 1);
      bVar6 = *input;
      bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);
    }
    local_2c = local_2c + 1;
    if (bVar6 == 0) {
      free(__ptr);
      return local_3c;
    }
  } while( true );
code_r0x0003f644:
  input = (char *)((byte *)input + 1);
  *pbVar9 = bVar6;
  pbVar9 = pbVar9 + 1;
  bVar6 = *input;
  goto joined_r0x0003f5f5;
}



int FUN_0003f540(byte *param_1)

{
  int iVar1;
  byte bVar2;
  int iVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  byte bVar7;
  size_t sVar8;
  byte *__ptr;
  undefined4 uVar9;
  byte *pbVar10;
  int unaff_EDI;
  int local_3c;
  int local_38;
  int local_2c;
  undefined4 *local_20;
  
  FUN_0002a32f();
  local_3c = 0;
  if (param_1 == (byte *)0x0) {
    return 0;
  }
  bVar6 = false;
  sVar8 = strlen((char *)param_1);
  __ptr = (byte *)xmalloc(sVar8 + 1);
  bVar5 = false;
  iVar3 = *(int *)(
                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */
                  + unaff_EDI + 0x2049);
  local_38 = 0;
  local_2c = 0;
  bVar4 = false;
  do {
    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {
      param_1 = param_1 + 1;
    }
    iVar1 = local_2c * 4;
    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {
      if (local_3c == 0) {
        local_3c = xmalloc(0x20);
        local_38 = 8;
      }
      else {
        local_3c = xrealloc(local_3c,local_38 << 3);
        local_38 = local_38 << 1;
      }
      local_20 = (undefined4 *)(local_3c + iVar1);
      *local_20 = 0;
    }
    else {
      local_20 = (undefined4 *)(local_3c + iVar1);
    }
    bVar7 = *param_1;
    pbVar10 = __ptr;
joined_r0x0003f5f5:
    if (bVar7 != 0) {
      do {
        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {
          bVar4 = false;
          bVar5 = false;
          bVar6 = false;
          break;
        }
        if (bVar6) {
          *pbVar10 = bVar7;
          bVar6 = false;
          pbVar10 = pbVar10 + 1;
        }
        else if (bVar7 == 0x5c) {
          bVar6 = true;
        }
        else if (bVar5) {
          if (bVar7 != 0x27) goto code_r0x0003f644;
          bVar5 = false;
        }
        else if (bVar4) {
          bVar6 = false;
          if (bVar7 == 0x22) {
            bVar4 = false;
          }
          else {
            *pbVar10 = bVar7;
            pbVar10 = pbVar10 + 1;
          }
        }
        else {
          bVar6 = false;
          if (bVar7 == 0x27) {
            bVar5 = true;
          }
          else {
            bVar5 = bVar6;
            if (bVar7 == 0x22) {
              bVar4 = true;
            }
            else {
              *pbVar10 = bVar7;
              pbVar10 = pbVar10 + 1;
            }
          }
        }
        param_1 = param_1 + 1;
        bVar7 = *param_1;
        if (bVar7 == 0) break;
      } while( true );
    }
    *pbVar10 = 0;
    uVar9 = xstrdup(__ptr);
    local_2c = local_2c + 1;
    *local_20 = uVar9;
    *(undefined4 *)(local_3c + 4 + iVar1) = 0;
    bVar7 = *param_1;
    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);
    while ((bVar2 & 0x40) != 0) {
      param_1 = param_1 + 1;
      bVar7 = *param_1;
      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);
    }
    if (bVar7 == 0) {
      free(__ptr);
      return local_3c;
    }
  } while( true );
code_r0x0003f644:
  param_1 = param_1 + 1;
  *pbVar10 = bVar7;
  pbVar10 = pbVar10 + 1;
  bVar7 = *param_1;
  goto joined_r0x0003f5f5;
}


PUSH EBP
PUSH EDI
CALL 0x0002a32f
ADD EDI,0x7bab9
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV ESI,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x10],0x0
MOV dword ptr [ESP + 0x28],EDI
TEST ESI,ESI
JZ 0x0003f6c9
SUB ESP,0xc
MOV EBX,EDI
XOR EBP,EBP
PUSH ESI
CALL 0x000146f0
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00014c58
XOR EDX,EDX
MOV EDI,dword ptr [EDI + 0xffffffa8]
MOV dword ptr [ESP + 0x2c],EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x20],0x0
MOV dword ptr [ESP + 0xc],0x0
JMP 0x0003f5b3
ADD ESI,0x1
MOVZX EAX,byte ptr [ESI]
TEST byte ptr [EDI + EAX*0x2],0x40
JNZ 0x0003f5b0
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x14]
LEA EBX,[ECX*0x4 + 0x0]
MOV dword ptr [ESP + 0x18],EBX
TEST EAX,EAX
JZ 0x0003f730
SUB EAX,0x1
CMP EAX,ECX
JLE 0x0003f730
MOV EAX,dword ptr [ESP + 0x10]
ADD EAX,EBX
MOV dword ptr [ESP + 0x2c],EAX
MOVZX EAX,byte ptr [ESI]
MOV ECX,dword ptr [ESP + 0x1c]
TEST AL,AL
JNZ 0x0003f611
JMP 0x0003f658
MOV byte ptr [ECX],AL
XOR EBP,EBP
ADD ECX,0x1
ADD ESI,0x1
MOVZX EAX,byte ptr [ESI]
TEST AL,AL
JZ 0x0003f658
MOVZX EBX,AL
TEST byte ptr [EDI + EBX*0x2],0x40
JZ 0x0003f628
MOV EBX,EDX
OR EBX,EBP
OR EBX,dword ptr [ESP + 0xc]
JZ 0x0003f790
TEST EBP,EBP
JNZ 0x0003f600
CMP AL,0x5c
JZ 0x0003f6d8
TEST EDX,EDX
JZ 0x0003f6e8
CMP AL,0x27
JZ 0x0003f780
ADD ESI,0x1
MOV byte ptr [ECX],AL
ADD ECX,0x1
MOVZX EAX,byte ptr [ESI]
TEST AL,AL
JNZ 0x0003f611
LEA ESI,[ESI]
NOP
MOV dword ptr [ESP + 0x24],EDX
SUB ESP,0xc
MOV byte ptr [ECX],0x0
PUSH dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x38]
CALL 0x00014490
MOV EDX,dword ptr [ESP + 0x3c]
ADD dword ptr [ESP + 0x30],0x1
MOV dword ptr [EDX],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x28]
ADD ESP,0x10
MOV dword ptr [EAX + EDX*0x1 + 0x4],0x0
MOVZX ECX,byte ptr [ESI]
MOV EDX,dword ptr [ESP + 0x24]
TEST byte ptr [EDI + ECX*0x2],0x40
MOV EAX,ECX
JZ 0x0003f6ae
LEA ESI,[ESI]
ADD ESI,0x1
MOVZX ECX,byte ptr [ESI]
MOV EAX,ECX
TEST byte ptr [EDI + ECX*0x2],0x40
JNZ 0x0003f6a0
TEST AL,AL
JNZ 0x0003f5b3
SUB ESP,0xc
PUSH dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x38]
CALL 0x00014c40
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBP,0x1
JMP 0x0003f607
MOV EBX,dword ptr [ESP + 0xc]
TEST EBX,EBX
JZ 0x0003f708
CMP AL,0x22
JZ 0x0003f7a8
MOV byte ptr [ECX],AL
MOV EBP,EDX
ADD ECX,0x1
JMP 0x0003f607
CMP AL,0x27
JZ 0x0003f7c0
CMP AL,0x22
JZ 0x0003f800
MOV EDX,dword ptr [ESP + 0xc]
MOV byte ptr [ECX],AL
ADD ECX,0x1
MOV EBP,EDX
JMP 0x0003f607
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x24],EDX
TEST EAX,EAX
JZ 0x0003f7d0
SHL dword ptr [ESP + 0x14],0x1
MOV EAX,dword ptr [ESP + 0x14]
SUB ESP,0x8
SHL EAX,0x2
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x38]
CALL 0x000143b0
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x10]
ADD EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x2c],EAX
MOV dword ptr [EAX],0x0
JMP 0x0003f5ec
XOR EDX,EDX
JMP 0x0003f607
MOV dword ptr [ESP + 0xc],0x0
XOR EDX,EDX
XOR EBP,EBP
JMP 0x0003f658
MOV EBP,EDX
MOV dword ptr [ESP + 0xc],0x0
JMP 0x0003f607
MOV EBP,dword ptr [ESP + 0xc]
MOV EDX,0x1
JMP 0x0003f607
SUB ESP,0xc
PUSH 0x20
MOV EBX,dword ptr [ESP + 0x38]
CALL 0x00014c58
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x14],0x8
JMP 0x0003f767
MOV EBP,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0xc],0x1
MOV EDX,EBP
JMP 0x0003f607
(translation_unit "int FUN_0003f540(byte *param_1)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  bool bVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  size_t sVar8;\n  byte *__ptr;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int local_3c;\n  int local_38;\n  int local_2c;\n  undefined4 *local_20;\n  \n  FUN_0002a32f();\n  local_3c = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar6 = false;\n  sVar8 = strlen((char *)param_1);\n  __ptr = (byte *)xmalloc(sVar8 + 1);\n  bVar5 = false;\n  iVar3 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar4 = false;\n  do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar7;\n  pbVar10 = pbVar10 + 1;\n  bVar7 = *param_1;\n  goto joined_r0x0003f5f5;\n}\n\n" (function_definition "int FUN_0003f540(byte *param_1)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  bool bVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  size_t sVar8;\n  byte *__ptr;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int local_3c;\n  int local_38;\n  int local_2c;\n  undefined4 *local_20;\n  \n  FUN_0002a32f();\n  local_3c = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar6 = false;\n  sVar8 = strlen((char *)param_1);\n  __ptr = (byte *)xmalloc(sVar8 + 1);\n  bVar5 = false;\n  iVar3 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar4 = false;\n  do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar7;\n  pbVar10 = pbVar10 + 1;\n  bVar7 = *param_1;\n  goto joined_r0x0003f5f5;\n}" primitive_type (function_declarator "FUN_0003f540(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  bool bVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  size_t sVar8;\n  byte *__ptr;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int local_3c;\n  int local_38;\n  int local_2c;\n  undefined4 *local_20;\n  \n  FUN_0002a32f();\n  local_3c = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar6 = false;\n  sVar8 = strlen((char *)param_1);\n  __ptr = (byte *)xmalloc(sVar8 + 1);\n  bVar5 = false;\n  iVar3 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar4 = false;\n  do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar7;\n  pbVar10 = pbVar10 + 1;\n  bVar7 = *param_1;\n  goto joined_r0x0003f5f5;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "FUN_0002a32f();" (call_expression "FUN_0002a32f()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "sVar8 = strlen((char *)param_1);" (assignment_expression "sVar8 = strlen((char *)param_1)" identifier = (call_expression "strlen((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "__ptr = (byte *)xmalloc(sVar8 + 1);" (assignment_expression "__ptr = (byte *)xmalloc(sVar8 + 1)" identifier = (cast_expression "(byte *)xmalloc(sVar8 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar8 + 1)" identifier (argument_list "(sVar8 + 1)" ( (binary_expression "sVar8 + 1" identifier + number_literal) ))))) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "iVar3 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049);" (assignment_expression "iVar3 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049)" identifier = (pointer_expression "*(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049)" * (cast_expression "(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049)" ( (binary_expression ""/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049" (binary_expression ""/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI" (string_literal ""/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..."" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") comment + identifier) + number_literal) ))))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (do_statement "do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );" do (compound_statement "{\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  }" { (while_statement "while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }" while (parenthesized_expression "((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40)" ( (binary_expression "*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40" (pointer_expression "*(byte *)(iVar3 + (uint)*param_1 * 2)" * (cast_expression "(byte *)(iVar3 + (uint)*param_1 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)*param_1 * 2)" ( (binary_expression "iVar3 + (uint)*param_1 * 2" identifier + (binary_expression "(uint)*param_1 * 2" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      param_1 = param_1 + 1;\n    }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar1 = local_2c * 4;" (assignment_expression "iVar1 = local_2c * 4" identifier = (binary_expression "local_2c * 4" identifier * number_literal)) ;) (if_statement "if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" if (parenthesized_expression "((local_38 == 0) || (local_38 + -1 <= local_2c))" ( (binary_expression "(local_38 == 0) || (local_38 + -1 <= local_2c)" (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) || (parenthesized_expression "(local_38 + -1 <= local_2c)" ( (binary_expression "local_38 + -1 <= local_2c" (binary_expression "local_38 + -1" identifier + number_literal) <= identifier) ))) )) (compound_statement "{\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }" { (if_statement "if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }" { (expression_statement "local_3c = xmalloc(0x20);" (assignment_expression "local_3c = xmalloc(0x20)" identifier = (call_expression "xmalloc(0x20)" identifier (argument_list "(0x20)" ( number_literal )))) ;) (expression_statement "local_38 = 8;" (assignment_expression "local_38 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" else (compound_statement "{\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" { (expression_statement "local_3c = xrealloc(local_3c,local_38 << 3);" (assignment_expression "local_3c = xrealloc(local_3c,local_38 << 3)" identifier = (call_expression "xrealloc(local_3c,local_38 << 3)" identifier (argument_list "(local_3c,local_38 << 3)" ( identifier , (binary_expression "local_38 << 3" identifier << number_literal) )))) ;) (expression_statement "local_38 = local_38 << 1;" (assignment_expression "local_38 = local_38 << 1" identifier = (binary_expression "local_38 << 1" identifier << number_literal)) ;) }))) (expression_statement "local_20 = (undefined4 *)(local_3c + iVar1);" (assignment_expression "local_20 = (undefined4 *)(local_3c + iVar1)" identifier = (cast_expression "(undefined4 *)(local_3c + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + iVar1)" ( (binary_expression "local_3c + iVar1" identifier + identifier) )))) ;) (expression_statement "*local_20 = 0;" (assignment_expression "*local_20 = 0" (pointer_expression "*local_20" * identifier) = number_literal) ;) }) (else_clause "else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" else (compound_statement "{\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" { (expression_statement "local_20 = (undefined4 *)(local_3c + iVar1);" (assignment_expression "local_20 = (undefined4 *)(local_3c + iVar1)" identifier = (cast_expression "(undefined4 *)(local_3c + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + iVar1)" ( (binary_expression "local_3c + iVar1" identifier + identifier) )))) ;) }))) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" identifier = identifier) ;) (labeled_statement "joined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" statement_identifier : (if_statement "if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" { (do_statement "do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );" do (compound_statement "{\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      }" { (if_statement "if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }" if (parenthesized_expression "(((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4))" ( (binary_expression "((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)" (parenthesized_expression "((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40)" ( (binary_expression "*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40" (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" * (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" ( (binary_expression "iVar3 + (uint)bVar7 * 2" identifier + (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((!bVar5 && !bVar6) && !bVar4)" ( (binary_expression "(!bVar5 && !bVar6) && !bVar4" (parenthesized_expression "(!bVar5 && !bVar6)" ( (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" ! identifier) && (unary_expression "!bVar6" ! identifier)) )) && (unary_expression "!bVar4" ! identifier)) ))) )) (compound_statement "{\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (break_statement "break;" break ;) })) (if_statement "if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }" { (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) (else_clause "else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar7 == 0x5c)" ( (binary_expression "bVar7 == 0x5c" identifier == number_literal) )) (compound_statement "{\n          bVar6 = true;\n        }" { (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) }) (else_clause "else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }" { (if_statement "if (bVar7 != 0x27) goto code_r0x0003f644;" if (parenthesized_expression "(bVar7 != 0x27)" ( (binary_expression "bVar7 != 0x27" identifier != number_literal) )) (goto_statement "goto code_r0x0003f644;" goto statement_identifier ;)) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) }) (else_clause "else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }" { (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (if_statement "if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" if (parenthesized_expression "(bVar7 == 0x22)" ( (binary_expression "bVar7 == 0x22" identifier == number_literal) )) (compound_statement "{\n            bVar4 = false;\n          }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" else (compound_statement "{\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" { (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (compound_statement "{\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" { (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (if_statement "if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" if (parenthesized_expression "(bVar7 == 0x27)" ( (binary_expression "bVar7 == 0x27" identifier == number_literal) )) (compound_statement "{\n            bVar5 = true;\n          }" { (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) }) (else_clause "else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" else (compound_statement "{\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" { (expression_statement "bVar5 = bVar6;" (assignment_expression "bVar5 = bVar6" identifier = identifier) ;) (if_statement "if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" if (parenthesized_expression "(bVar7 == 0x22)" ( (binary_expression "bVar7 == 0x22" identifier == number_literal) )) (compound_statement "{\n              bVar4 = true;\n            }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }) (else_clause "else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" else (compound_statement "{\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" { (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }))) }))) }))))))))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (bVar7 == 0) break;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*pbVar10 = 0;" (assignment_expression "*pbVar10 = 0" (pointer_expression "*pbVar10" * identifier) = number_literal) ;) (expression_statement "uVar9 = xstrdup(__ptr);" (assignment_expression "uVar9 = xstrdup(__ptr)" identifier = (call_expression "xstrdup(__ptr)" identifier (argument_list "(__ptr)" ( identifier )))) ;) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (expression_statement "*local_20 = uVar9;" (assignment_expression "*local_20 = uVar9" (pointer_expression "*local_20" * identifier) = identifier) ;) (expression_statement "*(undefined4 *)(local_3c + 4 + iVar1) = 0;" (assignment_expression "*(undefined4 *)(local_3c + 4 + iVar1) = 0" (pointer_expression "*(undefined4 *)(local_3c + 4 + iVar1)" * (cast_expression "(undefined4 *)(local_3c + 4 + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 4 + iVar1)" ( (binary_expression "local_3c + 4 + iVar1" (binary_expression "local_3c + 4" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);" (assignment_expression "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2)" identifier = (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" * (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" ( (binary_expression "iVar3 + (uint)bVar7 * 2" identifier + (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (while_statement "while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }" while (parenthesized_expression "((bVar2 & 0x40) != 0)" ( (binary_expression "(bVar2 & 0x40) != 0" (parenthesized_expression "(bVar2 & 0x40)" ( (binary_expression "bVar2 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);" (assignment_expression "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2)" identifier = (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" * (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" ( (binary_expression "iVar3 + (uint)bVar7 * 2" identifier + (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) })) (if_statement "if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      free(__ptr);\n      return local_3c;\n    }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return local_3c;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x0003f644:\n  param_1 = param_1 + 1;" statement_identifier : (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;)) (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto joined_r0x0003f5f5;" goto statement_identifier ;) })))
(translation_unit "char ** buildargv(char *input)\n\n{\n  byte bVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  char *pcVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  char **local_3c;\n  int local_38;\n  int local_2c;\n  char **local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_3c = (char **)0x0;\n  if (input == (char *)0x0) {\n    return (char **)0x0;\n  }\n  bVar5 = false;\n  sVar7 = strlen(input);\n  __ptr = (byte *)xmalloc(sVar7 + 1);\n  bVar4 = false;\n  iVar2 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar3 = false;\n  do {\n    while ((*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == (char **)0x0) {\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = local_3c + local_2c;\n      *local_20 = (char *)0x0;\n    }\n    else {\n      local_20 = local_3c + local_2c;\n    }\n    bVar6 = *input;\n    pbVar9 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar6 != 0) {\n      do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar9 = 0;\n    pcVar8 = (char *)xstrdup(__ptr);\n    *local_20 = pcVar8;\n    local_3c[local_2c + 1] = (char *)0x0;\n    bVar6 = *input;\n    bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar6 = *input;\n      bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    }\n    local_2c = local_2c + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  input = (char *)((byte *)input + 1);\n  *pbVar9 = bVar6;\n  pbVar9 = pbVar9 + 1;\n  bVar6 = *input;\n  goto joined_r0x0003f5f5;\n}\n\n" (function_definition "char ** buildargv(char *input)\n\n{\n  byte bVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  char *pcVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  char **local_3c;\n  int local_38;\n  int local_2c;\n  char **local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_3c = (char **)0x0;\n  if (input == (char *)0x0) {\n    return (char **)0x0;\n  }\n  bVar5 = false;\n  sVar7 = strlen(input);\n  __ptr = (byte *)xmalloc(sVar7 + 1);\n  bVar4 = false;\n  iVar2 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar3 = false;\n  do {\n    while ((*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == (char **)0x0) {\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = local_3c + local_2c;\n      *local_20 = (char *)0x0;\n    }\n    else {\n      local_20 = local_3c + local_2c;\n    }\n    bVar6 = *input;\n    pbVar9 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar6 != 0) {\n      do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar9 = 0;\n    pcVar8 = (char *)xstrdup(__ptr);\n    *local_20 = pcVar8;\n    local_3c[local_2c + 1] = (char *)0x0;\n    bVar6 = *input;\n    bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar6 = *input;\n      bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    }\n    local_2c = local_2c + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  input = (char *)((byte *)input + 1);\n  *pbVar9 = bVar6;\n  pbVar9 = pbVar9 + 1;\n  bVar6 = *input;\n  goto joined_r0x0003f5f5;\n}" primitive_type (pointer_declarator "** buildargv(char *input)" * (pointer_declarator "* buildargv(char *input)" * (function_declarator "buildargv(char *input)" identifier (parameter_list "(char *input)" ( (parameter_declaration "char *input" primitive_type (pointer_declarator "*input" * identifier)) ))))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  byte bVar6;\n  size_t sVar7;\n  byte *__ptr;\n  char *pcVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  char **local_3c;\n  int local_38;\n  int local_2c;\n  char **local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_3c = (char **)0x0;\n  if (input == (char *)0x0) {\n    return (char **)0x0;\n  }\n  bVar5 = false;\n  sVar7 = strlen(input);\n  __ptr = (byte *)xmalloc(sVar7 + 1);\n  bVar4 = false;\n  iVar2 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar3 = false;\n  do {\n    while ((*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == (char **)0x0) {\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = local_3c + local_2c;\n      *local_20 = (char *)0x0;\n    }\n    else {\n      local_20 = local_3c + local_2c;\n    }\n    bVar6 = *input;\n    pbVar9 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar6 != 0) {\n      do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar9 = 0;\n    pcVar8 = (char *)xstrdup(__ptr);\n    *local_20 = pcVar8;\n    local_3c[local_2c + 1] = (char *)0x0;\n    bVar6 = *input;\n    bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar6 = *input;\n      bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    }\n    local_2c = local_2c + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  input = (char *)((byte *)input + 1);\n  *pbVar9 = bVar6;\n  pbVar9 = pbVar9 + 1;\n  bVar6 = *input;\n  goto joined_r0x0003f5f5;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "char **local_3c;" primitive_type (pointer_declarator "**local_3c" * (pointer_declarator "*local_3c" * identifier)) ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "char **local_20;" primitive_type (pointer_declarator "**local_20" * (pointer_declarator "*local_20" * identifier)) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_3c = (char **)0x0;" (assignment_expression "local_3c = (char **)0x0" identifier = (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (input == (char *)0x0) {\n    return (char **)0x0;\n  }" if (parenthesized_expression "(input == (char *)0x0)" ( (binary_expression "input == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (char **)0x0;\n  }" { (return_statement "return (char **)0x0;" return (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ;) })) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "sVar7 = strlen(input);" (assignment_expression "sVar7 = strlen(input)" identifier = (call_expression "strlen(input)" identifier (argument_list "(input)" ( identifier )))) ;) (expression_statement "__ptr = (byte *)xmalloc(sVar7 + 1);" (assignment_expression "__ptr = (byte *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(byte *)xmalloc(sVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "iVar2 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049);" (assignment_expression "iVar2 = *(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049)" identifier = (pointer_expression "*(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049)" * (cast_expression "(int *)(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(\n                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049)" ( (binary_expression ""/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI + 0x2049" (binary_expression ""/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */\n                  + unaff_EDI" (string_literal ""/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..."" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") comment + identifier) + number_literal) ))))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (do_statement "do {\n    while ((*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == (char **)0x0) {\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = local_3c + local_2c;\n      *local_20 = (char *)0x0;\n    }\n    else {\n      local_20 = local_3c + local_2c;\n    }\n    bVar6 = *input;\n    pbVar9 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar6 != 0) {\n      do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar9 = 0;\n    pcVar8 = (char *)xstrdup(__ptr);\n    *local_20 = pcVar8;\n    local_3c[local_2c + 1] = (char *)0x0;\n    bVar6 = *input;\n    bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar6 = *input;\n      bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    }\n    local_2c = local_2c + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );" do (compound_statement "{\n    while ((*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == (char **)0x0) {\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = local_3c + local_2c;\n      *local_20 = (char *)0x0;\n    }\n    else {\n      local_20 = local_3c + local_2c;\n    }\n    bVar6 = *input;\n    pbVar9 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar6 != 0) {\n      do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );\n    }\n    *pbVar9 = 0;\n    pcVar8 = (char *)xstrdup(__ptr);\n    *local_20 = pcVar8;\n    local_3c[local_2c + 1] = (char *)0x0;\n    bVar6 = *input;\n    bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar6 = *input;\n      bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    }\n    local_2c = local_2c + 1;\n    if (bVar6 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  }" { (while_statement "while ((*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n    }" while (parenthesized_expression "((*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40)" ( (binary_expression "*(byte *)(iVar2 + (uint)(byte)*input * 2) & 0x40" (pointer_expression "*(byte *)(iVar2 + (uint)(byte)*input * 2)" * (cast_expression "(byte *)(iVar2 + (uint)(byte)*input * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + (uint)(byte)*input * 2)" ( (binary_expression "iVar2 + (uint)(byte)*input * 2" identifier + (binary_expression "(uint)(byte)*input * 2" (binary_expression "(uint)(byte)*input" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      input = (char *)((byte *)input + 1);\n    }" { (expression_statement "input = (char *)((byte *)input + 1);" (assignment_expression "input = (char *)((byte *)input + 1)" identifier = (cast_expression "(char *)((byte *)input + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input + 1)" ( (binary_expression "(byte *)input + 1" (cast_expression "(byte *)input" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) })) (if_statement "if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == (char **)0x0) {\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = local_3c + local_2c;\n      *local_20 = (char *)0x0;\n    }\n    else {\n      local_20 = local_3c + local_2c;\n    }" if (parenthesized_expression "((local_38 == 0) || (local_38 + -1 <= local_2c))" ( (binary_expression "(local_38 == 0) || (local_38 + -1 <= local_2c)" (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) || (parenthesized_expression "(local_38 + -1 <= local_2c)" ( (binary_expression "local_38 + -1 <= local_2c" (binary_expression "local_38 + -1" identifier + number_literal) <= identifier) ))) )) (compound_statement "{\n      if (local_3c == (char **)0x0) {\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = local_3c + local_2c;\n      *local_20 = (char *)0x0;\n    }" { (if_statement "if (local_3c == (char **)0x0) {\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" if (parenthesized_expression "(local_3c == (char **)0x0)" ( (binary_expression "local_3c == (char **)0x0" identifier == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        local_3c = (char **)xmalloc(0x20);\n        local_38 = 8;\n      }" { (expression_statement "local_3c = (char **)xmalloc(0x20);" (assignment_expression "local_3c = (char **)xmalloc(0x20)" identifier = (cast_expression "(char **)xmalloc(0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "local_38 = 8;" (assignment_expression "local_38 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" else (compound_statement "{\n        local_3c = (char **)xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" { (expression_statement "local_3c = (char **)xrealloc(local_3c,local_38 << 3);" (assignment_expression "local_3c = (char **)xrealloc(local_3c,local_38 << 3)" identifier = (cast_expression "(char **)xrealloc(local_3c,local_38 << 3)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xrealloc(local_3c,local_38 << 3)" identifier (argument_list "(local_3c,local_38 << 3)" ( identifier , (binary_expression "local_38 << 3" identifier << number_literal) ))))) ;) (expression_statement "local_38 = local_38 << 1;" (assignment_expression "local_38 = local_38 << 1" identifier = (binary_expression "local_38 << 1" identifier << number_literal)) ;) }))) (expression_statement "local_20 = local_3c + local_2c;" (assignment_expression "local_20 = local_3c + local_2c" identifier = (binary_expression "local_3c + local_2c" identifier + identifier)) ;) (expression_statement "*local_20 = (char *)0x0;" (assignment_expression "*local_20 = (char *)0x0" (pointer_expression "*local_20" * identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      local_20 = local_3c + local_2c;\n    }" else (compound_statement "{\n      local_20 = local_3c + local_2c;\n    }" { (expression_statement "local_20 = local_3c + local_2c;" (assignment_expression "local_20 = local_3c + local_2c" identifier = (binary_expression "local_3c + local_2c" identifier + identifier)) ;) }))) (expression_statement "bVar6 = *input;" (assignment_expression "bVar6 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (expression_statement "pbVar9 = __ptr;" (assignment_expression "pbVar9 = __ptr" identifier = identifier) ;) (labeled_statement "joined_r0x0003f5f5:\n    if (bVar6 != 0) {\n      do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" statement_identifier : (if_statement "if (bVar6 != 0) {\n      do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );\n    }" { (do_statement "do {\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      } while( true );" do (compound_statement "{\n        if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }\n        if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }\n        input = (char *)((byte *)input + 1);\n        bVar6 = *input;\n        if (bVar6 == 0) break;\n      }" { (if_statement "if (((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }" if (parenthesized_expression "(((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3))" ( (binary_expression "((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)" (parenthesized_expression "((*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40)" ( (binary_expression "*(byte *)(iVar2 + (uint)bVar6 * 2) & 0x40" (pointer_expression "*(byte *)(iVar2 + (uint)bVar6 * 2)" * (cast_expression "(byte *)(iVar2 + (uint)bVar6 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + (uint)bVar6 * 2)" ( (binary_expression "iVar2 + (uint)bVar6 * 2" identifier + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((!bVar4 && !bVar5) && !bVar3)" ( (binary_expression "(!bVar4 && !bVar5) && !bVar3" (parenthesized_expression "(!bVar4 && !bVar5)" ( (binary_expression "!bVar4 && !bVar5" (unary_expression "!bVar4" ! identifier) && (unary_expression "!bVar5" ! identifier)) )) && (unary_expression "!bVar3" ! identifier)) ))) )) (compound_statement "{\n          bVar3 = false;\n          bVar4 = false;\n          bVar5 = false;\n          break;\n        }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (break_statement "break;" break ;) })) (if_statement "if (bVar5) {\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }\n        else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n          *pbVar9 = bVar6;\n          bVar5 = false;\n          pbVar9 = pbVar9 + 1;\n        }" { (expression_statement "*pbVar9 = bVar6;" (assignment_expression "*pbVar9 = bVar6" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) (else_clause "else if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar6 == 0x5c) {\n          bVar5 = true;\n        }\n        else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar6 == 0x5c)" ( (binary_expression "bVar6 == 0x5c" identifier == number_literal) )) (compound_statement "{\n          bVar5 = true;\n        }" { (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) }) (else_clause "else if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar4) {\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }\n        else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if (bVar6 != 0x27) goto code_r0x0003f644;\n          bVar4 = false;\n        }" { (if_statement "if (bVar6 != 0x27) goto code_r0x0003f644;" if (parenthesized_expression "(bVar6 != 0x27)" ( (binary_expression "bVar6 != 0x27" identifier != number_literal) )) (goto_statement "goto code_r0x0003f644;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar3) {\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }\n        else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n          bVar5 = false;\n          if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }\n        }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (if_statement "if (bVar6 == 0x22) {\n            bVar3 = false;\n          }\n          else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }" if (parenthesized_expression "(bVar6 == 0x22)" ( (binary_expression "bVar6 == 0x22" identifier == number_literal) )) (compound_statement "{\n            bVar3 = false;\n          }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }) (else_clause "else {\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }" else (compound_statement "{\n            *pbVar9 = bVar6;\n            pbVar9 = pbVar9 + 1;\n          }" { (expression_statement "*pbVar9 = bVar6;" (assignment_expression "*pbVar9 = bVar6" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" else (compound_statement "{\n          bVar5 = false;\n          if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }\n        }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (if_statement "if (bVar6 == 0x27) {\n            bVar4 = true;\n          }\n          else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }" if (parenthesized_expression "(bVar6 == 0x27)" ( (binary_expression "bVar6 == 0x27" identifier == number_literal) )) (compound_statement "{\n            bVar4 = true;\n          }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }) (else_clause "else {\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }" else (compound_statement "{\n            bVar4 = bVar5;\n            if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }\n          }" { (expression_statement "bVar4 = bVar5;" (assignment_expression "bVar4 = bVar5" identifier = identifier) ;) (if_statement "if (bVar6 == 0x22) {\n              bVar3 = true;\n            }\n            else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }" if (parenthesized_expression "(bVar6 == 0x22)" ( (binary_expression "bVar6 == 0x22" identifier == number_literal) )) (compound_statement "{\n              bVar3 = true;\n            }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }" else (compound_statement "{\n              *pbVar9 = bVar6;\n              pbVar9 = pbVar9 + 1;\n            }" { (expression_statement "*pbVar9 = bVar6;" (assignment_expression "*pbVar9 = bVar6" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }))) }))) }))))))))) (expression_statement "input = (char *)((byte *)input + 1);" (assignment_expression "input = (char *)((byte *)input + 1)" identifier = (cast_expression "(char *)((byte *)input + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input + 1)" ( (binary_expression "(byte *)input + 1" (cast_expression "(byte *)input" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar6 = *input;" (assignment_expression "bVar6 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (if_statement "if (bVar6 == 0) break;" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*pbVar9 = 0;" (assignment_expression "*pbVar9 = 0" (pointer_expression "*pbVar9" * identifier) = number_literal) ;) (expression_statement "pcVar8 = (char *)xstrdup(__ptr);" (assignment_expression "pcVar8 = (char *)xstrdup(__ptr)" identifier = (cast_expression "(char *)xstrdup(__ptr)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))))) ;) (expression_statement "*local_20 = pcVar8;" (assignment_expression "*local_20 = pcVar8" (pointer_expression "*local_20" * identifier) = identifier) ;) (expression_statement "local_3c[local_2c + 1] = (char *)0x0;" (assignment_expression "local_3c[local_2c + 1] = (char *)0x0" (subscript_expression "local_3c[local_2c + 1]" identifier [ (binary_expression "local_2c + 1" identifier + number_literal) ]) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar6 = *input;" (assignment_expression "bVar6 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (expression_statement "bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);" (assignment_expression "bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2)" identifier = (pointer_expression "*(byte *)(iVar2 + (uint)bVar6 * 2)" * (cast_expression "(byte *)(iVar2 + (uint)bVar6 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + (uint)bVar6 * 2)" ( (binary_expression "iVar2 + (uint)bVar6 * 2" identifier + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (while_statement "while ((bVar1 & 0x40) != 0) {\n      input = (char *)((byte *)input + 1);\n      bVar6 = *input;\n      bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    }" while (parenthesized_expression "((bVar1 & 0x40) != 0)" ( (binary_expression "(bVar1 & 0x40) != 0" (parenthesized_expression "(bVar1 & 0x40)" ( (binary_expression "bVar1 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      input = (char *)((byte *)input + 1);\n      bVar6 = *input;\n      bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);\n    }" { (expression_statement "input = (char *)((byte *)input + 1);" (assignment_expression "input = (char *)((byte *)input + 1)" identifier = (cast_expression "(char *)((byte *)input + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input + 1)" ( (binary_expression "(byte *)input + 1" (cast_expression "(byte *)input" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar6 = *input;" (assignment_expression "bVar6 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (expression_statement "bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2);" (assignment_expression "bVar1 = *(byte *)(iVar2 + (uint)bVar6 * 2)" identifier = (pointer_expression "*(byte *)(iVar2 + (uint)bVar6 * 2)" * (cast_expression "(byte *)(iVar2 + (uint)bVar6 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + (uint)bVar6 * 2)" ( (binary_expression "iVar2 + (uint)bVar6 * 2" identifier + (binary_expression "(uint)bVar6 * 2" (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) })) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (if_statement "if (bVar6 == 0) {\n      free(__ptr);\n      return local_3c;\n    }" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      free(__ptr);\n      return local_3c;\n    }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return local_3c;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x0003f644:\n  input = (char *)((byte *)input + 1);" statement_identifier : (expression_statement "input = (char *)((byte *)input + 1);" (assignment_expression "input = (char *)((byte *)input + 1)" identifier = (cast_expression "(char *)((byte *)input + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)input + 1)" ( (binary_expression "(byte *)input + 1" (cast_expression "(byte *)input" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;)) (expression_statement "*pbVar9 = bVar6;" (assignment_expression "*pbVar9 = bVar6" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar6 = *input;" (assignment_expression "bVar6 = *input" identifier = (pointer_expression "*input" * identifier)) ;) (goto_statement "goto joined_r0x0003f5f5;" goto statement_identifier ;) })))
(translation_unit "int FUN_0003f540(byte *param_1)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  bool bVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  size_t sVar8;\n  byte *__ptr;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int local_3c;\n  int local_38;\n  int local_2c;\n  undefined4 *local_20;\n  \n  FUN_0002a32f();\n  local_3c = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar6 = false;\n  sVar8 = strlen((char *)param_1);\n  __ptr = (byte *)xmalloc(sVar8 + 1);\n  bVar5 = false;\n  iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar4 = false;\n  do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar7;\n  pbVar10 = pbVar10 + 1;\n  bVar7 = *param_1;\n  goto joined_r0x0003f5f5;\n}\n\n" (function_definition "int FUN_0003f540(byte *param_1)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  bool bVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  size_t sVar8;\n  byte *__ptr;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int local_3c;\n  int local_38;\n  int local_2c;\n  undefined4 *local_20;\n  \n  FUN_0002a32f();\n  local_3c = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar6 = false;\n  sVar8 = strlen((char *)param_1);\n  __ptr = (byte *)xmalloc(sVar8 + 1);\n  bVar5 = false;\n  iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar4 = false;\n  do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar7;\n  pbVar10 = pbVar10 + 1;\n  bVar7 = *param_1;\n  goto joined_r0x0003f5f5;\n}" primitive_type (function_declarator "FUN_0003f540(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  bool bVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  size_t sVar8;\n  byte *__ptr;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int local_3c;\n  int local_38;\n  int local_2c;\n  undefined4 *local_20;\n  \n  FUN_0002a32f();\n  local_3c = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar6 = false;\n  sVar8 = strlen((char *)param_1);\n  __ptr = (byte *)xmalloc(sVar8 + 1);\n  bVar5 = false;\n  iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar4 = false;\n  do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar7;\n  pbVar10 = pbVar10 + 1;\n  bVar7 = *param_1;\n  goto joined_r0x0003f5f5;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "FUN_0002a32f();" (call_expression "FUN_0002a32f()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "sVar8 = strlen((char *)param_1);" (assignment_expression "sVar8 = strlen((char *)param_1)" identifier = (call_expression "strlen((char *)param_1)" identifier (argument_list "((char *)param_1)" ( (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "__ptr = (byte *)xmalloc(sVar8 + 1);" (assignment_expression "__ptr = (byte *)xmalloc(sVar8 + 1)" identifier = (cast_expression "(byte *)xmalloc(sVar8 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar8 + 1)" identifier (argument_list "(sVar8 + 1)" ( (binary_expression "sVar8 + 1" identifier + number_literal) ))))) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049);" (assignment_expression "iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049)" identifier = (pointer_expression "*(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049)" * (cast_expression "(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049)" ( (binary_expression ""\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049" (binary_expression ""\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI" (string_literal ""\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..."" " escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") + identifier) + number_literal) ))))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (do_statement "do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );" do (compound_statement "{\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  }" { (while_statement "while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }" while (parenthesized_expression "((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40)" ( (binary_expression "*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40" (pointer_expression "*(byte *)(iVar3 + (uint)*param_1 * 2)" * (cast_expression "(byte *)(iVar3 + (uint)*param_1 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)*param_1 * 2)" ( (binary_expression "iVar3 + (uint)*param_1 * 2" identifier + (binary_expression "(uint)*param_1 * 2" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      param_1 = param_1 + 1;\n    }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar1 = local_2c * 4;" (assignment_expression "iVar1 = local_2c * 4" identifier = (binary_expression "local_2c * 4" identifier * number_literal)) ;) (if_statement "if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" if (parenthesized_expression "((local_38 == 0) || (local_38 + -1 <= local_2c))" ( (binary_expression "(local_38 == 0) || (local_38 + -1 <= local_2c)" (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) || (parenthesized_expression "(local_38 + -1 <= local_2c)" ( (binary_expression "local_38 + -1 <= local_2c" (binary_expression "local_38 + -1" identifier + number_literal) <= identifier) ))) )) (compound_statement "{\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }" { (if_statement "if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }" { (expression_statement "local_3c = xmalloc(0x20);" (assignment_expression "local_3c = xmalloc(0x20)" identifier = (call_expression "xmalloc(0x20)" identifier (argument_list "(0x20)" ( number_literal )))) ;) (expression_statement "local_38 = 8;" (assignment_expression "local_38 = 8" identifier = number_literal) ;) }) (else_clause "else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" else (compound_statement "{\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" { (expression_statement "local_3c = xrealloc(local_3c,local_38 << 3);" (assignment_expression "local_3c = xrealloc(local_3c,local_38 << 3)" identifier = (call_expression "xrealloc(local_3c,local_38 << 3)" identifier (argument_list "(local_3c,local_38 << 3)" ( identifier , (binary_expression "local_38 << 3" identifier << number_literal) )))) ;) (expression_statement "local_38 = local_38 << 1;" (assignment_expression "local_38 = local_38 << 1" identifier = (binary_expression "local_38 << 1" identifier << number_literal)) ;) }))) (expression_statement "local_20 = (undefined4 *)(local_3c + iVar1);" (assignment_expression "local_20 = (undefined4 *)(local_3c + iVar1)" identifier = (cast_expression "(undefined4 *)(local_3c + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + iVar1)" ( (binary_expression "local_3c + iVar1" identifier + identifier) )))) ;) (expression_statement "*local_20 = 0;" (assignment_expression "*local_20 = 0" (pointer_expression "*local_20" * identifier) = number_literal) ;) }) (else_clause "else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" else (compound_statement "{\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" { (expression_statement "local_20 = (undefined4 *)(local_3c + iVar1);" (assignment_expression "local_20 = (undefined4 *)(local_3c + iVar1)" identifier = (cast_expression "(undefined4 *)(local_3c + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + iVar1)" ( (binary_expression "local_3c + iVar1" identifier + identifier) )))) ;) }))) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" identifier = identifier) ;) (labeled_statement "joined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" statement_identifier : (if_statement "if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" { (do_statement "do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );" do (compound_statement "{\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      }" { (if_statement "if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }" if (parenthesized_expression "(((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4))" ( (binary_expression "((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)" (parenthesized_expression "((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40)" ( (binary_expression "*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40" (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" * (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" ( (binary_expression "iVar3 + (uint)bVar7 * 2" identifier + (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((!bVar5 && !bVar6) && !bVar4)" ( (binary_expression "(!bVar5 && !bVar6) && !bVar4" (parenthesized_expression "(!bVar5 && !bVar6)" ( (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" ! identifier) && (unary_expression "!bVar6" ! identifier)) )) && (unary_expression "!bVar4" ! identifier)) ))) )) (compound_statement "{\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (break_statement "break;" break ;) })) (if_statement "if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }" { (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) (else_clause "else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar7 == 0x5c)" ( (binary_expression "bVar7 == 0x5c" identifier == number_literal) )) (compound_statement "{\n          bVar6 = true;\n        }" { (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) }) (else_clause "else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }" { (if_statement "if (bVar7 != 0x27) goto code_r0x0003f644;" if (parenthesized_expression "(bVar7 != 0x27)" ( (binary_expression "bVar7 != 0x27" identifier != number_literal) )) (goto_statement "goto code_r0x0003f644;" goto statement_identifier ;)) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) }) (else_clause "else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (if_statement "if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }" { (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (if_statement "if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" if (parenthesized_expression "(bVar7 == 0x22)" ( (binary_expression "bVar7 == 0x22" identifier == number_literal) )) (compound_statement "{\n            bVar4 = false;\n          }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" else (compound_statement "{\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" { (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" else (compound_statement "{\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" { (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (if_statement "if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" if (parenthesized_expression "(bVar7 == 0x27)" ( (binary_expression "bVar7 == 0x27" identifier == number_literal) )) (compound_statement "{\n            bVar5 = true;\n          }" { (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) }) (else_clause "else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" else (compound_statement "{\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" { (expression_statement "bVar5 = bVar6;" (assignment_expression "bVar5 = bVar6" identifier = identifier) ;) (if_statement "if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" if (parenthesized_expression "(bVar7 == 0x22)" ( (binary_expression "bVar7 == 0x22" identifier == number_literal) )) (compound_statement "{\n              bVar4 = true;\n            }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }) (else_clause "else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" else (compound_statement "{\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" { (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }))) }))) }))))))))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (bVar7 == 0) break;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*pbVar10 = 0;" (assignment_expression "*pbVar10 = 0" (pointer_expression "*pbVar10" * identifier) = number_literal) ;) (expression_statement "uVar9 = xstrdup(__ptr);" (assignment_expression "uVar9 = xstrdup(__ptr)" identifier = (call_expression "xstrdup(__ptr)" identifier (argument_list "(__ptr)" ( identifier )))) ;) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (expression_statement "*local_20 = uVar9;" (assignment_expression "*local_20 = uVar9" (pointer_expression "*local_20" * identifier) = identifier) ;) (expression_statement "*(undefined4 *)(local_3c + 4 + iVar1) = 0;" (assignment_expression "*(undefined4 *)(local_3c + 4 + iVar1) = 0" (pointer_expression "*(undefined4 *)(local_3c + 4 + iVar1)" * (cast_expression "(undefined4 *)(local_3c + 4 + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + 4 + iVar1)" ( (binary_expression "local_3c + 4 + iVar1" (binary_expression "local_3c + 4" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);" (assignment_expression "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2)" identifier = (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" * (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" ( (binary_expression "iVar3 + (uint)bVar7 * 2" identifier + (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (while_statement "while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }" while (parenthesized_expression "((bVar2 & 0x40) != 0)" ( (binary_expression "(bVar2 & 0x40) != 0" (parenthesized_expression "(bVar2 & 0x40)" ( (binary_expression "bVar2 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);" (assignment_expression "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2)" identifier = (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" * (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" ( (binary_expression "iVar3 + (uint)bVar7 * 2" identifier + (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) })) (if_statement "if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      free(__ptr);\n      return local_3c;\n    }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return local_3c;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x0003f644:\n  param_1 = param_1 + 1;" statement_identifier : (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;)) (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" * identifier) = identifier) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto joined_r0x0003f5f5;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (string_literal " escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) && (unary_expression ! IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }))) }))))))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "int FUN_0003f540(byte *param_1)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  bool bVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  size_t sVar8;\n  byte *__ptr;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int local_3c;\n  int local_38;\n  int local_2c;\n  undefined4 *local_20;\n  \n  FUN_0002a32f();\n  local_3c = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar6 = false;\n  sVar8 = strlen((char *)param_1);\n  __ptr = (byte *)xmalloc(sVar8 + 1);\n  bVar5 = false;\n  iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar4 = false;\n  do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar7;\n  pbVar10 = pbVar10 + 1;\n  bVar7 = *param_1;\n  goto joined_r0x0003f5f5;\n}" (primitive_type "int") (function_declarator "FUN_0003f540(byte *param_1)" (identifier "FUN_0003f540") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  bool bVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  size_t sVar8;\n  byte *__ptr;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int local_3c;\n  int local_38;\n  int local_2c;\n  undefined4 *local_20;\n  \n  FUN_0002a32f();\n  local_3c = 0;\n  if (param_1 == (byte *)0x0) {\n    return 0;\n  }\n  bVar6 = false;\n  sVar8 = strlen((char *)param_1);\n  __ptr = (byte *)xmalloc(sVar8 + 1);\n  bVar5 = false;\n  iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049);\n  local_38 = 0;\n  local_2c = 0;\n  bVar4 = false;\n  do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );\ncode_r0x0003f644:\n  param_1 = param_1 + 1;\n  *pbVar10 = bVar7;\n  pbVar10 = pbVar10 + 1;\n  bVar7 = *param_1;\n  goto joined_r0x0003f5f5;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (declaration "size_t sVar8;" (primitive_type "size_t") (identifier "sVar8") (; ";")) (declaration "byte *__ptr;" (type_identifier "byte") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "undefined4 *local_20;" (type_identifier "undefined4") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "FUN_0002a32f();" (call_expression "FUN_0002a32f()" (identifier "FUN_0002a32f") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 == (byte *)0x0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_1 == (byte *)0x0)" (( "(") (binary_expression "param_1 == (byte *)0x0" (identifier "param_1") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (; ";")) (expression_statement "sVar8 = strlen((char *)param_1);" (assignment_expression "sVar8 = strlen((char *)param_1)" (identifier "sVar8") (= "=") (call_expression "strlen((char *)param_1)" (identifier "strlen") (argument_list "((char *)param_1)" (( "(") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "__ptr = (byte *)xmalloc(sVar8 + 1);" (assignment_expression "__ptr = (byte *)xmalloc(sVar8 + 1)" (identifier "__ptr") (= "=") (cast_expression "(byte *)xmalloc(sVar8 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar8 + 1)" (identifier "xmalloc") (argument_list "(sVar8 + 1)" (( "(") (binary_expression "sVar8 + 1" (identifier "sVar8") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (expression_statement "iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049);" (assignment_expression "iVar3 = *(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049)" (* "*") (cast_expression "(int *)(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(\n                  "\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049)" (( "(") (binary_expression ""\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI + 0x2049" (binary_expression ""\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." \n                  + unaff_EDI" (string_literal ""\n\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  \n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..."" (" """) (escape_sequence "\n") (escape_sequence "\n") (string_content "OUTPUT_FORMAT(") (escape_sequence "\"") (string_content "elf32-i386") (escape_sequence "\"") (string_content ", ") (escape_sequence "\"") (string_content "elf32-i386") (escape_sequence "\"") (string_content ",") (escape_sequence "\n") (escape_sequence "\t") (string_content "      ") (escape_sequence "\"") (string_content "elf32-i386") (escape_sequence "\"") (string_content ")") (escape_sequence "\n") (string_content "OUTPUT_ARCH(i386)") (escape_sequence "\n") (string_content "ENTRY(_start)") (escape_sequence "\n") (string_content "SEARCH_DIR(") (escape_sequence "\"") (string_content "=/usr/local/lib/i386-gnu") (escape_sequence "\"") (string_content "); SEARCH_DIR(") (escape_sequence "\"") (string_content "=/lib/i386-gnu") (escape_sequence "\"") (string_content "); SEARCH_DIR(") (escape_sequence "\"") (string_content "=/usr/lib/i386-gnu") (escape_sequence "\"") (string_content "); SEARCH_DIR(") (escape_sequence "\"") (string_content "=/usr/local/lib") (escape_sequence "\"") (string_content "); SEARCH_DIR(") (escape_sequence "\"") (string_content "=/lib") (escape_sequence "\"") (string_content "); SEARCH_DIR(") (escape_sequence "\"") (string_content "=/usr/lib") (escape_sequence "\"") (string_content "); SEARCH_DIR(") (escape_sequence "\"") (string_content "=/usr/i686-gnu/lib") (escape_sequence "\"") (string_content ");") (escape_sequence "\n") (string_content "SECTIONS") (escape_sequence "\n") (string_content "{") (escape_sequence "\n") (string_content "  ") (escape_sequence "\n") (string_content "  PROVIDE (__executable_start = SEGMENT_START(") (escape_sequence "\"") (string_content "text-segment") (escape_sequence "\"") (string_content ", 0x08048000)); . = SEGMENT_START(") (escape_sequence "\"") (string_content "text-segment") (escape_sequence "\"") (string_content ", 0x08048000) + SIZEOF_HEADERS;") (escape_sequence "\n") (string_content "  .interp         : { *(.interp) }") (escape_sequence "\n") (string_content "  .note.gnu.build-id : { *(.note.gnu.build-id) }") (escape_sequence "\n") (string_content "  .hash           : { *(.hash) }") (escape_sequence "\n") (string_content "  .gnu.hash       : { *(.gnu.hash) }") (escape_sequence "\n") (string_content "  .dynsym         : { *(.dynsym) }") (escape_sequence "\n") (string_content "  .dynstr         : { *(.dynstr) }") (escape_sequence "\n") (string_content "  .gnu.version    : { *(.gnu.version) }") (escape_sequence "\n") (string_content "  .gnu.version_d  : { *(.gnu.version_d) }") (escape_sequence "\n") (string_content "  .gnu.version_r  : { *(.gnu.version_r) }") (escape_sequence "\n") (string_content "  .rel.init       : { *(.rel.init) }") (escape_sequence "\n") (string_content "  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }") (escape_sequence "\n") (string_content "  .rel.fini       : { *(.rel.fini) }") (escape_sequence "\n") (string_content "  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }") (escape_sequence "\n") (string_content "  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }") (escape_sequence "\n") (string_content "  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }") (escape_sequence "\n") (string_content "  .rel.tdata") (escape_sequence "\t") (string_content "  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }") (escape_sequence "\n") (string_content "  .rel.tbss") (escape_sequence "\t") (string_content "  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }") (escape_sequence "\n") (string_content "  .rel.ctors      : { *(.rel.ctors) }") (escape_sequence "\n") (string_content "  .rel.dtors      : { *(.rel.dtors) }") (escape_sequence "\n") (string_content "  .rel.got        : { *(.rel.got) }") (escape_sequence "\n") (string_content "  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }") (escape_sequence "\n") (string_content "  .rel.ifunc      : { *(.rel.ifunc) }") (escape_sequence "\n") (string_content "  .rel.plt        :") (escape_sequence "\n") (string_content "    {") (escape_sequence "\n") (string_content "      *(.rel.plt)") (escape_sequence "\n") (string_content "      PROVIDE_HIDDEN (__rel_iplt_start = .);") (escape_sequence "\n") (string_content "      *(.rel.iplt)") (escape_sequence "\n") (string_content "      PROVIDE_HIDDEN (__rel_iplt_e...") (" """)) (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x2049")) () ")"))))) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (do_statement "do {\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }\n    iVar1 = local_2c * 4;\n    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }\n    bVar7 = *param_1;\n    pbVar10 = __ptr;\njoined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }\n    *pbVar10 = 0;\n    uVar9 = xstrdup(__ptr);\n    local_2c = local_2c + 1;\n    *local_20 = uVar9;\n    *(undefined4 *)(local_3c + 4 + iVar1) = 0;\n    bVar7 = *param_1;\n    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }\n    if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }\n  }" ({ "{") (while_statement "while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {\n      param_1 = param_1 + 1;\n    }" (while "while") (parenthesized_expression "((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40)" (( "(") (binary_expression "*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40" (pointer_expression "*(byte *)(iVar3 + (uint)*param_1 * 2)" (* "*") (cast_expression "(byte *)(iVar3 + (uint)*param_1 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + (uint)*param_1 * 2)" (( "(") (binary_expression "iVar3 + (uint)*param_1 * 2" (identifier "iVar3") (+ "+") (binary_expression "(uint)*param_1 * 2" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      param_1 = param_1 + 1;\n    }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar1 = local_2c * 4;" (assignment_expression "iVar1 = local_2c * 4" (identifier "iVar1") (= "=") (binary_expression "local_2c * 4" (identifier "local_2c") (* "*") (number_literal "4"))) (; ";")) (if_statement "if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }\n    else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" (if "if") (parenthesized_expression "((local_38 == 0) || (local_38 + -1 <= local_2c))" (( "(") (binary_expression "(local_38 == 0) || (local_38 + -1 <= local_2c)" (parenthesized_expression "(local_38 == 0)" (( "(") (binary_expression "local_38 == 0" (identifier "local_38") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_38 + -1 <= local_2c)" (( "(") (binary_expression "local_38 + -1 <= local_2c" (binary_expression "local_38 + -1" (identifier "local_38") (+ "+") (number_literal "-1")) (<= "<=") (identifier "local_2c")) () ")"))) () ")")) (compound_statement "{\n      if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }\n      local_20 = (undefined4 *)(local_3c + iVar1);\n      *local_20 = 0;\n    }" ({ "{") (if_statement "if (local_3c == 0) {\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }\n      else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" (if "if") (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_3c = xmalloc(0x20);\n        local_38 = 8;\n      }" ({ "{") (expression_statement "local_3c = xmalloc(0x20);" (assignment_expression "local_3c = xmalloc(0x20)" (identifier "local_3c") (= "=") (call_expression "xmalloc(0x20)" (identifier "xmalloc") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "local_38 = 8;" (assignment_expression "local_38 = 8" (identifier "local_38") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" (else "else") (compound_statement "{\n        local_3c = xrealloc(local_3c,local_38 << 3);\n        local_38 = local_38 << 1;\n      }" ({ "{") (expression_statement "local_3c = xrealloc(local_3c,local_38 << 3);" (assignment_expression "local_3c = xrealloc(local_3c,local_38 << 3)" (identifier "local_3c") (= "=") (call_expression "xrealloc(local_3c,local_38 << 3)" (identifier "xrealloc") (argument_list "(local_3c,local_38 << 3)" (( "(") (identifier "local_3c") (, ",") (binary_expression "local_38 << 3" (identifier "local_38") (<< "<<") (number_literal "3")) () ")")))) (; ";")) (expression_statement "local_38 = local_38 << 1;" (assignment_expression "local_38 = local_38 << 1" (identifier "local_38") (= "=") (binary_expression "local_38 << 1" (identifier "local_38") (<< "<<") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "local_20 = (undefined4 *)(local_3c + iVar1);" (assignment_expression "local_20 = (undefined4 *)(local_3c + iVar1)" (identifier "local_20") (= "=") (cast_expression "(undefined4 *)(local_3c + iVar1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + iVar1)" (( "(") (binary_expression "local_3c + iVar1" (identifier "local_3c") (+ "+") (identifier "iVar1")) () ")")))) (; ";")) (expression_statement "*local_20 = 0;" (assignment_expression "*local_20 = 0" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" (else "else") (compound_statement "{\n      local_20 = (undefined4 *)(local_3c + iVar1);\n    }" ({ "{") (expression_statement "local_20 = (undefined4 *)(local_3c + iVar1);" (assignment_expression "local_20 = (undefined4 *)(local_3c + iVar1)" (identifier "local_20") (= "=") (cast_expression "(undefined4 *)(local_3c + iVar1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + iVar1)" (( "(") (binary_expression "local_3c + iVar1" (identifier "local_3c") (+ "+") (identifier "iVar1")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" (identifier "bVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" (identifier "pbVar10") (= "=") (identifier "__ptr")) (; ";")) (labeled_statement "joined_r0x0003f5f5:\n    if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" (statement_identifier "joined_r0x0003f5f5") (: ":") (if_statement "if (bVar7 != 0) {\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(bVar7 != 0)" (( "(") (binary_expression "bVar7 != 0" (identifier "bVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );\n    }" ({ "{") (do_statement "do {\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      } while( true );" (do "do") (compound_statement "{\n        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }\n        if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }\n        param_1 = param_1 + 1;\n        bVar7 = *param_1;\n        if (bVar7 == 0) break;\n      }" ({ "{") (if_statement "if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }" (if "if") (parenthesized_expression "(((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4))" (( "(") (binary_expression "((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)" (parenthesized_expression "((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40)" (( "(") (binary_expression "*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40" (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" (* "*") (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" (( "(") (binary_expression "iVar3 + (uint)bVar7 * 2" (identifier "iVar3") (+ "+") (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((!bVar5 && !bVar6) && !bVar4)" (( "(") (binary_expression "(!bVar5 && !bVar6) && !bVar4" (parenthesized_expression "(!bVar5 && !bVar6)" (( "(") (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" (! "!") (identifier "bVar5")) (&& "&&") (unary_expression "!bVar6" (! "!") (identifier "bVar6"))) () ")")) (&& "&&") (unary_expression "!bVar4" (! "!") (identifier "bVar4"))) () ")"))) () ")")) (compound_statement "{\n          bVar4 = false;\n          bVar5 = false;\n          bVar6 = false;\n          break;\n        }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (bVar6) {\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }\n        else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar6)" (( "(") (identifier "bVar6") () ")")) (compound_statement "{\n          *pbVar10 = bVar7;\n          bVar6 = false;\n          pbVar10 = pbVar10 + 1;\n        }" ({ "{") (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar7")) (; ";")) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (else "else") (if_statement "if (bVar7 == 0x5c) {\n          bVar6 = true;\n        }\n        else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar7 == 0x5c)" (( "(") (binary_expression "bVar7 == 0x5c" (identifier "bVar7") (== "==") (number_literal "0x5c")) () ")")) (compound_statement "{\n          bVar6 = true;\n        }" ({ "{") (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" (identifier "bVar6") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (else "else") (if_statement "if (bVar5) {\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }\n        else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (compound_statement "{\n          if (bVar7 != 0x27) goto code_r0x0003f644;\n          bVar5 = false;\n        }" ({ "{") (if_statement "if (bVar7 != 0x27) goto code_r0x0003f644;" (if "if") (parenthesized_expression "(bVar7 != 0x27)" (( "(") (binary_expression "bVar7 != 0x27" (identifier "bVar7") (!= "!=") (number_literal "0x27")) () ")")) (goto_statement "goto code_r0x0003f644;" (goto "goto") (statement_identifier "code_r0x0003f644") (; ";"))) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (else "else") (if_statement "if (bVar4) {\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }\n        else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n          bVar6 = false;\n          if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }\n        }" ({ "{") (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (; ";")) (if_statement "if (bVar7 == 0x22) {\n            bVar4 = false;\n          }\n          else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" (if "if") (parenthesized_expression "(bVar7 == 0x22)" (( "(") (binary_expression "bVar7 == 0x22" (identifier "bVar7") (== "==") (number_literal "0x22")) () ")")) (compound_statement "{\n            bVar4 = false;\n          }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" (else "else") (compound_statement "{\n            *pbVar10 = bVar7;\n            pbVar10 = pbVar10 + 1;\n          }" ({ "{") (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar7")) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          bVar6 = false;\n          if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }\n        }" ({ "{") (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (; ";")) (if_statement "if (bVar7 == 0x27) {\n            bVar5 = true;\n          }\n          else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" (if "if") (parenthesized_expression "(bVar7 == 0x27)" (( "(") (binary_expression "bVar7 == 0x27" (identifier "bVar7") (== "==") (number_literal "0x27")) () ")")) (compound_statement "{\n            bVar5 = true;\n          }" ({ "{") (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" (identifier "bVar5") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" (else "else") (compound_statement "{\n            bVar5 = bVar6;\n            if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }\n          }" ({ "{") (expression_statement "bVar5 = bVar6;" (assignment_expression "bVar5 = bVar6" (identifier "bVar5") (= "=") (identifier "bVar6")) (; ";")) (if_statement "if (bVar7 == 0x22) {\n              bVar4 = true;\n            }\n            else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" (if "if") (parenthesized_expression "(bVar7 == 0x22)" (( "(") (binary_expression "bVar7 == 0x22" (identifier "bVar7") (== "==") (number_literal "0x22")) () ")")) (compound_statement "{\n              bVar4 = true;\n            }" ({ "{") (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" (identifier "bVar4") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" (else "else") (compound_statement "{\n              *pbVar10 = bVar7;\n              pbVar10 = pbVar10 + 1;\n            }" ({ "{") (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar7")) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")))) (} "}")))))))))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" (identifier "bVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (bVar7 == 0) break;" (if "if") (parenthesized_expression "(bVar7 == 0)" (( "(") (binary_expression "bVar7 == 0" (identifier "bVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (expression_statement "*pbVar10 = 0;" (assignment_expression "*pbVar10 = 0" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = xstrdup(__ptr);" (assignment_expression "uVar9 = xstrdup(__ptr)" (identifier "uVar9") (= "=") (call_expression "xstrdup(__ptr)" (identifier "xstrdup") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")")))) (; ";")) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" (identifier "local_2c") (= "=") (binary_expression "local_2c + 1" (identifier "local_2c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*local_20 = uVar9;" (assignment_expression "*local_20 = uVar9" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined4 *)(local_3c + 4 + iVar1) = 0;" (assignment_expression "*(undefined4 *)(local_3c + 4 + iVar1) = 0" (pointer_expression "*(undefined4 *)(local_3c + 4 + iVar1)" (* "*") (cast_expression "(undefined4 *)(local_3c + 4 + iVar1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + 4 + iVar1)" (( "(") (binary_expression "local_3c + 4 + iVar1" (binary_expression "local_3c + 4" (identifier "local_3c") (+ "+") (number_literal "4")) (+ "+") (identifier "iVar1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" (identifier "bVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);" (assignment_expression "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" (* "*") (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" (( "(") (binary_expression "iVar3 + (uint)bVar7 * 2" (identifier "iVar3") (+ "+") (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (while_statement "while ((bVar2 & 0x40) != 0) {\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }" (while "while") (parenthesized_expression "((bVar2 & 0x40) != 0)" (( "(") (binary_expression "(bVar2 & 0x40) != 0" (parenthesized_expression "(bVar2 & 0x40)" (( "(") (binary_expression "bVar2 & 0x40" (identifier "bVar2") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      param_1 = param_1 + 1;\n      bVar7 = *param_1;\n      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);\n    }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" (identifier "bVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);" (assignment_expression "bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(iVar3 + (uint)bVar7 * 2)" (* "*") (cast_expression "(byte *)(iVar3 + (uint)bVar7 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + (uint)bVar7 * 2)" (( "(") (binary_expression "iVar3 + (uint)bVar7 * 2" (identifier "iVar3") (+ "+") (binary_expression "(uint)bVar7 * 2" (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (} "}"))) (if_statement "if (bVar7 == 0) {\n      free(__ptr);\n      return local_3c;\n    }" (if "if") (parenthesized_expression "(bVar7 == 0)" (( "(") (binary_expression "bVar7 == 0" (identifier "bVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      free(__ptr);\n      return local_3c;\n    }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return local_3c;" (return "return") (identifier "local_3c") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (labeled_statement "code_r0x0003f644:\n  param_1 = param_1 + 1;" (statement_identifier "code_r0x0003f644") (: ":") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "*pbVar10 = bVar7;" (assignment_expression "*pbVar10 = bVar7" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar7")) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar7 = *param_1;" (assignment_expression "bVar7 = *param_1" (identifier "bVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (goto_statement "goto joined_r0x0003f5f5;" (goto "goto") (statement_identifier "joined_r0x0003f5f5") (; ";")) (} "}")))

char ** function_1(char *var_2)

{
  type_1 var_15;
  int var_7;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  type_1 var_12;
  size_t var_5;
  type_1 *__ptr;
  char *pcVar8;
  type_1 *var_13;
  int var_6;
  char **var_10;
  int var_8;
  int var_9;
  char **local_20;
  
  var_1();
  var_10 = (char **)0x0;
  if (var_2 == (char *)0x0) {
    return (char **)0x0;
  }
  bVar5 = false;
  var_5 = var_3(var_2);
  __ptr = (type_1 *)var_4(var_5 + 1);
  bVar4 = false;
  var_7 = *(int *)(
                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */
                  + var_6 + 0x2049);
  var_8 = 0;
  var_9 = 0;
  bVar3 = false;
  do {
    while ((*(type_1 *)(var_7 + (type_2)(type_1)*var_2 * 2) & 0x40) != 0) {
      var_2 = (char *)((type_1 *)var_2 + 1);
    }
    if ((var_8 == 0) || (var_8 + -1 <= var_9)) {
      if (var_10 == (char **)0x0) {
        var_10 = (char **)var_4(0x20);
        var_8 = 8;
      }
      else {
        var_10 = (char **)var_11(var_10,var_8 << 3);
        var_8 = var_8 << 1;
      }
      local_20 = var_10 + var_9;
      *local_20 = (char *)0x0;
    }
    else {
      local_20 = var_10 + var_9;
    }
    var_12 = *var_2;
    var_13 = __ptr;
joined_r0x0003f5f5:
    if (var_12 != 0) {
      do {
        if (((*(type_1 *)(var_7 + (type_2)var_12 * 2) & 0x40) != 0) && ((!bVar4 && !bVar5) && !bVar3)) {
          bVar3 = false;
          bVar4 = false;
          bVar5 = false;
          break;
        }
        if (bVar5) {
          *var_13 = var_12;
          bVar5 = false;
          var_13 = var_13 + 1;
        }
        else if (var_12 == 0x5c) {
          bVar5 = true;
        }
        else if (bVar4) {
          if (var_12 != 0x27) goto code_r0x0003f644;
          bVar4 = false;
        }
        else if (bVar3) {
          bVar5 = false;
          if (var_12 == 0x22) {
            bVar3 = false;
          }
          else {
            *var_13 = var_12;
            var_13 = var_13 + 1;
          }
        }
        else {
          bVar5 = false;
          if (var_12 == 0x27) {
            bVar4 = true;
          }
          else {
            bVar4 = bVar5;
            if (var_12 == 0x22) {
              bVar3 = true;
            }
            else {
              *var_13 = var_12;
              var_13 = var_13 + 1;
            }
          }
        }
        var_2 = (char *)((type_1 *)var_2 + 1);
        var_12 = *var_2;
        if (var_12 == 0) break;
      } while( true );
    }
    *var_13 = 0;
    pcVar8 = (char *)var_14(__ptr);
    *local_20 = pcVar8;
    var_10[var_9 + 1] = (char *)0x0;
    var_12 = *var_2;
    var_15 = *(type_1 *)(var_7 + (type_2)var_12 * 2);
    while ((var_15 & 0x40) != 0) {
      var_2 = (char *)((type_1 *)var_2 + 1);
      var_12 = *var_2;
      var_15 = *(type_1 *)(var_7 + (type_2)var_12 * 2);
    }
    var_9 = var_9 + 1;
    if (var_12 == 0) {
      var_16(__ptr);
      return var_10;
    }
  } while( true );
code_r0x0003f644:
  var_2 = (char *)((type_1 *)var_2 + 1);
  *var_13 = var_12;
  var_13 = var_13 + 1;
  var_12 = *var_2;
  goto joined_r0x0003f5f5;
}


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

int MASKED(byte *param_1)

{
  int iVar1;
  byte bVar2;
  int iVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  byte bVar7;
  size_t sVar8;
  byte *__ptr;
  undefined4 uVar9;
  byte *pbVar10;
  int unaff_EDI;
  int local_3c;
  int local_38;
  int local_2c;
  undefined4 *local_20;
  
  FUN_0002a32f();
  local_3c = 0;
  if (param_1 == (byte *)0x0) {
    return 0;
  }
  bVar6 = false;
  sVar8 = strlen((char *)param_1);
  __ptr = (byte *)xmalloc(sVar8 + 1);
  bVar5 = false;
  iVar3 = *(int *)(
                  "/* Default linker script, for normal executables */\n/* Copyright (C) 2014-2018 Free Software Foundation, Inc.\n   Copying and distribution of this script, with or without modification,\n   are permitted in any medium without royalty provided the copyright\n   notice and this notice are preserved.  */\nOUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\",\n\t      \"elf32-i386\")\nOUTPUT_ARCH(i386)\nENTRY(_start)\nSEARCH_DIR(\"=/usr/local/lib/i386-gnu\"); SEARCH_DIR(\"=/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/lib/i386-gnu\"); SEARCH_DIR(\"=/usr/local/lib\"); SEARCH_DIR(\"=/lib\"); SEARCH_DIR(\"=/usr/lib\"); SEARCH_DIR(\"=/usr/i686-gnu/lib\");\nSECTIONS\n{\n  /* Read-only sections, merged into text segment: */\n  PROVIDE (__executable_start = SEGMENT_START(\"text-segment\", 0x08048000)); . = SEGMENT_START(\"text-segment\", 0x08048000) + SIZEOF_HEADERS;\n  .interp         : { *(.interp) }\n  .note.gnu.build-id : { *(.note.gnu.build-id) }\n  .hash           : { *(.hash) }\n  .gnu.hash       : { *(.gnu.hash) }\n  .dynsym         : { *(.dynsym) }\n  .dynstr         : { *(.dynstr) }\n  .gnu.version    : { *(.gnu.version) }\n  .gnu.version_d  : { *(.gnu.version_d) }\n  .gnu.version_r  : { *(.gnu.version_r) }\n  .rel.init       : { *(.rel.init) }\n  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }\n  .rel.fini       : { *(.rel.fini) }\n  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }\n  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }\n  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }\n  .rel.tdata\t  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }\n  .rel.tbss\t  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }\n  .rel.ctors      : { *(.rel.ctors) }\n  .rel.dtors      : { *(.rel.dtors) }\n  .rel.got        : { *(.rel.got) }\n  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }\n  .rel.ifunc      : { *(.rel.ifunc) }\n  .rel.plt        :\n    {\n      *(.rel.plt)\n      PROVIDE_HIDDEN (__rel_iplt_start = .);\n      *(.rel.iplt)\n      PROVIDE_HIDDEN (__rel_iplt_e..." /* TRUNCATED STRING LITERAL */
                  + unaff_EDI + 0x2049);
  local_38 = 0;
  local_2c = 0;
  bVar4 = false;
  do {
    while ((*(byte *)(iVar3 + (uint)*param_1 * 2) & 0x40) != 0) {
      param_1 = param_1 + 1;
    }
    iVar1 = local_2c * 4;
    if ((local_38 == 0) || (local_38 + -1 <= local_2c)) {
      if (local_3c == 0) {
        local_3c = xmalloc(0x20);
        local_38 = 8;
      }
      else {
        local_3c = xrealloc(local_3c,local_38 << 3);
        local_38 = local_38 << 1;
      }
      local_20 = (undefined4 *)(local_3c + iVar1);
      *local_20 = 0;
    }
    else {
      local_20 = (undefined4 *)(local_3c + iVar1);
    }
    bVar7 = *param_1;
    pbVar10 = __ptr;
joined_r0x0003f5f5:
    if (bVar7 != 0) {
      do {
        if (((*(byte *)(iVar3 + (uint)bVar7 * 2) & 0x40) != 0) && ((!bVar5 && !bVar6) && !bVar4)) {
          bVar4 = false;
          bVar5 = false;
          bVar6 = false;
          break;
        }
        if (bVar6) {
          *pbVar10 = bVar7;
          bVar6 = false;
          pbVar10 = pbVar10 + 1;
        }
        else if (bVar7 == 0x5c) {
          bVar6 = true;
        }
        else if (bVar5) {
          if (bVar7 != 0x27) goto code_r0x0003f644;
          bVar5 = false;
        }
        else if (bVar4) {
          bVar6 = false;
          if (bVar7 == 0x22) {
            bVar4 = false;
          }
          else {
            *pbVar10 = bVar7;
            pbVar10 = pbVar10 + 1;
          }
        }
        else {
          bVar6 = false;
          if (bVar7 == 0x27) {
            bVar5 = true;
          }
          else {
            bVar5 = bVar6;
            if (bVar7 == 0x22) {
              bVar4 = true;
            }
            else {
              *pbVar10 = bVar7;
              pbVar10 = pbVar10 + 1;
            }
          }
        }
        param_1 = param_1 + 1;
        bVar7 = *param_1;
        if (bVar7 == 0) break;
      } while( true );
    }
    *pbVar10 = 0;
    uVar9 = xstrdup(__ptr);
    local_2c = local_2c + 1;
    *local_20 = uVar9;
    *(undefined4 *)(local_3c + 4 + iVar1) = 0;
    bVar7 = *param_1;
    bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);
    while ((bVar2 & 0x40) != 0) {
      param_1 = param_1 + 1;
      bVar7 = *param_1;
      bVar2 = *(byte *)(iVar3 + (uint)bVar7 * 2);
    }
    if (bVar7 == 0) {
      free(__ptr);
      return local_3c;
    }
  } while( true );
code_r0x0003f644:
  param_1 = param_1 + 1;
  *pbVar10 = bVar7;
  pbVar10 = pbVar10 + 1;
  bVar7 = *param_1;
  goto joined_r0x0003f5f5;
}

