
functionptrtype
acquire_an_answer(wchar_t *actual,_Bool allow_tabs,_Bool allow_files,_Bool *listed,
                 filestruct **history_list,_func_void *refresh_func)

{
  char cVar1;
  wchar_t wVar2;
  wchar_t wVar3;
  char *pcVar4;
  functionptrtype p_Var5;
  ulong uVar6;
  size_t len;
  long in_FS_OFFSET;
  byte bVar7;
  char *local_78;
  _Bool finished;
  _Bool tabbed;
  wchar_t kbinput;
  long local_40;
  
  bVar7 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  kbinput = L'\xffffffff';
  tabbed = false;
  uVar6 = 0xffffffffffffffff;
  pcVar4 = answer;
  do {
    if (uVar6 == 0) break;
    uVar6 = uVar6 - 1;
    cVar1 = *pcVar4;
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  if (~uVar6 - 1 < typing_x) {
    typing_x = ~uVar6 - 1;
  }
  len = 0;
  local_78 = (char *)0x0;
LAB_0011a13e:
  do {
    wVar2 = kbinput;
    draw_the_promptbar();
    kbinput = do_statusbar_input(&finished);
    if (kbinput == L'\xfffffffe') {
      (*refresh_func)();
      *actual = L'\xfffffffe';
      free(local_78);
      p_Var5 = (functionptrtype)0x0;
      goto LAB_0011a0c1;
    }
    p_Var5 = func_from_key(&kbinput);
    if ((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||
       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;
    if (p_Var5 == (functionptrtype)PTR_do_tab_0013af48) {
      if (history_list == (filestruct **)0x0) {
        if (allow_tabs) {
          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);
        }
      }
      else {
        wVar3 = the_code_for(do_tab,L'\t');
        if (wVar3 != wVar2) {
          uVar6 = 0xffffffffffffffff;
          pcVar4 = answer;
          do {
            if (uVar6 == 0) break;
            uVar6 = uVar6 - 1;
            cVar1 = *pcVar4;
            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;
          } while (cVar1 != '\0');
          len = ~uVar6 - 1;
        }
        if (len != 0) {
          answer = get_history_completion(history_list,answer,len);
          uVar6 = 0xffffffffffffffff;
          pcVar4 = answer;
          do {
            if (uVar6 == 0) break;
            uVar6 = uVar6 - 1;
            cVar1 = *pcVar4;
            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;
          } while (cVar1 != '\0');
          typing_x = ~uVar6 - 1;
        }
      }
    }
    else {
      tabbed = false;
      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {
        if (history_list != (filestruct **)0x0) {
          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {
            local_78 = mallocstrcpy(local_78,answer);
          }
          pcVar4 = get_history_older(history_list);
          if (pcVar4 != (char *)0x0) {
            answer = mallocstrcpy(answer,pcVar4);
            uVar6 = 0xffffffffffffffff;
            pcVar4 = answer;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar4;
              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;
            } while (cVar1 != '\0');
            typing_x = ~uVar6 - 1;
          }
          finished = false;
          goto LAB_0011a13e;
        }
      }
      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {
        if (history_list != (filestruct **)0x0) {
          pcVar4 = get_history_newer(history_list);
          if (pcVar4 != (char *)0x0) {
            answer = mallocstrcpy(answer,pcVar4);
            uVar6 = 0xffffffffffffffff;
            pcVar4 = answer;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar4;
              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;
            } while (cVar1 != '\0');
            typing_x = ~uVar6 - 1;
          }
          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&
             (local_78 != (char *)0x0)) {
            answer = mallocstrcpy(answer,local_78);
            uVar6 = 0xffffffffffffffff;
            pcVar4 = answer;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar4;
              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;
            } while (cVar1 != '\0');
            typing_x = ~uVar6 - 1;
          }
          finished = false;
          goto LAB_0011a13e;
        }
      }
      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {
        finished = false;
        goto LAB_0011a13e;
      }
    }
    if (finished != false) {
LAB_0011a09f:
      if (history_list != (filestruct **)0x0) {
        history_reset(*history_list);
        free(local_78);
      }
      *actual = kbinput;
LAB_0011a0c1:
      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
        __stack_chk_fail();
      }
      return p_Var5;
    }
  } while( true );
}



undefined *
FUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,
            code *param_6)

{
  char cVar1;
  int iVar2;
  int iVar3;
  long lVar4;
  undefined *puVar5;
  ulong uVar6;
  char *pcVar7;
  long lVar8;
  long in_FS_OFFSET;
  byte bVar9;
  void *local_78;
  char local_46 [2];
  int local_44;
  long local_40;
  
  bVar9 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  local_44 = -1;
  local_46[1] = 0;
  uVar6 = 0xffffffffffffffff;
  pcVar7 = DAT_0013bbc8;
  do {
    if (uVar6 == 0) break;
    uVar6 = uVar6 - 1;
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + 1;
  } while (cVar1 != '\0');
  if (~uVar6 - 1 < DAT_0013b788) {
    DAT_0013b788 = ~uVar6 - 1;
  }
  lVar8 = 0;
  local_78 = (void *)0x0;
LAB_0011a13e:
  do {
    iVar2 = local_44;
    FUN_00119bcc();
    local_44 = FUN_001197fb(local_46);
    if (local_44 == -2) {
      (*param_6)();
      *param_1 = -2;
      free(local_78);
      puVar5 = (undefined *)0x0;
      goto LAB_0011a0c1;
    }
    puVar5 = (undefined *)FUN_0010e65f(&local_44);
    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;
    if (puVar5 == PTR_FUN_0013af48) {
      if (param_5 == (long *)0x0) {
        if (param_2 != '\0') {
          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,
                                              param_6,param_4);
        }
      }
      else {
        iVar3 = FUN_0010e636(FUN_0011e8f8,9);
        if (iVar3 != iVar2) {
          uVar6 = 0xffffffffffffffff;
          pcVar7 = DAT_0013bbc8;
          do {
            if (uVar6 == 0) break;
            uVar6 = uVar6 - 1;
            cVar1 = *pcVar7;
            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
          } while (cVar1 != '\0');
          lVar8 = ~uVar6 - 1;
        }
        if (lVar8 != 0) {
          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);
          uVar6 = 0xffffffffffffffff;
          pcVar7 = DAT_0013bbc8;
          do {
            if (uVar6 == 0) break;
            uVar6 = uVar6 - 1;
            cVar1 = *pcVar7;
            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
          } while (cVar1 != '\0');
          DAT_0013b788 = ~uVar6 - 1;
        }
      }
    }
    else {
      local_46[1] = 0;
      if (puVar5 == PTR_FUN_0013af68) {
        if (param_5 != (long *)0x0) {
          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {
            local_78 = (void *)FUN_00124d68(local_78);
          }
          lVar4 = FUN_00113388(param_5);
          if (lVar4 != 0) {
            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);
            uVar6 = 0xffffffffffffffff;
            pcVar7 = DAT_0013bbc8;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar7;
              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
            } while (cVar1 != '\0');
            DAT_0013b788 = ~uVar6 - 1;
          }
          local_46[0] = '\0';
          goto LAB_0011a13e;
        }
      }
      else if (puVar5 == PTR_FUN_0013afd0) {
        if (param_5 != (long *)0x0) {
          lVar4 = FUN_0011339b(param_5);
          if (lVar4 != 0) {
            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);
            uVar6 = 0xffffffffffffffff;
            pcVar7 = DAT_0013bbc8;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar7;
              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
            } while (cVar1 != '\0');
            DAT_0013b788 = ~uVar6 - 1;
          }
          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&
             (local_78 != (void *)0x0)) {
            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);
            uVar6 = 0xffffffffffffffff;
            pcVar7 = DAT_0013bbc8;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar7;
              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
            } while (cVar1 != '\0');
            DAT_0013b788 = ~uVar6 - 1;
          }
          local_46[0] = '\0';
          goto LAB_0011a13e;
        }
      }
      else if (puVar5 == PTR_FUN_0013ae48) {
        local_46[0] = '\0';
        goto LAB_0011a13e;
      }
    }
    if (local_46[0] != '\0') {
LAB_0011a09f:
      if (param_5 != (long *)0x0) {
        FUN_0011318d(*param_5);
        free(local_78);
      }
      *param_1 = local_44;
LAB_0011a0c1:
      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
        __stack_chk_fail();
      }
      return puVar5;
    }
  } while( true );
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
MOV qword ptr [RSP + 0x8],RDI
MOV qword ptr [RSP + 0x20],RCX
MOV RBP,R8
MOV qword ptr [RSP + 0x10],R9
MOV byte ptr [RSP + 0x1e],SIL
MOV byte ptr [RSP + 0x1f],DL
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x38],RAX
XOR EAX,EAX
MOV dword ptr [RSP + 0x34],0xffffffff
MOV byte ptr [RSP + 0x33],0x0
MOV RDI,qword ptr [0x0013bbc8]
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RDX,RCX
NOT RDX
MOV RCX,RDX
SUB RCX,0x1
CMP RCX,qword ptr [0x0013b788]
JNC 0x00119ea6
MOV qword ptr [0x0013b788],RCX
MOV R15D,0x0
MOV R12D,0xffffffff
MOV qword ptr [RSP],0x0
LEA R13,[RSP + 0x32]
LEA R14,[RSP + 0x34]
LEA RAX,[RSP + 0x33]
MOV qword ptr [RSP + 0x28],RAX
JMP 0x0011a13e
MOV RAX,qword ptr [RSP + 0x10]
CALL RAX
MOV RAX,qword ptr [RSP + 0x8]
MOV dword ptr [RAX],0xfffffffe
MOV RDI,qword ptr [RSP]
CALL 0x001050f0
MOV EBX,0x0
JMP 0x0011a0c1
MOV RDX,R15
MOV RSI,qword ptr [0x0013bbc8]
MOV RDI,RBP
CALL 0x001133b0
MOV RDI,RAX
MOV qword ptr [0x0013bbc8],RAX
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [0x0013b788],RAX
JMP 0x0011a12e
CMP byte ptr [RSP + 0x1e],0x0
JZ 0x0011a12e
MOVZX ESI,byte ptr [RSP + 0x1f]
MOV R9,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x10]
MOV RCX,qword ptr [RSP + 0x28]
LEA RDX,[0x13b788]
MOV RDI,qword ptr [0x0013bbc8]
CALL 0x0010e003
MOV qword ptr [0x0013bbc8],RAX
JMP 0x0011a12e
TEST RBP,RBP
JZ 0x0011a12e
MOV RAX,qword ptr [RBP]
CMP qword ptr [RAX + 0x10],0x0
JZ 0x00119fd9
MOV RDI,RBP
CALL 0x00113388
TEST RAX,RAX
JZ 0x00119fcf
MOV RSI,RAX
MOV RDI,qword ptr [0x0013bbc8]
CALL 0x00124d68
MOV RDI,RAX
MOV qword ptr [0x0013bbc8],RAX
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [0x0013b788],RAX
MOV byte ptr [RSP + 0x32],0x0
JMP 0x0011a139
MOV RSI,qword ptr [0x0013bbc8]
CMP byte ptr [RSI],0x0
JZ 0x00119f8a
MOV RDI,qword ptr [RSP]
CALL 0x00124d68
MOV qword ptr [RSP],RAX
JMP 0x00119f8a
TEST RBP,RBP
JZ 0x0011a12e
MOV RDI,RBP
CALL 0x0011339b
TEST RAX,RAX
JZ 0x0011a042
MOV RSI,RAX
MOV RDI,qword ptr [0x0013bbc8]
CALL 0x00124d68
MOV RDI,RAX
MOV qword ptr [0x0013bbc8],RAX
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [0x0013b788],RAX
MOV RAX,qword ptr [RBP]
CMP qword ptr [RAX + 0x10],0x0
JZ 0x0011a057
MOV byte ptr [RSP + 0x32],0x0
JMP 0x0011a139
MOV RDI,qword ptr [0x0013bbc8]
CMP byte ptr [RDI],0x0
JNZ 0x0011a04d
MOV RAX,qword ptr [RSP]
TEST RAX,RAX
JZ 0x0011a04d
MOV RSI,RAX
CALL 0x00124d68
MOV RDI,RAX
MOV qword ptr [0x0013bbc8],RAX
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [0x0013b788],RAX
JMP 0x0011a04d
TEST RBP,RBP
JZ 0x0011a0b6
MOV RDI,qword ptr [RBP]
CALL 0x0011318d
MOV RDI,qword ptr [RSP]
CALL 0x001050f0
MOV EAX,dword ptr [RSP + 0x34]
MOV RDX,qword ptr [RSP + 0x8]
MOV dword ptr [RDX],EAX
MOV RAX,RBX
MOV RDX,qword ptr [RSP + 0x38]
XOR RDX,qword ptr FS:[0x28]
JNZ 0x0011a1c0
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
TEST RBP,RBP
JZ 0x00119f38
MOV ESI,0x9
LEA RDI,[0x11e8f8]
CALL 0x0010e636
CMP EAX,R12D
JZ 0x0011a125
MOV RDI,qword ptr [0x0013bbc8]
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
LEA R15,[RAX + -0x1]
TEST R15,R15
JNZ 0x00119ef8
CMP byte ptr [RSP + 0x32],0x0
JNZ 0x0011a09f
MOV R12D,dword ptr [RSP + 0x34]
CALL 0x00119bcc
MOV RDI,R13
CALL 0x001197fb
MOV dword ptr [RSP + 0x34],EAX
CMP EAX,-0x2
JZ 0x00119ed3
MOV RDI,R14
CALL 0x0010e65f
MOV RBX,RAX
CMP RAX,qword ptr [0x0013afa8]
JZ 0x0011a09f
CMP RAX,qword ptr [0x0013aed0]
JZ 0x0011a09f
CMP RAX,qword ptr [0x0013af48]
JZ 0x0011a0e7
MOV byte ptr [RSP + 0x33],0x0
CMP RAX,qword ptr [0x0013af68]
JZ 0x00119f76
CMP RAX,qword ptr [0x0013afd0]
JZ 0x00119ff4
CMP RAX,qword ptr [0x0013ae48]
JNZ 0x0011a12e
MOV byte ptr [RSP + 0x32],0x0
JMP 0x0011a139
CALL 0x00105340
(translation_unit "undefined *\nFUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  byte bVar9;\n  void *local_78;\n  char local_46 [2];\n  int local_44;\n  long local_40;\n  \n  bVar9 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_44 = -1;\n  local_46[1] = 0;\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = DAT_0013bbc8;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }\n  lVar8 = 0;\n  local_78 = (void *)0x0;\nLAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );\n}\n\n" (function_definition "undefined *\nFUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  byte bVar9;\n  void *local_78;\n  char local_46 [2];\n  int local_44;\n  long local_40;\n  \n  bVar9 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_44 = -1;\n  local_46[1] = 0;\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = DAT_0013bbc8;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }\n  lVar8 = 0;\n  local_78 = (void *)0x0;\nLAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );\n}" type_identifier (pointer_declarator "*\nFUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" * (function_declarator "FUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" identifier (parameter_list "(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char param_2" primitive_type identifier) , (parameter_declaration "undefined1 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "long *param_5" (sized_type_specifier "long" long) (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "code *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) )))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  byte bVar9;\n  void *local_78;\n  char local_46 [2];\n  int local_44;\n  long local_40;\n  \n  bVar9 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_44 = -1;\n  local_46[1] = 0;\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = DAT_0013bbc8;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }\n  lVar8 = 0;\n  local_78 = (void *)0x0;\nLAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "void *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "char local_46 [2];" primitive_type (array_declarator "local_46 [2]" identifier [ number_literal ]) ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_44 = -1;" (assignment_expression "local_44 = -1" identifier = number_literal) ;) (expression_statement "local_46[1] = 0;" (assignment_expression "local_46[1] = 0" (subscript_expression "local_46[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }" if (parenthesized_expression "(~uVar6 - 1 < DAT_0013b788)" ( (binary_expression "~uVar6 - 1 < DAT_0013b788" (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal) < identifier) )) (compound_statement "{\n    DAT_0013b788 = ~uVar6 - 1;\n  }" { (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "local_78 = (void *)0x0;" (assignment_expression "local_78 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );" do (compound_statement "{\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  }" { (expression_statement "iVar2 = local_44;" (assignment_expression "iVar2 = local_44" identifier = identifier) ;) (expression_statement "FUN_00119bcc();" (call_expression "FUN_00119bcc()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_44 = FUN_001197fb(local_46);" (assignment_expression "local_44 = FUN_001197fb(local_46)" identifier = (call_expression "FUN_001197fb(local_46)" identifier (argument_list "(local_46)" ( identifier )))) ;) (if_statement "if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }" if (parenthesized_expression "(local_44 == -2)" ( (binary_expression "local_44 == -2" identifier == number_literal) )) (compound_statement "{\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }" { (expression_statement "(*param_6)();" (call_expression "(*param_6)()" (parenthesized_expression "(*param_6)" ( (pointer_expression "*param_6" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*param_1 = -2;" (assignment_expression "*param_1 = -2" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "puVar5 = (undefined *)0x0;" (assignment_expression "puVar5 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0011a0c1;" goto statement_identifier ;) })) (expression_statement "puVar5 = (undefined *)FUN_0010e65f(&local_44);" (assignment_expression "puVar5 = (undefined *)FUN_0010e65f(&local_44)" identifier = (cast_expression "(undefined *)FUN_0010e65f(&local_44)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e65f(&local_44)" identifier (argument_list "(&local_44)" ( (pointer_expression "&local_44" & identifier) ))))) ;) (if_statement "if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;" if (parenthesized_expression "((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0))" ( (binary_expression "(puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)" (parenthesized_expression "(puVar5 == PTR_FUN_0013afa8)" ( (binary_expression "puVar5 == PTR_FUN_0013afa8" identifier == identifier) )) || (parenthesized_expression "(puVar5 == PTR_FUN_0013aed0)" ( (binary_expression "puVar5 == PTR_FUN_0013aed0" identifier == identifier) ))) )) (goto_statement "goto LAB_0011a09f;" goto statement_identifier ;)) (if_statement "if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" if (parenthesized_expression "(puVar5 == PTR_FUN_0013af48)" ( (binary_expression "puVar5 == PTR_FUN_0013af48" identifier == identifier) )) (compound_statement "{\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }" { (if_statement "if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" if (parenthesized_expression "(param_5 == (long *)0x0)" ( (binary_expression "param_5 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }" { (if_statement "if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }" if (parenthesized_expression "(param_2 != '\0')" ( (binary_expression "param_2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" identifier = (cast_expression "(char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" identifier (argument_list "(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" ( identifier , identifier , (pointer_expression "&DAT_0013b788" & identifier) , (binary_expression "local_46 + 1" identifier + number_literal) , identifier , identifier ))))) ;) })) }) (else_clause "else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" else (compound_statement "{\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" { (expression_statement "iVar3 = FUN_0010e636(FUN_0011e8f8,9);" (assignment_expression "iVar3 = FUN_0010e636(FUN_0011e8f8,9)" identifier = (call_expression "FUN_0010e636(FUN_0011e8f8,9)" identifier (argument_list "(FUN_0011e8f8,9)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }" if (parenthesized_expression "(iVar3 != iVar2)" ( (binary_expression "iVar3 != iVar2" identifier != identifier) )) (compound_statement "{\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }" { (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "lVar8 = ~uVar6 - 1;" (assignment_expression "lVar8 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (if_statement "if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" identifier = (cast_expression "(char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" identifier (argument_list "(param_5,DAT_0013bbc8,lVar8)" ( identifier , identifier , identifier ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) }))) }) (else_clause "else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" else (compound_statement "{\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" { (expression_statement "local_46[1] = 0;" (assignment_expression "local_46[1] = 0" (subscript_expression "local_46[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(puVar5 == PTR_FUN_0013af68)" ( (binary_expression "puVar5 == PTR_FUN_0013af68" identifier == identifier) )) (compound_statement "{\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }" { (if_statement "if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" if (parenthesized_expression "(param_5 != (long *)0x0)" ( (binary_expression "param_5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" { (if_statement "if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }" if (parenthesized_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0'))" ( (binary_expression "(*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')" (parenthesized_expression "(*(long *)(*param_5 + 0x10) == 0)" ( (binary_expression "*(long *)(*param_5 + 0x10) == 0" (pointer_expression "*(long *)(*param_5 + 0x10)" * (cast_expression "(long *)(*param_5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x10)" ( (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" * identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*DAT_0013bbc8 != '\0')" ( (binary_expression "*DAT_0013bbc8 != '\0'" (pointer_expression "*DAT_0013bbc8" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            local_78 = (void *)FUN_00124d68(local_78);\n          }" { (expression_statement "local_78 = (void *)FUN_00124d68(local_78);" (assignment_expression "local_78 = (void *)FUN_00124d68(local_78)" identifier = (cast_expression "(void *)FUN_00124d68(local_78)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00124d68(local_78)" identifier (argument_list "(local_78)" ( identifier ))))) ;) })) (expression_statement "lVar4 = FUN_00113388(param_5);" (assignment_expression "lVar4 = FUN_00113388(param_5)" identifier = (call_expression "FUN_00113388(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (if_statement "if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4)" identifier = (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,lVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00124d68(DAT_0013bbc8,lVar4)" identifier (argument_list "(DAT_0013bbc8,lVar4)" ( identifier , identifier ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })) }) (else_clause "else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" else (if_statement "if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(puVar5 == PTR_FUN_0013afd0)" ( (binary_expression "puVar5 == PTR_FUN_0013afd0" identifier == identifier) )) (compound_statement "{\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }" { (if_statement "if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" if (parenthesized_expression "(param_5 != (long *)0x0)" ( (binary_expression "param_5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" { (expression_statement "lVar4 = FUN_0011339b(param_5);" (assignment_expression "lVar4 = FUN_0011339b(param_5)" identifier = (call_expression "FUN_0011339b(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (if_statement "if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4)" identifier = (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,lVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00124d68(DAT_0013bbc8,lVar4)" identifier (argument_list "(DAT_0013bbc8,lVar4)" ( identifier , identifier ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (if_statement "if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" if (parenthesized_expression "(((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0))" ( (binary_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)" (parenthesized_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0'))" ( (binary_expression "(*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')" (parenthesized_expression "(*(long *)(*param_5 + 0x10) == 0)" ( (binary_expression "*(long *)(*param_5 + 0x10) == 0" (pointer_expression "*(long *)(*param_5 + 0x10)" * (cast_expression "(long *)(*param_5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x10)" ( (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" * identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*DAT_0013bbc8 == '\0')" ( (binary_expression "*DAT_0013bbc8 == '\0'" (pointer_expression "*DAT_0013bbc8" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(local_78 != (void *)0x0)" ( (binary_expression "local_78 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78)" identifier = (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,local_78)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00124d68(DAT_0013bbc8,local_78)" identifier (argument_list "(DAT_0013bbc8,local_78)" ( identifier , identifier ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })) }) (else_clause "else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" else (if_statement "if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(puVar5 == PTR_FUN_0013ae48)" ( (binary_expression "puVar5 == PTR_FUN_0013ae48" identifier == identifier) )) (compound_statement "{\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" { (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })))))) }))) (if_statement "if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return puVar5;\n    }" if (parenthesized_expression "(local_46[0] != '\0')" ( (binary_expression "local_46[0] != '\0'" (subscript_expression "local_46[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return puVar5;\n    }" { (labeled_statement "LAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" statement_identifier : (if_statement "if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" if (parenthesized_expression "(param_5 != (long *)0x0)" ( (binary_expression "param_5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" { (expression_statement "FUN_0011318d(*param_5);" (call_expression "FUN_0011318d(*param_5)" identifier (argument_list "(*param_5)" ( (pointer_expression "*param_5" * identifier) ))) ;) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) }))) (expression_statement "*param_1 = local_44;" (assignment_expression "*param_1 = local_44" (pointer_expression "*param_1" * identifier) = identifier) ;) (labeled_statement "LAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return puVar5;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "functionptrtype\nacquire_an_answer(wchar_t *actual,_Bool allow_tabs,_Bool allow_files,_Bool *listed,\n                 filestruct **history_list,_func_void *refresh_func)\n\n{\n  char cVar1;\n  wchar_t wVar2;\n  wchar_t wVar3;\n  char *pcVar4;\n  functionptrtype p_Var5;\n  ulong uVar6;\n  size_t len;\n  long in_FS_OFFSET;\n  byte bVar7;\n  char *local_78;\n  _Bool finished;\n  _Bool tabbed;\n  wchar_t kbinput;\n  long local_40;\n  \n  bVar7 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  kbinput = L'\xffffffff';\n  tabbed = false;\n  uVar6 = 0xffffffffffffffff;\n  pcVar4 = answer;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < typing_x) {\n    typing_x = ~uVar6 - 1;\n  }\n  len = 0;\n  local_78 = (char *)0x0;\nLAB_0011a13e:\n  do {\n    wVar2 = kbinput;\n    draw_the_promptbar();\n    kbinput = do_statusbar_input(&finished);\n    if (kbinput == L'\xfffffffe') {\n      (*refresh_func)();\n      *actual = L'\xfffffffe';\n      free(local_78);\n      p_Var5 = (functionptrtype)0x0;\n      goto LAB_0011a0c1;\n    }\n    p_Var5 = func_from_key(&kbinput);\n    if ((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;\n    if (p_Var5 == (functionptrtype)PTR_do_tab_0013af48) {\n      if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }\n    if (finished != false) {\nLAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }\n      *actual = kbinput;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return p_Var5;\n    }\n  } while( true );\n}\n\n" (function_definition "functionptrtype\nacquire_an_answer(wchar_t *actual,_Bool allow_tabs,_Bool allow_files,_Bool *listed,\n                 filestruct **history_list,_func_void *refresh_func)\n\n{\n  char cVar1;\n  wchar_t wVar2;\n  wchar_t wVar3;\n  char *pcVar4;\n  functionptrtype p_Var5;\n  ulong uVar6;\n  size_t len;\n  long in_FS_OFFSET;\n  byte bVar7;\n  char *local_78;\n  _Bool finished;\n  _Bool tabbed;\n  wchar_t kbinput;\n  long local_40;\n  \n  bVar7 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  kbinput = L'\xffffffff';\n  tabbed = false;\n  uVar6 = 0xffffffffffffffff;\n  pcVar4 = answer;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < typing_x) {\n    typing_x = ~uVar6 - 1;\n  }\n  len = 0;\n  local_78 = (char *)0x0;\nLAB_0011a13e:\n  do {\n    wVar2 = kbinput;\n    draw_the_promptbar();\n    kbinput = do_statusbar_input(&finished);\n    if (kbinput == L'\xfffffffe') {\n      (*refresh_func)();\n      *actual = L'\xfffffffe';\n      free(local_78);\n      p_Var5 = (functionptrtype)0x0;\n      goto LAB_0011a0c1;\n    }\n    p_Var5 = func_from_key(&kbinput);\n    if ((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;\n    if (p_Var5 == (functionptrtype)PTR_do_tab_0013af48) {\n      if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }\n    if (finished != false) {\nLAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }\n      *actual = kbinput;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return p_Var5;\n    }\n  } while( true );\n}" type_identifier (function_declarator "acquire_an_answer(wchar_t *actual,_Bool allow_tabs,_Bool allow_files,_Bool *listed,\n                 filestruct **history_list,_func_void *refresh_func)" identifier (parameter_list "(wchar_t *actual,_Bool allow_tabs,_Bool allow_files,_Bool *listed,\n                 filestruct **history_list,_func_void *refresh_func)" ( (parameter_declaration "wchar_t *actual" type_identifier (pointer_declarator "*actual" * identifier)) , (parameter_declaration "_Bool allow_tabs" type_identifier identifier) , (parameter_declaration "_Bool allow_files" type_identifier identifier) , (parameter_declaration "_Bool *listed" type_identifier (pointer_declarator "*listed" * identifier)) , (parameter_declaration "filestruct **history_list" type_identifier (pointer_declarator "**history_list" * (pointer_declarator "*history_list" * identifier))) , (parameter_declaration "_func_void *refresh_func" type_identifier (pointer_declarator "*refresh_func" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  wchar_t wVar2;\n  wchar_t wVar3;\n  char *pcVar4;\n  functionptrtype p_Var5;\n  ulong uVar6;\n  size_t len;\n  long in_FS_OFFSET;\n  byte bVar7;\n  char *local_78;\n  _Bool finished;\n  _Bool tabbed;\n  wchar_t kbinput;\n  long local_40;\n  \n  bVar7 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  kbinput = L'\xffffffff';\n  tabbed = false;\n  uVar6 = 0xffffffffffffffff;\n  pcVar4 = answer;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < typing_x) {\n    typing_x = ~uVar6 - 1;\n  }\n  len = 0;\n  local_78 = (char *)0x0;\nLAB_0011a13e:\n  do {\n    wVar2 = kbinput;\n    draw_the_promptbar();\n    kbinput = do_statusbar_input(&finished);\n    if (kbinput == L'\xfffffffe') {\n      (*refresh_func)();\n      *actual = L'\xfffffffe';\n      free(local_78);\n      p_Var5 = (functionptrtype)0x0;\n      goto LAB_0011a0c1;\n    }\n    p_Var5 = func_from_key(&kbinput);\n    if ((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;\n    if (p_Var5 == (functionptrtype)PTR_do_tab_0013af48) {\n      if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }\n    if (finished != false) {\nLAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }\n      *actual = kbinput;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return p_Var5;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "wchar_t wVar2;" type_identifier identifier ;) (declaration "wchar_t wVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "functionptrtype p_Var5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "size_t len;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "char *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "_Bool finished;" type_identifier identifier ;) (declaration "_Bool tabbed;" type_identifier identifier ;) (declaration "wchar_t kbinput;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "kbinput = L'\xffffffff';" (assignment_expression "kbinput = L'\xffffffff'" identifier = (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) ;) (expression_statement "tabbed = false;" (assignment_expression "tabbed = false" identifier = false) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = answer;" (assignment_expression "pcVar4 = answer" identifier = identifier) ;) (do_statement "do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar4;\n    pcVar4 = pcVar4 + 1;\n  }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (~uVar6 - 1 < typing_x) {\n    typing_x = ~uVar6 - 1;\n  }" if (parenthesized_expression "(~uVar6 - 1 < typing_x)" ( (binary_expression "~uVar6 - 1 < typing_x" (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal) < identifier) )) (compound_statement "{\n    typing_x = ~uVar6 - 1;\n  }" { (expression_statement "typing_x = ~uVar6 - 1;" (assignment_expression "typing_x = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "len = 0;" (assignment_expression "len = 0" identifier = number_literal) ;) (expression_statement "local_78 = (char *)0x0;" (assignment_expression "local_78 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0011a13e:\n  do {\n    wVar2 = kbinput;\n    draw_the_promptbar();\n    kbinput = do_statusbar_input(&finished);\n    if (kbinput == L'\xfffffffe') {\n      (*refresh_func)();\n      *actual = L'\xfffffffe';\n      free(local_78);\n      p_Var5 = (functionptrtype)0x0;\n      goto LAB_0011a0c1;\n    }\n    p_Var5 = func_from_key(&kbinput);\n    if ((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;\n    if (p_Var5 == (functionptrtype)PTR_do_tab_0013af48) {\n      if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }\n    if (finished != false) {\nLAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }\n      *actual = kbinput;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return p_Var5;\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    wVar2 = kbinput;\n    draw_the_promptbar();\n    kbinput = do_statusbar_input(&finished);\n    if (kbinput == L'\xfffffffe') {\n      (*refresh_func)();\n      *actual = L'\xfffffffe';\n      free(local_78);\n      p_Var5 = (functionptrtype)0x0;\n      goto LAB_0011a0c1;\n    }\n    p_Var5 = func_from_key(&kbinput);\n    if ((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;\n    if (p_Var5 == (functionptrtype)PTR_do_tab_0013af48) {\n      if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }\n    if (finished != false) {\nLAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }\n      *actual = kbinput;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return p_Var5;\n    }\n  } while( true );" do (compound_statement "{\n    wVar2 = kbinput;\n    draw_the_promptbar();\n    kbinput = do_statusbar_input(&finished);\n    if (kbinput == L'\xfffffffe') {\n      (*refresh_func)();\n      *actual = L'\xfffffffe';\n      free(local_78);\n      p_Var5 = (functionptrtype)0x0;\n      goto LAB_0011a0c1;\n    }\n    p_Var5 = func_from_key(&kbinput);\n    if ((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;\n    if (p_Var5 == (functionptrtype)PTR_do_tab_0013af48) {\n      if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }\n    if (finished != false) {\nLAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }\n      *actual = kbinput;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return p_Var5;\n    }\n  }" { (expression_statement "wVar2 = kbinput;" (assignment_expression "wVar2 = kbinput" identifier = identifier) ;) (expression_statement "draw_the_promptbar();" (call_expression "draw_the_promptbar()" identifier (argument_list "()" ( ))) ;) (expression_statement "kbinput = do_statusbar_input(&finished);" (assignment_expression "kbinput = do_statusbar_input(&finished)" identifier = (call_expression "do_statusbar_input(&finished)" identifier (argument_list "(&finished)" ( (pointer_expression "&finished" & identifier) )))) ;) (if_statement "if (kbinput == L'\xfffffffe') {\n      (*refresh_func)();\n      *actual = L'\xfffffffe';\n      free(local_78);\n      p_Var5 = (functionptrtype)0x0;\n      goto LAB_0011a0c1;\n    }" if (parenthesized_expression "(kbinput == L'\xfffffffe')" ( (binary_expression "kbinput == L'\xfffffffe'" identifier == (char_literal "L'\xfffffffe'" L' escape_sequence character character character character ')) )) (compound_statement "{\n      (*refresh_func)();\n      *actual = L'\xfffffffe';\n      free(local_78);\n      p_Var5 = (functionptrtype)0x0;\n      goto LAB_0011a0c1;\n    }" { (expression_statement "(*refresh_func)();" (call_expression "(*refresh_func)()" (parenthesized_expression "(*refresh_func)" ( (pointer_expression "*refresh_func" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*actual = L'\xfffffffe';" (assignment_expression "*actual = L'\xfffffffe'" (pointer_expression "*actual" * identifier) = (char_literal "L'\xfffffffe'" L' escape_sequence character character character character ')) ;) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "p_Var5 = (functionptrtype)0x0;" (assignment_expression "p_Var5 = (functionptrtype)0x0" identifier = (cast_expression "(functionptrtype)0x0" ( (type_descriptor "functionptrtype" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_0011a0c1;" goto statement_identifier ;) })) (expression_statement "p_Var5 = func_from_key(&kbinput);" (assignment_expression "p_Var5 = func_from_key(&kbinput)" identifier = (call_expression "func_from_key(&kbinput)" identifier (argument_list "(&kbinput)" ( (pointer_expression "&kbinput" & identifier) )))) ;) (if_statement "if ((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;" if (parenthesized_expression "((p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0))" ( (binary_expression "(p_Var5 == (functionptrtype)PTR_do_enter_0013afa8) ||\n       (p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)" (parenthesized_expression "(p_Var5 == (functionptrtype)PTR_do_enter_0013afa8)" ( (binary_expression "p_Var5 == (functionptrtype)PTR_do_enter_0013afa8" identifier == (cast_expression "(functionptrtype)PTR_do_enter_0013afa8" ( (type_descriptor "functionptrtype" type_identifier) ) identifier)) )) || (parenthesized_expression "(p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0)" ( (binary_expression "p_Var5 == (functionptrtype)PTR_do_cancel_0013aed0" identifier == (cast_expression "(functionptrtype)PTR_do_cancel_0013aed0" ( (type_descriptor "functionptrtype" type_identifier) ) identifier)) ))) )) (goto_statement "goto LAB_0011a09f;" goto statement_identifier ;)) (if_statement "if (p_Var5 == (functionptrtype)PTR_do_tab_0013af48) {\n      if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }" if (parenthesized_expression "(p_Var5 == (functionptrtype)PTR_do_tab_0013af48)" ( (binary_expression "p_Var5 == (functionptrtype)PTR_do_tab_0013af48" identifier == (cast_expression "(functionptrtype)PTR_do_tab_0013af48" ( (type_descriptor "functionptrtype" type_identifier) ) identifier)) )) (compound_statement "{\n      if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }\n    }" { (if_statement "if (history_list == (filestruct **)0x0) {\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }\n      else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }" if (parenthesized_expression "(history_list == (filestruct **)0x0)" ( (binary_expression "history_list == (filestruct **)0x0" identifier == (cast_expression "(filestruct **)0x0" ( (type_descriptor "filestruct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }\n      }" { (if_statement "if (allow_tabs) {\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }" if (parenthesized_expression "(allow_tabs)" ( identifier )) (compound_statement "{\n          answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);\n        }" { (expression_statement "answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed);" (assignment_expression "answer = input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed)" identifier = (call_expression "input_tab(answer,allow_files,&typing_x,&tabbed,refresh_func,listed)" identifier (argument_list "(answer,allow_files,&typing_x,&tabbed,refresh_func,listed)" ( identifier , identifier , (pointer_expression "&typing_x" & identifier) , (pointer_expression "&tabbed" & identifier) , identifier , identifier )))) ;) })) }) (else_clause "else {\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }" else (compound_statement "{\n        wVar3 = the_code_for(do_tab,L'\t');\n        if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }\n        if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }\n      }" { (expression_statement "wVar3 = the_code_for(do_tab,L'\t');" (assignment_expression "wVar3 = the_code_for(do_tab,L'\t')" identifier = (call_expression "the_code_for(do_tab,L'\t')" identifier (argument_list "(do_tab,L'\t')" ( identifier , (char_literal "L'\t'" L' escape_sequence ') )))) ;) (if_statement "if (wVar3 != wVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }" if (parenthesized_expression "(wVar3 != wVar2)" ( (binary_expression "wVar3 != wVar2" identifier != identifier) )) (compound_statement "{\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          len = ~uVar6 - 1;\n        }" { (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = answer;" (assignment_expression "pcVar4 = answer" identifier = identifier) ;) (do_statement "do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1" identifier = (binary_expression "pcVar4 + (ulong)bVar7 * -2 + 1" (binary_expression "pcVar4 + (ulong)bVar7 * -2" identifier + (binary_expression "(ulong)bVar7 * -2" (cast_expression "(ulong)bVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "len = ~uVar6 - 1;" (assignment_expression "len = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (if_statement "if (len != 0) {\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }" if (parenthesized_expression "(len != 0)" ( (binary_expression "len != 0" identifier != number_literal) )) (compound_statement "{\n          answer = get_history_completion(history_list,answer,len);\n          uVar6 = 0xffffffffffffffff;\n          pcVar4 = answer;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');\n          typing_x = ~uVar6 - 1;\n        }" { (expression_statement "answer = get_history_completion(history_list,answer,len);" (assignment_expression "answer = get_history_completion(history_list,answer,len)" identifier = (call_expression "get_history_completion(history_list,answer,len)" identifier (argument_list "(history_list,answer,len)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = answer;" (assignment_expression "pcVar4 = answer" identifier = identifier) ;) (do_statement "do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar4;\n            pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n          }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1" identifier = (binary_expression "pcVar4 + (ulong)bVar7 * -2 + 1" (binary_expression "pcVar4 + (ulong)bVar7 * -2" identifier + (binary_expression "(ulong)bVar7 * -2" (cast_expression "(ulong)bVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "typing_x = ~uVar6 - 1;" (assignment_expression "typing_x = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) }))) }) (else_clause "else {\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }" else (compound_statement "{\n      tabbed = false;\n      if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }\n    }" { (expression_statement "tabbed = false;" (assignment_expression "tabbed = false" identifier = false) ;) (if_statement "if (p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68) {\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68)" ( (binary_expression "p_Var5 == (functionptrtype)PTR_get_history_older_void_0013af68" identifier == (cast_expression "(functionptrtype)PTR_get_history_older_void_0013af68" ( (type_descriptor "functionptrtype" type_identifier) ) identifier)) )) (compound_statement "{\n        if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }" { (if_statement "if (history_list != (filestruct **)0x0) {\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }" if (parenthesized_expression "(history_list != (filestruct **)0x0)" ( (binary_expression "history_list != (filestruct **)0x0" identifier != (cast_expression "(filestruct **)0x0" ( (type_descriptor "filestruct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n          if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }\n          pcVar4 = get_history_older(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }" { (if_statement "if (((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')) {\n            local_78 = mallocstrcpy(local_78,answer);\n          }" if (parenthesized_expression "(((*history_list)->next == (filestruct *)0x0) && (*answer != '\0'))" ( (binary_expression "((*history_list)->next == (filestruct *)0x0) && (*answer != '\0')" (parenthesized_expression "((*history_list)->next == (filestruct *)0x0)" ( (binary_expression "(*history_list)->next == (filestruct *)0x0" (field_expression "(*history_list)->next" (parenthesized_expression "(*history_list)" ( (pointer_expression "*history_list" * identifier) )) -> field_identifier) == (cast_expression "(filestruct *)0x0" ( (type_descriptor "filestruct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*answer != '\0')" ( (binary_expression "*answer != '\0'" (pointer_expression "*answer" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            local_78 = mallocstrcpy(local_78,answer);\n          }" { (expression_statement "local_78 = mallocstrcpy(local_78,answer);" (assignment_expression "local_78 = mallocstrcpy(local_78,answer)" identifier = (call_expression "mallocstrcpy(local_78,answer)" identifier (argument_list "(local_78,answer)" ( identifier , identifier )))) ;) })) (expression_statement "pcVar4 = get_history_older(history_list);" (assignment_expression "pcVar4 = get_history_older(history_list)" identifier = (call_expression "get_history_older(history_list)" identifier (argument_list "(history_list)" ( identifier )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }" { (expression_statement "answer = mallocstrcpy(answer,pcVar4);" (assignment_expression "answer = mallocstrcpy(answer,pcVar4)" identifier = (call_expression "mallocstrcpy(answer,pcVar4)" identifier (argument_list "(answer,pcVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = answer;" (assignment_expression "pcVar4 = answer" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1" identifier = (binary_expression "pcVar4 + (ulong)bVar7 * -2 + 1" (binary_expression "pcVar4 + (ulong)bVar7 * -2" identifier + (binary_expression "(ulong)bVar7 * -2" (cast_expression "(ulong)bVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "typing_x = ~uVar6 - 1;" (assignment_expression "typing_x = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "finished = false;" (assignment_expression "finished = false" identifier = false) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })) }) (else_clause "else if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }" else (if_statement "if (p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0) {\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }\n      else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0)" ( (binary_expression "p_Var5 == (functionptrtype)PTR_get_history_newer_void_0013afd0" identifier == (cast_expression "(functionptrtype)PTR_get_history_newer_void_0013afd0" ( (type_descriptor "functionptrtype" type_identifier) ) identifier)) )) (compound_statement "{\n        if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }\n      }" { (if_statement "if (history_list != (filestruct **)0x0) {\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }" if (parenthesized_expression "(history_list != (filestruct **)0x0)" ( (binary_expression "history_list != (filestruct **)0x0" identifier != (cast_expression "(filestruct **)0x0" ( (type_descriptor "filestruct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n          pcVar4 = get_history_newer(history_list);\n          if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }\n          finished = false;\n          goto LAB_0011a13e;\n        }" { (expression_statement "pcVar4 = get_history_newer(history_list);" (assignment_expression "pcVar4 = get_history_newer(history_list)" identifier = (call_expression "get_history_newer(history_list)" identifier (argument_list "(history_list)" ( identifier )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            answer = mallocstrcpy(answer,pcVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }" { (expression_statement "answer = mallocstrcpy(answer,pcVar4);" (assignment_expression "answer = mallocstrcpy(answer,pcVar4)" identifier = (call_expression "mallocstrcpy(answer,pcVar4)" identifier (argument_list "(answer,pcVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = answer;" (assignment_expression "pcVar4 = answer" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1" identifier = (binary_expression "pcVar4 + (ulong)bVar7 * -2 + 1" (binary_expression "pcVar4 + (ulong)bVar7 * -2" identifier + (binary_expression "(ulong)bVar7 * -2" (cast_expression "(ulong)bVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "typing_x = ~uVar6 - 1;" (assignment_expression "typing_x = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (if_statement "if ((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)) {\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }" if (parenthesized_expression "((((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0))" ( (binary_expression "(((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')) &&\n             (local_78 != (char *)0x0)" (parenthesized_expression "(((*history_list)->next == (filestruct *)0x0) && (*answer == '\0'))" ( (binary_expression "((*history_list)->next == (filestruct *)0x0) && (*answer == '\0')" (parenthesized_expression "((*history_list)->next == (filestruct *)0x0)" ( (binary_expression "(*history_list)->next == (filestruct *)0x0" (field_expression "(*history_list)->next" (parenthesized_expression "(*history_list)" ( (pointer_expression "*history_list" * identifier) )) -> field_identifier) == (cast_expression "(filestruct *)0x0" ( (type_descriptor "filestruct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*answer == '\0')" ( (binary_expression "*answer == '\0'" (pointer_expression "*answer" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(local_78 != (char *)0x0)" ( (binary_expression "local_78 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            answer = mallocstrcpy(answer,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar4 = answer;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');\n            typing_x = ~uVar6 - 1;\n          }" { (expression_statement "answer = mallocstrcpy(answer,local_78);" (assignment_expression "answer = mallocstrcpy(answer,local_78)" identifier = (call_expression "mallocstrcpy(answer,local_78)" identifier (argument_list "(answer,local_78)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = answer;" (assignment_expression "pcVar4 = answer" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar4;\n              pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar7 * -2 + 1" identifier = (binary_expression "pcVar4 + (ulong)bVar7 * -2 + 1" (binary_expression "pcVar4 + (ulong)bVar7 * -2" identifier + (binary_expression "(ulong)bVar7 * -2" (cast_expression "(ulong)bVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "typing_x = ~uVar6 - 1;" (assignment_expression "typing_x = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "finished = false;" (assignment_expression "finished = false" identifier = false) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })) }) (else_clause "else if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }" else (if_statement "if (p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48) {\n        finished = false;\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48)" ( (binary_expression "p_Var5 == (functionptrtype)PTR_do_help_void_0013ae48" identifier == (cast_expression "(functionptrtype)PTR_do_help_void_0013ae48" ( (type_descriptor "functionptrtype" type_identifier) ) identifier)) )) (compound_statement "{\n        finished = false;\n        goto LAB_0011a13e;\n      }" { (expression_statement "finished = false;" (assignment_expression "finished = false" identifier = false) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })))))) }))) (if_statement "if (finished != false) {\nLAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }\n      *actual = kbinput;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return p_Var5;\n    }" if (parenthesized_expression "(finished != false)" ( (binary_expression "finished != false" identifier != false) )) (compound_statement "{\nLAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }\n      *actual = kbinput;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return p_Var5;\n    }" { (labeled_statement "LAB_0011a09f:\n      if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }" statement_identifier : (if_statement "if (history_list != (filestruct **)0x0) {\n        history_reset(*history_list);\n        free(local_78);\n      }" if (parenthesized_expression "(history_list != (filestruct **)0x0)" ( (binary_expression "history_list != (filestruct **)0x0" identifier != (cast_expression "(filestruct **)0x0" ( (type_descriptor "filestruct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        history_reset(*history_list);\n        free(local_78);\n      }" { (expression_statement "history_reset(*history_list);" (call_expression "history_reset(*history_list)" identifier (argument_list "(*history_list)" ( (pointer_expression "*history_list" * identifier) ))) ;) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) }))) (expression_statement "*actual = kbinput;" (assignment_expression "*actual = kbinput" (pointer_expression "*actual" * identifier) = identifier) ;) (labeled_statement "LAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return p_Var5;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "undefined *\nFUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  byte bVar9;\n  void *local_78;\n  char local_46 [2];\n  int local_44;\n  long local_40;\n  \n  bVar9 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_44 = -1;\n  local_46[1] = 0;\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = DAT_0013bbc8;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }\n  lVar8 = 0;\n  local_78 = (void *)0x0;\nLAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );\n}\n\n" (function_definition "undefined *\nFUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  byte bVar9;\n  void *local_78;\n  char local_46 [2];\n  int local_44;\n  long local_40;\n  \n  bVar9 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_44 = -1;\n  local_46[1] = 0;\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = DAT_0013bbc8;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }\n  lVar8 = 0;\n  local_78 = (void *)0x0;\nLAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );\n}" type_identifier (pointer_declarator "*\nFUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" * (function_declarator "FUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" identifier (parameter_list "(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char param_2" primitive_type identifier) , (parameter_declaration "undefined1 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "long *param_5" (sized_type_specifier "long" long) (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "code *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) )))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  byte bVar9;\n  void *local_78;\n  char local_46 [2];\n  int local_44;\n  long local_40;\n  \n  bVar9 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_44 = -1;\n  local_46[1] = 0;\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = DAT_0013bbc8;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }\n  lVar8 = 0;\n  local_78 = (void *)0x0;\nLAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "void *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "char local_46 [2];" primitive_type (array_declarator "local_46 [2]" identifier [ number_literal ]) ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_44 = -1;" (assignment_expression "local_44 = -1" identifier = number_literal) ;) (expression_statement "local_46[1] = 0;" (assignment_expression "local_46[1] = 0" (subscript_expression "local_46[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');" do (compound_statement "{\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }" if (parenthesized_expression "(~uVar6 - 1 < DAT_0013b788)" ( (binary_expression "~uVar6 - 1 < DAT_0013b788" (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal) < identifier) )) (compound_statement "{\n    DAT_0013b788 = ~uVar6 - 1;\n  }" { (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "local_78 = (void *)0x0;" (assignment_expression "local_78 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );" do (compound_statement "{\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  }" { (expression_statement "iVar2 = local_44;" (assignment_expression "iVar2 = local_44" identifier = identifier) ;) (expression_statement "FUN_00119bcc();" (call_expression "FUN_00119bcc()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_44 = FUN_001197fb(local_46);" (assignment_expression "local_44 = FUN_001197fb(local_46)" identifier = (call_expression "FUN_001197fb(local_46)" identifier (argument_list "(local_46)" ( identifier )))) ;) (if_statement "if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }" if (parenthesized_expression "(local_44 == -2)" ( (binary_expression "local_44 == -2" identifier == number_literal) )) (compound_statement "{\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }" { (expression_statement "(*param_6)();" (call_expression "(*param_6)()" (parenthesized_expression "(*param_6)" ( (pointer_expression "*param_6" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*param_1 = -2;" (assignment_expression "*param_1 = -2" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "puVar5 = (undefined *)0x0;" (assignment_expression "puVar5 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0011a0c1;" goto statement_identifier ;) })) (expression_statement "puVar5 = (undefined *)FUN_0010e65f(&local_44);" (assignment_expression "puVar5 = (undefined *)FUN_0010e65f(&local_44)" identifier = (cast_expression "(undefined *)FUN_0010e65f(&local_44)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e65f(&local_44)" identifier (argument_list "(&local_44)" ( (pointer_expression "&local_44" & identifier) ))))) ;) (if_statement "if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;" if (parenthesized_expression "((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0))" ( (binary_expression "(puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)" (parenthesized_expression "(puVar5 == PTR_FUN_0013afa8)" ( (binary_expression "puVar5 == PTR_FUN_0013afa8" identifier == identifier) )) || (parenthesized_expression "(puVar5 == PTR_FUN_0013aed0)" ( (binary_expression "puVar5 == PTR_FUN_0013aed0" identifier == identifier) ))) )) (goto_statement "goto LAB_0011a09f;" goto statement_identifier ;)) (if_statement "if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" if (parenthesized_expression "(puVar5 == PTR_FUN_0013af48)" ( (binary_expression "puVar5 == PTR_FUN_0013af48" identifier == identifier) )) (compound_statement "{\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }" { (if_statement "if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" if (parenthesized_expression "(param_5 == (long *)0x0)" ( (binary_expression "param_5 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }" { (if_statement "if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }" if (parenthesized_expression "(param_2 != '\0')" ( (binary_expression "param_2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" identifier = (cast_expression "(char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" identifier (argument_list "(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" ( identifier , identifier , (pointer_expression "&DAT_0013b788" & identifier) , (binary_expression "local_46 + 1" identifier + number_literal) , identifier , identifier ))))) ;) })) }) (else_clause "else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" else (compound_statement "{\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" { (expression_statement "iVar3 = FUN_0010e636(FUN_0011e8f8,9);" (assignment_expression "iVar3 = FUN_0010e636(FUN_0011e8f8,9)" identifier = (call_expression "FUN_0010e636(FUN_0011e8f8,9)" identifier (argument_list "(FUN_0011e8f8,9)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }" if (parenthesized_expression "(iVar3 != iVar2)" ( (binary_expression "iVar3 != iVar2" identifier != identifier) )) (compound_statement "{\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }" { (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "lVar8 = ~uVar6 - 1;" (assignment_expression "lVar8 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (if_statement "if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" identifier = (cast_expression "(char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" identifier (argument_list "(param_5,DAT_0013bbc8,lVar8)" ( identifier , identifier , identifier ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) }))) }) (else_clause "else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" else (compound_statement "{\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" { (expression_statement "local_46[1] = 0;" (assignment_expression "local_46[1] = 0" (subscript_expression "local_46[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(puVar5 == PTR_FUN_0013af68)" ( (binary_expression "puVar5 == PTR_FUN_0013af68" identifier == identifier) )) (compound_statement "{\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }" { (if_statement "if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" if (parenthesized_expression "(param_5 != (long *)0x0)" ( (binary_expression "param_5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" { (if_statement "if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }" if (parenthesized_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0'))" ( (binary_expression "(*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')" (parenthesized_expression "(*(long *)(*param_5 + 0x10) == 0)" ( (binary_expression "*(long *)(*param_5 + 0x10) == 0" (pointer_expression "*(long *)(*param_5 + 0x10)" * (cast_expression "(long *)(*param_5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x10)" ( (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" * identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*DAT_0013bbc8 != '\0')" ( (binary_expression "*DAT_0013bbc8 != '\0'" (pointer_expression "*DAT_0013bbc8" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            local_78 = (void *)FUN_00124d68(local_78);\n          }" { (expression_statement "local_78 = (void *)FUN_00124d68(local_78);" (assignment_expression "local_78 = (void *)FUN_00124d68(local_78)" identifier = (cast_expression "(void *)FUN_00124d68(local_78)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00124d68(local_78)" identifier (argument_list "(local_78)" ( identifier ))))) ;) })) (expression_statement "lVar4 = FUN_00113388(param_5);" (assignment_expression "lVar4 = FUN_00113388(param_5)" identifier = (call_expression "FUN_00113388(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (if_statement "if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4)" identifier = (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,lVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00124d68(DAT_0013bbc8,lVar4)" identifier (argument_list "(DAT_0013bbc8,lVar4)" ( identifier , identifier ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })) }) (else_clause "else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" else (if_statement "if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(puVar5 == PTR_FUN_0013afd0)" ( (binary_expression "puVar5 == PTR_FUN_0013afd0" identifier == identifier) )) (compound_statement "{\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }" { (if_statement "if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" if (parenthesized_expression "(param_5 != (long *)0x0)" ( (binary_expression "param_5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" { (expression_statement "lVar4 = FUN_0011339b(param_5);" (assignment_expression "lVar4 = FUN_0011339b(param_5)" identifier = (call_expression "FUN_0011339b(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (if_statement "if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4)" identifier = (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,lVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00124d68(DAT_0013bbc8,lVar4)" identifier (argument_list "(DAT_0013bbc8,lVar4)" ( identifier , identifier ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (if_statement "if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" if (parenthesized_expression "(((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0))" ( (binary_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)" (parenthesized_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0'))" ( (binary_expression "(*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')" (parenthesized_expression "(*(long *)(*param_5 + 0x10) == 0)" ( (binary_expression "*(long *)(*param_5 + 0x10) == 0" (pointer_expression "*(long *)(*param_5 + 0x10)" * (cast_expression "(long *)(*param_5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x10)" ( (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" * identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*DAT_0013bbc8 == '\0')" ( (binary_expression "*DAT_0013bbc8 == '\0'" (pointer_expression "*DAT_0013bbc8" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(local_78 != (void *)0x0)" ( (binary_expression "local_78 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" { (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78)" identifier = (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,local_78)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00124d68(DAT_0013bbc8,local_78)" identifier (argument_list "(DAT_0013bbc8,local_78)" ( identifier , identifier ))))) ;) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" identifier = identifier) ;) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" { (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" identifier + (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" identifier = (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" ~ identifier) - number_literal)) ;) })) (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })) }) (else_clause "else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" else (if_statement "if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" if (parenthesized_expression "(puVar5 == PTR_FUN_0013ae48)" ( (binary_expression "puVar5 == PTR_FUN_0013ae48" identifier == identifier) )) (compound_statement "{\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" { (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_0011a13e;" goto statement_identifier ;) })))))) }))) (if_statement "if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }" if (parenthesized_expression "(local_46[0] != '\0')" ( (binary_expression "local_46[0] != '\0'" (subscript_expression "local_46[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }" { (labeled_statement "LAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" statement_identifier : (if_statement "if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" if (parenthesized_expression "(param_5 != (long *)0x0)" ( (binary_expression "param_5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" { (expression_statement "FUN_0011318d(*param_5);" (call_expression "FUN_0011318d(*param_5)" identifier (argument_list "(*param_5)" ( (pointer_expression "*param_5" * identifier) ))) ;) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) }))) (expression_statement "*param_1 = local_44;" (assignment_expression "*param_1 = local_44" (pointer_expression "*param_1" * identifier) = identifier) ;) (labeled_statement "LAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n        __stack_chk_fail();\n      }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return puVar5;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (unary_expression ~ IDENT) - LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , (binary_expression IDENT + LIT) , IDENT , IDENT ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (goto_statement goto statement_identifier ;) })))))) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "undefined *\nFUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  byte bVar9;\n  void *local_78;\n  char local_46 [2];\n  int local_44;\n  long local_40;\n  \n  bVar9 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_44 = -1;\n  local_46[1] = 0;\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = DAT_0013bbc8;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }\n  lVar8 = 0;\n  local_78 = (void *)0x0;\nLAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );\n}" (type_identifier "undefined") (pointer_declarator "*\nFUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" (* "*") (function_declarator "FUN_00119e33(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" (identifier "FUN_00119e33") (parameter_list "(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,\n            code *param_6)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char param_2" (primitive_type "char") (identifier "param_2")) (, ",") (parameter_declaration "undefined1 param_3" (type_identifier "undefined1") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "long *param_5" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "code *param_6" (type_identifier "code") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) () ")")))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined *puVar5;\n  ulong uVar6;\n  char *pcVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  byte bVar9;\n  void *local_78;\n  char local_46 [2];\n  int local_44;\n  long local_40;\n  \n  bVar9 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_44 = -1;\n  local_46[1] = 0;\n  uVar6 = 0xffffffffffffffff;\n  pcVar7 = DAT_0013bbc8;\n  do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');\n  if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }\n  lVar8 = 0;\n  local_78 = (void *)0x0;\nLAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "void *local_78;" (primitive_type "void") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "char local_46 [2];" (primitive_type "char") (array_declarator "local_46 [2]" (identifier "local_46") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" (identifier "bVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_44 = -1;" (assignment_expression "local_44 = -1" (identifier "local_44") (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_46[1] = 0;" (assignment_expression "local_46[1] = 0" (subscript_expression "local_46[1]" (identifier "local_46") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" (identifier "uVar6") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" (identifier "pcVar7") (= "=") (identifier "DAT_0013bbc8")) (; ";")) (do_statement "do {\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  } while (cVar1 != '\0');" (do "do") (compound_statement "{\n    if (uVar6 == 0) break;\n    uVar6 = uVar6 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + 1;\n  }" ({ "{") (if_statement "if (uVar6 == 0) break;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (if_statement "if (~uVar6 - 1 < DAT_0013b788) {\n    DAT_0013b788 = ~uVar6 - 1;\n  }" (if "if") (parenthesized_expression "(~uVar6 - 1 < DAT_0013b788)" (( "(") (binary_expression "~uVar6 - 1 < DAT_0013b788" (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (- "-") (number_literal "1")) (< "<") (identifier "DAT_0013b788")) () ")")) (compound_statement "{\n    DAT_0013b788 = ~uVar6 - 1;\n  }" ({ "{") (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" (identifier "DAT_0013b788") (= "=") (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (- "-") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = (void *)0x0;" (assignment_expression "local_78 = (void *)0x0" (identifier "local_78") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0011a13e:\n  do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );" (statement_identifier "LAB_0011a13e") (: ":") (do_statement "do {\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    iVar2 = local_44;\n    FUN_00119bcc();\n    local_44 = FUN_001197fb(local_46);\n    if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }\n    puVar5 = (undefined *)FUN_0010e65f(&local_44);\n    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;\n    if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }\n    if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }\n  }" ({ "{") (expression_statement "iVar2 = local_44;" (assignment_expression "iVar2 = local_44" (identifier "iVar2") (= "=") (identifier "local_44")) (; ";")) (expression_statement "FUN_00119bcc();" (call_expression "FUN_00119bcc()" (identifier "FUN_00119bcc") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_44 = FUN_001197fb(local_46);" (assignment_expression "local_44 = FUN_001197fb(local_46)" (identifier "local_44") (= "=") (call_expression "FUN_001197fb(local_46)" (identifier "FUN_001197fb") (argument_list "(local_46)" (( "(") (identifier "local_46") () ")")))) (; ";")) (if_statement "if (local_44 == -2) {\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }" (if "if") (parenthesized_expression "(local_44 == -2)" (( "(") (binary_expression "local_44 == -2" (identifier "local_44") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n      (*param_6)();\n      *param_1 = -2;\n      free(local_78);\n      puVar5 = (undefined *)0x0;\n      goto LAB_0011a0c1;\n    }" ({ "{") (expression_statement "(*param_6)();" (call_expression "(*param_6)()" (parenthesized_expression "(*param_6)" (( "(") (pointer_expression "*param_6" (* "*") (identifier "param_6")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*param_1 = -2;" (assignment_expression "*param_1 = -2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "-2")) (; ";")) (expression_statement "free(local_78);" (call_expression "free(local_78)" (identifier "free") (argument_list "(local_78)" (( "(") (identifier "local_78") () ")"))) (; ";")) (expression_statement "puVar5 = (undefined *)0x0;" (assignment_expression "puVar5 = (undefined *)0x0" (identifier "puVar5") (= "=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0011a0c1;" (goto "goto") (statement_identifier "LAB_0011a0c1") (; ";")) (} "}"))) (expression_statement "puVar5 = (undefined *)FUN_0010e65f(&local_44);" (assignment_expression "puVar5 = (undefined *)FUN_0010e65f(&local_44)" (identifier "puVar5") (= "=") (cast_expression "(undefined *)FUN_0010e65f(&local_44)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010e65f(&local_44)" (identifier "FUN_0010e65f") (argument_list "(&local_44)" (( "(") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")"))))) (; ";")) (if_statement "if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;" (if "if") (parenthesized_expression "((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0))" (( "(") (binary_expression "(puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)" (parenthesized_expression "(puVar5 == PTR_FUN_0013afa8)" (( "(") (binary_expression "puVar5 == PTR_FUN_0013afa8" (identifier "puVar5") (== "==") (identifier "PTR_FUN_0013afa8")) () ")")) (|| "||") (parenthesized_expression "(puVar5 == PTR_FUN_0013aed0)" (( "(") (binary_expression "puVar5 == PTR_FUN_0013aed0" (identifier "puVar5") (== "==") (identifier "PTR_FUN_0013aed0")) () ")"))) () ")")) (goto_statement "goto LAB_0011a09f;" (goto "goto") (statement_identifier "LAB_0011a09f") (; ";"))) (if_statement "if (puVar5 == PTR_FUN_0013af48) {\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }\n    else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" (if "if") (parenthesized_expression "(puVar5 == PTR_FUN_0013af48)" (( "(") (binary_expression "puVar5 == PTR_FUN_0013af48" (identifier "puVar5") (== "==") (identifier "PTR_FUN_0013af48")) () ")")) (compound_statement "{\n      if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }\n    }" ({ "{") (if_statement "if (param_5 == (long *)0x0) {\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }\n      else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" (if "if") (parenthesized_expression "(param_5 == (long *)0x0)" (( "(") (binary_expression "param_5 == (long *)0x0" (identifier "param_5") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }\n      }" ({ "{") (if_statement "if (param_2 != '\0') {\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }" (if "if") (parenthesized_expression "(param_2 != '\0')" (( "(") (binary_expression "param_2 != '\0'" (identifier "param_2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);\n        }" ({ "{") (expression_statement "DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" (identifier "DAT_0013bbc8") (= "=") (cast_expression "(char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" (identifier "FUN_0010e003") (argument_list "(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,\n                                              param_6,param_4)" (( "(") (identifier "DAT_0013bbc8") (, ",") (identifier "param_3") (, ",") (pointer_expression "&DAT_0013b788" (& "&") (identifier "DAT_0013b788")) (, ",") (binary_expression "local_46 + 1" (identifier "local_46") (+ "+") (number_literal "1")) (, ",") (identifier "param_6") (, ",") (identifier "param_4") () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" (else "else") (compound_statement "{\n        iVar3 = FUN_0010e636(FUN_0011e8f8,9);\n        if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }\n        if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }\n      }" ({ "{") (expression_statement "iVar3 = FUN_0010e636(FUN_0011e8f8,9);" (assignment_expression "iVar3 = FUN_0010e636(FUN_0011e8f8,9)" (identifier "iVar3") (= "=") (call_expression "FUN_0010e636(FUN_0011e8f8,9)" (identifier "FUN_0010e636") (argument_list "(FUN_0011e8f8,9)" (( "(") (identifier "FUN_0011e8f8") (, ",") (number_literal "9") () ")")))) (; ";")) (if_statement "if (iVar3 != iVar2) {\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }" (if "if") (parenthesized_expression "(iVar3 != iVar2)" (( "(") (binary_expression "iVar3 != iVar2" (identifier "iVar3") (!= "!=") (identifier "iVar2")) () ")")) (compound_statement "{\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          lVar8 = ~uVar6 - 1;\n        }" ({ "{") (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" (identifier "uVar6") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" (identifier "pcVar7") (= "=") (identifier "DAT_0013bbc8")) (; ";")) (do_statement "do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');" (do "do") (compound_statement "{\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          }" ({ "{") (if_statement "if (uVar6 == 0) break;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar9")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "lVar8 = ~uVar6 - 1;" (assignment_expression "lVar8 = ~uVar6 - 1" (identifier "lVar8") (= "=") (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (- "-") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (lVar8 != 0) {\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }" (if "if") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);\n          uVar6 = 0xffffffffffffffff;\n          pcVar7 = DAT_0013bbc8;\n          do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');\n          DAT_0013b788 = ~uVar6 - 1;\n        }" ({ "{") (expression_statement "DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" (identifier "DAT_0013bbc8") (= "=") (cast_expression "(char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001133b0(param_5,DAT_0013bbc8,lVar8)" (identifier "FUN_001133b0") (argument_list "(param_5,DAT_0013bbc8,lVar8)" (( "(") (identifier "param_5") (, ",") (identifier "DAT_0013bbc8") (, ",") (identifier "lVar8") () ")"))))) (; ";")) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" (identifier "uVar6") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" (identifier "pcVar7") (= "=") (identifier "DAT_0013bbc8")) (; ";")) (do_statement "do {\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          } while (cVar1 != '\0');" (do "do") (compound_statement "{\n            if (uVar6 == 0) break;\n            uVar6 = uVar6 - 1;\n            cVar1 = *pcVar7;\n            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n          }" ({ "{") (if_statement "if (uVar6 == 0) break;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar9")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" (identifier "DAT_0013b788") (= "=") (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (- "-") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" (else "else") (compound_statement "{\n      local_46[1] = 0;\n      if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }\n    }" ({ "{") (expression_statement "local_46[1] = 0;" (assignment_expression "local_46[1] = 0" (subscript_expression "local_46[1]" (identifier "local_46") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar5 == PTR_FUN_0013af68) {\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" (if "if") (parenthesized_expression "(puVar5 == PTR_FUN_0013af68)" (( "(") (binary_expression "puVar5 == PTR_FUN_0013af68" (identifier "puVar5") (== "==") (identifier "PTR_FUN_0013af68")) () ")")) (compound_statement "{\n        if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }" ({ "{") (if_statement "if (param_5 != (long *)0x0) {\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" (if "if") (parenthesized_expression "(param_5 != (long *)0x0)" (( "(") (binary_expression "param_5 != (long *)0x0" (identifier "param_5") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }\n          lVar4 = FUN_00113388(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" ({ "{") (if_statement "if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {\n            local_78 = (void *)FUN_00124d68(local_78);\n          }" (if "if") (parenthesized_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0'))" (( "(") (binary_expression "(*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')" (parenthesized_expression "(*(long *)(*param_5 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(*param_5 + 0x10) == 0" (pointer_expression "*(long *)(*param_5 + 0x10)" (* "*") (cast_expression "(long *)(*param_5 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 0x10)" (( "(") (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*DAT_0013bbc8 != '\0')" (( "(") (binary_expression "*DAT_0013bbc8 != '\0'" (pointer_expression "*DAT_0013bbc8" (* "*") (identifier "DAT_0013bbc8")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            local_78 = (void *)FUN_00124d68(local_78);\n          }" ({ "{") (expression_statement "local_78 = (void *)FUN_00124d68(local_78);" (assignment_expression "local_78 = (void *)FUN_00124d68(local_78)" (identifier "local_78") (= "=") (cast_expression "(void *)FUN_00124d68(local_78)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00124d68(local_78)" (identifier "FUN_00124d68") (argument_list "(local_78)" (( "(") (identifier "local_78") () ")"))))) (; ";")) (} "}"))) (expression_statement "lVar4 = FUN_00113388(param_5);" (assignment_expression "lVar4 = FUN_00113388(param_5)" (identifier "lVar4") (= "=") (call_expression "FUN_00113388(param_5)" (identifier "FUN_00113388") (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (if_statement "if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" ({ "{") (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4)" (identifier "DAT_0013bbc8") (= "=") (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,lVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00124d68(DAT_0013bbc8,lVar4)" (identifier "FUN_00124d68") (argument_list "(DAT_0013bbc8,lVar4)" (( "(") (identifier "DAT_0013bbc8") (, ",") (identifier "lVar4") () ")"))))) (; ";")) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" (identifier "uVar6") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" (identifier "pcVar7") (= "=") (identifier "DAT_0013bbc8")) (; ";")) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" (do "do") (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" ({ "{") (if_statement "if (uVar6 == 0) break;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar9")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" (identifier "DAT_0013b788") (= "=") (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (- "-") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" (identifier "local_46") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (goto_statement "goto LAB_0011a13e;" (goto "goto") (statement_identifier "LAB_0011a13e") (; ";")) (} "}"))) (} "}")) (else_clause "else if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" (else "else") (if_statement "if (puVar5 == PTR_FUN_0013afd0) {\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }\n      else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" (if "if") (parenthesized_expression "(puVar5 == PTR_FUN_0013afd0)" (( "(") (binary_expression "puVar5 == PTR_FUN_0013afd0" (identifier "puVar5") (== "==") (identifier "PTR_FUN_0013afd0")) () ")")) (compound_statement "{\n        if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }\n      }" ({ "{") (if_statement "if (param_5 != (long *)0x0) {\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" (if "if") (parenthesized_expression "(param_5 != (long *)0x0)" (( "(") (binary_expression "param_5 != (long *)0x0" (identifier "param_5") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          lVar4 = FUN_0011339b(param_5);\n          if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }\n          local_46[0] = '\0';\n          goto LAB_0011a13e;\n        }" ({ "{") (expression_statement "lVar4 = FUN_0011339b(param_5);" (assignment_expression "lVar4 = FUN_0011339b(param_5)" (identifier "lVar4") (= "=") (call_expression "FUN_0011339b(param_5)" (identifier "FUN_0011339b") (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (if_statement "if (lVar4 != 0) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" ({ "{") (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4)" (identifier "DAT_0013bbc8") (= "=") (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,lVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00124d68(DAT_0013bbc8,lVar4)" (identifier "FUN_00124d68") (argument_list "(DAT_0013bbc8,lVar4)" (( "(") (identifier "DAT_0013bbc8") (, ",") (identifier "lVar4") () ")"))))) (; ";")) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" (identifier "uVar6") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" (identifier "pcVar7") (= "=") (identifier "DAT_0013bbc8")) (; ";")) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" (do "do") (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" ({ "{") (if_statement "if (uVar6 == 0) break;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar9")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" (identifier "DAT_0013b788") (= "=") (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (- "-") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)) {\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" (if "if") (parenthesized_expression "(((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0))" (( "(") (binary_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&\n             (local_78 != (void *)0x0)" (parenthesized_expression "((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0'))" (( "(") (binary_expression "(*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')" (parenthesized_expression "(*(long *)(*param_5 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(*param_5 + 0x10) == 0" (pointer_expression "*(long *)(*param_5 + 0x10)" (* "*") (cast_expression "(long *)(*param_5 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 0x10)" (( "(") (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*DAT_0013bbc8 == '\0')" (( "(") (binary_expression "*DAT_0013bbc8 == '\0'" (pointer_expression "*DAT_0013bbc8" (* "*") (identifier "DAT_0013bbc8")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(local_78 != (void *)0x0)" (( "(") (binary_expression "local_78 != (void *)0x0" (identifier "local_78") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);\n            uVar6 = 0xffffffffffffffff;\n            pcVar7 = DAT_0013bbc8;\n            do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');\n            DAT_0013b788 = ~uVar6 - 1;\n          }" ({ "{") (expression_statement "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);" (assignment_expression "DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78)" (identifier "DAT_0013bbc8") (= "=") (cast_expression "(char *)FUN_00124d68(DAT_0013bbc8,local_78)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00124d68(DAT_0013bbc8,local_78)" (identifier "FUN_00124d68") (argument_list "(DAT_0013bbc8,local_78)" (( "(") (identifier "DAT_0013bbc8") (, ",") (identifier "local_78") () ")"))))) (; ";")) (expression_statement "uVar6 = 0xffffffffffffffff;" (assignment_expression "uVar6 = 0xffffffffffffffff" (identifier "uVar6") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = DAT_0013bbc8;" (assignment_expression "pcVar7 = DAT_0013bbc8" (identifier "pcVar7") (= "=") (identifier "DAT_0013bbc8")) (; ";")) (do_statement "do {\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            } while (cVar1 != '\0');" (do "do") (compound_statement "{\n              if (uVar6 == 0) break;\n              uVar6 = uVar6 - 1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;\n            }" ({ "{") (if_statement "if (uVar6 == 0) break;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar9 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar9 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar9 * -2" (cast_expression "(ulong)bVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar9")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "DAT_0013b788 = ~uVar6 - 1;" (assignment_expression "DAT_0013b788 = ~uVar6 - 1" (identifier "DAT_0013b788") (= "=") (binary_expression "~uVar6 - 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (- "-") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" (identifier "local_46") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (goto_statement "goto LAB_0011a13e;" (goto "goto") (statement_identifier "LAB_0011a13e") (; ";")) (} "}"))) (} "}")) (else_clause "else if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" (else "else") (if_statement "if (puVar5 == PTR_FUN_0013ae48) {\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" (if "if") (parenthesized_expression "(puVar5 == PTR_FUN_0013ae48)" (( "(") (binary_expression "puVar5 == PTR_FUN_0013ae48" (identifier "puVar5") (== "==") (identifier "PTR_FUN_0013ae48")) () ")")) (compound_statement "{\n        local_46[0] = '\0';\n        goto LAB_0011a13e;\n      }" ({ "{") (expression_statement "local_46[0] = '\0';" (assignment_expression "local_46[0] = '\0'" (subscript_expression "local_46[0]" (identifier "local_46") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (goto_statement "goto LAB_0011a13e;" (goto "goto") (statement_identifier "LAB_0011a13e") (; ";")) (} "}"))))))) (} "}")))) (if_statement "if (local_46[0] != '\0') {\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }" (if "if") (parenthesized_expression "(local_46[0] != '\0')" (( "(") (binary_expression "local_46[0] != '\0'" (subscript_expression "local_46[0]" (identifier "local_46") ([ "[") (number_literal "0") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }\n      *param_1 = local_44;\nLAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return puVar5;\n    }" ({ "{") (labeled_statement "LAB_0011a09f:\n      if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" (statement_identifier "LAB_0011a09f") (: ":") (if_statement "if (param_5 != (long *)0x0) {\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" (if "if") (parenthesized_expression "(param_5 != (long *)0x0)" (( "(") (binary_expression "param_5 != (long *)0x0" (identifier "param_5") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        FUN_0011318d(*param_5);\n        free(local_78);\n      }" ({ "{") (expression_statement "FUN_0011318d(*param_5);" (call_expression "FUN_0011318d(*param_5)" (identifier "FUN_0011318d") (argument_list "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")"))) (; ";")) (expression_statement "free(local_78);" (call_expression "free(local_78)" (identifier "free") (argument_list "(local_78)" (( "(") (identifier "local_78") () ")"))) (; ";")) (} "}")))) (expression_statement "*param_1 = local_44;" (assignment_expression "*param_1 = local_44" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_44")) (; ";")) (labeled_statement "LAB_0011a0c1:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }" (statement_identifier "LAB_0011a0c1") (: ":") (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n        __stack_chk_fail();\n      }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return puVar5;" (return "return") (identifier "puVar5") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))

type_1
function_1(type_2 *actual,type_3 allow_tabs,type_3 allow_files,type_3 *listed,
                 type_4 **var_12,type_5 *refresh_func)

{
  char var_4;
  type_2 var_16;
  type_2 var_15;
  char *var_3;
  type_1 var_11;
  type_6 var_2;
  size_t var_17;
  long var_1;
  type_7 bVar7;
  char *var_22;
  type_3 var_23;
  type_3 tabbed;
  type_2 var_8;
  long var_25;
  
  bVar7 = 0;
  var_25 = *(long *)(var_1 + 0x28);
  var_8 = L'\xffffffff';
  tabbed = false;
  var_2 = 0xffffffffffffffff;
  var_3 = answer;
  do {
    if (var_2 == 0) break;
    var_2 = var_2 - 1;
    var_4 = *var_3;
    var_3 = var_3 + 1;
  } while (var_4 != '\0');
  if (~var_2 - 1 < var_5) {
    var_5 = ~var_2 - 1;
  }
  var_17 = 0;
  var_22 = (char *)0x0;
LAB_0011a13e:
  do {
    var_16 = var_8;
    var_6();
    var_8 = var_7(&var_23);
    if (var_8 == L'\xfffffffe') {
      (*refresh_func)();
      *actual = L'\xfffffffe';
      var_9(var_22);
      var_11 = (type_1)0x0;
      goto LAB_0011a0c1;
    }
    var_11 = var_10(&var_8);
    if ((var_11 == (type_1)PTR_do_enter_0013afa8) ||
       (var_11 == (type_1)PTR_do_cancel_0013aed0)) goto LAB_0011a09f;
    if (var_11 == (type_1)PTR_do_tab_0013af48) {
      if (var_12 == (type_4 **)0x0) {
        if (allow_tabs) {
          answer = var_13(answer,allow_files,&var_5,&tabbed,refresh_func,listed);
        }
      }
      else {
        var_15 = var_14(do_tab,L'\t');
        if (var_15 != var_16) {
          var_2 = 0xffffffffffffffff;
          var_3 = answer;
          do {
            if (var_2 == 0) break;
            var_2 = var_2 - 1;
            var_4 = *var_3;
            var_3 = var_3 + (type_6)bVar7 * -2 + 1;
          } while (var_4 != '\0');
          var_17 = ~var_2 - 1;
        }
        if (var_17 != 0) {
          answer = var_18(var_12,answer,var_17);
          var_2 = 0xffffffffffffffff;
          var_3 = answer;
          do {
            if (var_2 == 0) break;
            var_2 = var_2 - 1;
            var_4 = *var_3;
            var_3 = var_3 + (type_6)bVar7 * -2 + 1;
          } while (var_4 != '\0');
          var_5 = ~var_2 - 1;
        }
      }
    }
    else {
      tabbed = false;
      if (var_11 == (type_1)PTR_get_history_older_void_0013af68) {
        if (var_12 != (type_4 **)0x0) {
          if (((*var_12)->next == (type_4 *)0x0) && (*answer != '\0')) {
            var_22 = var_19(var_22,answer);
          }
          var_3 = var_20(var_12);
          if (var_3 != (char *)0x0) {
            answer = var_19(answer,var_3);
            var_2 = 0xffffffffffffffff;
            var_3 = answer;
            do {
              if (var_2 == 0) break;
              var_2 = var_2 - 1;
              var_4 = *var_3;
              var_3 = var_3 + (type_6)bVar7 * -2 + 1;
            } while (var_4 != '\0');
            var_5 = ~var_2 - 1;
          }
          var_23 = false;
          goto LAB_0011a13e;
        }
      }
      else if (var_11 == (type_1)PTR_get_history_newer_void_0013afd0) {
        if (var_12 != (type_4 **)0x0) {
          var_3 = var_21(var_12);
          if (var_3 != (char *)0x0) {
            answer = var_19(answer,var_3);
            var_2 = 0xffffffffffffffff;
            var_3 = answer;
            do {
              if (var_2 == 0) break;
              var_2 = var_2 - 1;
              var_4 = *var_3;
              var_3 = var_3 + (type_6)bVar7 * -2 + 1;
            } while (var_4 != '\0');
            var_5 = ~var_2 - 1;
          }
          if ((((*var_12)->next == (type_4 *)0x0) && (*answer == '\0')) &&
             (var_22 != (char *)0x0)) {
            answer = var_19(answer,var_22);
            var_2 = 0xffffffffffffffff;
            var_3 = answer;
            do {
              if (var_2 == 0) break;
              var_2 = var_2 - 1;
              var_4 = *var_3;
              var_3 = var_3 + (type_6)bVar7 * -2 + 1;
            } while (var_4 != '\0');
            var_5 = ~var_2 - 1;
          }
          var_23 = false;
          goto LAB_0011a13e;
        }
      }
      else if (var_11 == (type_1)PTR_do_help_void_0013ae48) {
        var_23 = false;
        goto LAB_0011a13e;
      }
    }
    if (var_23 != false) {
LAB_0011a09f:
      if (var_12 != (type_4 **)0x0) {
        var_24(*var_12);
        var_9(var_22);
      }
      *actual = var_8;
LAB_0011a0c1:
      if (var_25 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
        var_26();
      }
      return var_11;
    }
  } while( true );
}


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

undefined *
MASKED(int *param_1,char param_2,undefined1 param_3,undefined8 param_4,long *param_5,
            code *param_6)

{
  char cVar1;
  int iVar2;
  int iVar3;
  long lVar4;
  undefined *puVar5;
  ulong uVar6;
  char *pcVar7;
  long lVar8;
  long in_FS_OFFSET;
  byte bVar9;
  void *local_78;
  char local_46 [2];
  int local_44;
  long local_40;
  
  bVar9 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  local_44 = -1;
  local_46[1] = 0;
  uVar6 = 0xffffffffffffffff;
  pcVar7 = DAT_0013bbc8;
  do {
    if (uVar6 == 0) break;
    uVar6 = uVar6 - 1;
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + 1;
  } while (cVar1 != '\0');
  if (~uVar6 - 1 < DAT_0013b788) {
    DAT_0013b788 = ~uVar6 - 1;
  }
  lVar8 = 0;
  local_78 = (void *)0x0;
LAB_0011a13e:
  do {
    iVar2 = local_44;
    FUN_00119bcc();
    local_44 = FUN_001197fb(local_46);
    if (local_44 == -2) {
      (*param_6)();
      *param_1 = -2;
      free(local_78);
      puVar5 = (undefined *)0x0;
      goto LAB_0011a0c1;
    }
    puVar5 = (undefined *)FUN_0010e65f(&local_44);
    if ((puVar5 == PTR_FUN_0013afa8) || (puVar5 == PTR_FUN_0013aed0)) goto LAB_0011a09f;
    if (puVar5 == PTR_FUN_0013af48) {
      if (param_5 == (long *)0x0) {
        if (param_2 != '\0') {
          DAT_0013bbc8 = (char *)FUN_0010e003(DAT_0013bbc8,param_3,&DAT_0013b788,local_46 + 1,
                                              param_6,param_4);
        }
      }
      else {
        iVar3 = FUN_0010e636(FUN_0011e8f8,9);
        if (iVar3 != iVar2) {
          uVar6 = 0xffffffffffffffff;
          pcVar7 = DAT_0013bbc8;
          do {
            if (uVar6 == 0) break;
            uVar6 = uVar6 - 1;
            cVar1 = *pcVar7;
            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
          } while (cVar1 != '\0');
          lVar8 = ~uVar6 - 1;
        }
        if (lVar8 != 0) {
          DAT_0013bbc8 = (char *)FUN_001133b0(param_5,DAT_0013bbc8,lVar8);
          uVar6 = 0xffffffffffffffff;
          pcVar7 = DAT_0013bbc8;
          do {
            if (uVar6 == 0) break;
            uVar6 = uVar6 - 1;
            cVar1 = *pcVar7;
            pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
          } while (cVar1 != '\0');
          DAT_0013b788 = ~uVar6 - 1;
        }
      }
    }
    else {
      local_46[1] = 0;
      if (puVar5 == PTR_FUN_0013af68) {
        if (param_5 != (long *)0x0) {
          if ((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 != '\0')) {
            local_78 = (void *)FUN_00124d68(local_78);
          }
          lVar4 = FUN_00113388(param_5);
          if (lVar4 != 0) {
            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);
            uVar6 = 0xffffffffffffffff;
            pcVar7 = DAT_0013bbc8;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar7;
              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
            } while (cVar1 != '\0');
            DAT_0013b788 = ~uVar6 - 1;
          }
          local_46[0] = '\0';
          goto LAB_0011a13e;
        }
      }
      else if (puVar5 == PTR_FUN_0013afd0) {
        if (param_5 != (long *)0x0) {
          lVar4 = FUN_0011339b(param_5);
          if (lVar4 != 0) {
            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,lVar4);
            uVar6 = 0xffffffffffffffff;
            pcVar7 = DAT_0013bbc8;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar7;
              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
            } while (cVar1 != '\0');
            DAT_0013b788 = ~uVar6 - 1;
          }
          if (((*(long *)(*param_5 + 0x10) == 0) && (*DAT_0013bbc8 == '\0')) &&
             (local_78 != (void *)0x0)) {
            DAT_0013bbc8 = (char *)FUN_00124d68(DAT_0013bbc8,local_78);
            uVar6 = 0xffffffffffffffff;
            pcVar7 = DAT_0013bbc8;
            do {
              if (uVar6 == 0) break;
              uVar6 = uVar6 - 1;
              cVar1 = *pcVar7;
              pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1;
            } while (cVar1 != '\0');
            DAT_0013b788 = ~uVar6 - 1;
          }
          local_46[0] = '\0';
          goto LAB_0011a13e;
        }
      }
      else if (puVar5 == PTR_FUN_0013ae48) {
        local_46[0] = '\0';
        goto LAB_0011a13e;
      }
    }
    if (local_46[0] != '\0') {
LAB_0011a09f:
      if (param_5 != (long *)0x0) {
        FUN_0011318d(*param_5);
        free(local_78);
      }
      *param_1 = local_44;
LAB_0011a0c1:
      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
        __stack_chk_fail();
      }
      return puVar5;
    }
  } while( true );
}

