
strtol_error xstrtol(char *s,char **ptr,int strtol_base,long *val,char *valid_suffixes)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  char *pcVar5;
  char *pcVar6;
  int iVar7;
  int iVar8;
  char **ppcVar9;
  char **ppcVar10;
  strtol_error sVar11;
  char *pcVar12;
  char *t_ptr;
  long tmp;
  int local_24;
  
  local_24 = *(int *)PTR___stack_chk_guard_0002929c;
  if (0x24 < (uint)strtol_base) {
    sVar11 = (*(code *)PTR___assert_fail_000291e0)
                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,
                        PTR_DAT_0002910c + -0x7328);
    return sVar11;
  }
  if (ptr == (char **)0x0) {
    ptr = &t_ptr;
  }
  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();
  *piVar1 = 0;
  ppcVar10 = ptr;
  tmp = (*(code *)PTR_strtol_000291e4)(s,ptr,strtol_base);
  pcVar12 = *ptr;
  if (pcVar12 == s) {
    sVar11 = LONGINT_INVALID;
    if (valid_suffixes == (char *)0x0) goto LAB_00015a98;
    ppcVar10 = (char **)(int)*s;
    if (ppcVar10 == (char **)0x0) {
      sVar11 = LONGINT_INVALID;
      goto LAB_00015a98;
    }
    iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);
    if (iVar7 == 0) {
      sVar11 = LONGINT_INVALID;
      goto LAB_00015a98;
    }
    tmp = 1;
    ppcVar9 = (char **)(int)*pcVar12;
    sVar11 = LONGINT_OK;
  }
  else {
    if (*piVar1 == 0) {
      sVar11 = LONGINT_OK;
    }
    else {
      if (*piVar1 != 0x22) {
        sVar11 = LONGINT_INVALID;
        goto LAB_00015a98;
      }
      sVar11 = LONGINT_OVERFLOW;
    }
    if (valid_suffixes == (char *)0x0) {
      *val = tmp;
      goto LAB_00015a98;
    }
    ppcVar10 = (char **)(int)*pcVar12;
    ppcVar9 = ppcVar10;
    if (ppcVar10 == (char **)0x0) {
      *val = tmp;
      goto LAB_00015a98;
    }
  }
  ppcVar10 = ppcVar9;
  iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);
  if (iVar7 == 0) {
    *val = tmp;
    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;
  }
  else {
    if (((int)ppcVar9 - 0x45U & 0xff) < 0x30) {
                    /* WARNING: Could not emulate address calculation at 0x00015a64 */
                    /* WARNING: Treating indirect jump as call */
      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +
                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();
      return sVar11;
    }
    ppcVar10 = (char **)0x400;
    if (((int)ppcVar9 - 0x42U & 0xff) < 0x36) {
                    /* WARNING: Could not emulate address calculation at 0x00015b68 */
                    /* WARNING: Treating indirect jump as call */
      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +
                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();
      return sVar11;
    }
    *val = tmp;
    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;
  }
LAB_00015a98:
  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {
    return sVar11;
  }
  (*(code *)PTR___stack_chk_fail_0002928c)();
  pcVar5 = ppcVar10[8];
  pcVar6 = *ppcVar10;
  pcVar12 = ppcVar10[7];
  if (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5)) {
    do {
      iVar7 = (int)pcVar6 - (int)pcVar5;
      iVar8 = (int)pcVar5 - (int)pcVar12;
      if (iVar8 < iVar7) {
        if (0 < iVar8) {
          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);
          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);
          do {
            uVar4 = *puVar3;
            *puVar3 = *puVar2;
            *puVar2 = uVar4;
            puVar2 = puVar2 + 1;
            puVar3 = puVar3 + 1;
          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));
        }
        pcVar6 = pcVar6 + -iVar8;
      }
      else {
        if (0 < iVar7) {
          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);
          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);
          do {
            uVar4 = *puVar3;
            *puVar3 = *puVar2;
            *puVar2 = uVar4;
            puVar3 = puVar3 + 1;
            puVar2 = puVar2 + 1;
          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));
        }
        pcVar12 = pcVar12 + iVar7;
      }
    } while (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5));
  }
  pcVar12 = ppcVar10[8];
  pcVar5 = ppcVar10[7];
  ppcVar10[7] = pcVar5 + ((int)*ppcVar10 - (int)pcVar12);
  ppcVar10[8] = *ppcVar10;
  return (strtol_error)(pcVar5 + ((int)*ppcVar10 - (int)pcVar12));
}



uint xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  uint uVar11;
  char *pcVar12;
  int iStack_2c;
  undefined4 local_28;
  int local_24;
  
  local_24 = *(int *)PTR___stack_chk_guard_0002929c;
  if (0x24 < param_3) {
    uVar11 = (*(code *)PTR___assert_fail_000291e0)
                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,
                        PTR_DAT_0002910c + -0x7328);
    return uVar11;
  }
  if (param_2 == (int *)0x0) {
    param_2 = &iStack_2c;
  }
  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();
  *piVar1 = 0;
  piVar10 = param_2;
  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);
  pcVar12 = (char *)*param_2;
  if (pcVar12 == param_1) {
    uVar11 = 4;
    if (param_5 == 0) goto LAB_00015a98;
    piVar10 = (int *)(int)*param_1;
    if (piVar10 == (int *)0x0) {
      uVar11 = 4;
      goto LAB_00015a98;
    }
    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);
    if (iVar5 == 0) {
      uVar11 = 4;
      goto LAB_00015a98;
    }
    local_28 = 1;
    piVar1 = (int *)(int)*pcVar12;
    uVar11 = 0;
  }
  else {
    if (*piVar1 == 0) {
      uVar11 = 0;
    }
    else {
      if (*piVar1 != 0x22) {
        uVar11 = 4;
        goto LAB_00015a98;
      }
      uVar11 = 1;
    }
    if (param_5 == 0) {
      *param_4 = local_28;
      goto LAB_00015a98;
    }
    piVar10 = (int *)(int)*pcVar12;
    piVar1 = piVar10;
    if (piVar10 == (int *)0x0) {
      *param_4 = local_28;
      goto LAB_00015a98;
    }
  }
  piVar10 = piVar1;
  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);
  if (iVar5 == 0) {
    *param_4 = local_28;
    uVar11 = uVar11 | 2;
  }
  else {
    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {
                    /* WARNING: Could not emulate address calculation at 0x00015a64 */
                    /* WARNING: Treating indirect jump as call */
      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +
                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();
      return uVar11;
    }
    piVar10 = (int *)0x400;
    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {
                    /* WARNING: Could not emulate address calculation at 0x00015b68 */
                    /* WARNING: Treating indirect jump as call */
      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +
                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();
      return uVar11;
    }
    *param_4 = local_28;
    uVar11 = uVar11 | 2;
  }
LAB_00015a98:
  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {
    return uVar11;
  }
  (*(code *)PTR___stack_chk_fail_0002928c)();
  iVar6 = piVar10[8];
  iVar7 = *piVar10;
  iVar5 = piVar10[7];
  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {
    do {
      iVar8 = iVar7 - iVar6;
      iVar9 = iVar6 - iVar5;
      if (iVar9 < iVar8) {
        if (0 < iVar9) {
          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);
          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);
          do {
            uVar4 = *puVar3;
            *puVar3 = *puVar2;
            *puVar2 = uVar4;
            puVar2 = puVar2 + 1;
            puVar3 = puVar3 + 1;
          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));
        }
        iVar7 = iVar7 - iVar9;
      }
      else {
        if (0 < iVar8) {
          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);
          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);
          do {
            uVar4 = *puVar3;
            *puVar3 = *puVar2;
            *puVar2 = uVar4;
            puVar3 = puVar3 + 1;
            puVar2 = puVar2 + 1;
          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));
        }
        iVar5 = iVar5 + iVar8;
      }
    } while ((iVar6 < iVar7) && (iVar5 < iVar6));
  }
  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);
  piVar10[7] = uVar11;
  piVar10[8] = *piVar10;
  return uVar11;
}


lui gp,0x2
addiu gp,gp,-0x4830
addu gp,gp,t9
addiu sp,sp,-0x48
sw ra,0x44(sp)
sw s6,0x40(sp)
sw s5,0x3c(sp)
sw s4,0x38(sp)
sw s3,0x34(sp)
sw s2,0x30(sp)
sw s1,0x2c(sp)
sw s0,0x28(sp)
sw gp,0x10(sp)
lw s6,0x58(sp)
lw v0,-0x7e34(gp)
lw v0,0x0(v0)
sw v0,0x24(sp)
sltiu v0,a2,0x25
beq v0,zero,0x000159c4
_lw t9,-0x7ef0(gp)
or s1,a0,zero
or s0,a1,zero
or s2,a2,zero
beq a1,zero,0x000159e8
_or s3,a3,zero
lw t9,-0x7ea4(gp)
jalr t9
_nop
lw gp,0x10(sp)
or s5,v0,zero
sw zero,0x0(v0)
or a2,s2,zero
or a1,s0,zero
or a0,s1,zero
lw t9,-0x7eec(gp)
jalr t9
_nop
lw gp,0x10(sp)
sw v0,0x20(sp)
lw s4,0x0(s0)
beq s4,s1,0x000159f0
_nop
lw v1,0x0(s5)
beq v1,zero,0x00015a78
_li a0,0x22
bne v1,a0,0x00015e18
_nop
b 0x00015a7c
_li s2,0x1
lw a3,-0x7fc4(gp)
addiu a3,a3,-0x7328
li a2,0x60
lw a1,-0x7fc4(gp)
addiu a1,a1,-0x74fc
lw a0,-0x7fc4(gp)
addiu a0,a0,-0x74ec
jalr t9
_nop
b 0x00015964
_addiu s0,sp,0x1c
beq s6,zero,0x00015a98
_li s2,0x4
lb a1,0x0(s1)
beq a1,zero,0x00015e08
_or a0,s6,zero
lw t9,-0x7e8c(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,zero,0x00015e10
_li v0,0x1
sw v0,0x20(sp)
lb s1,0x0(s4)
or s2,zero,zero
or a1,s1,zero
or a0,s6,zero
lw t9,-0x7e8c(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,zero,0x00015adc
_addiu v0,s1,-0x45
andi v1,v0,0xff
sltiu v1,v1,0x30
beq v1,zero,0x00015b9c
_andi v0,v0,0xff
sll v0,v0,0x2
lw v1,-0x7fc4(gp)
addiu v1,v1,-0x74c0
addu v0,v1,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
or s2,zero,zero
beq s6,zero,0x00015ad4
_nop
lb s1,0x0(s4)
bne s1,zero,0x00015a2c
_or a1,s1,zero
lw v0,0x20(sp)
sw v0,0x0(s3)
or v0,s2,zero
lw a0,0x24(sp)
lw v1,-0x7e34(gp)
lw v1,0x0(v1)
bne a0,v1,0x00015e20
_lw ra,0x44(sp)
lw s6,0x40(sp)
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x48
b 0x00015a98
_sw v0,0x0(s3)
lw v0,0x20(sp)
sw v0,0x0(s3)
b 0x00015a98
_ori s2,s2,0x2
li a1,0x30
or a0,s6,zero
lw t9,-0x7e8c(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,zero,0x00015ba8
_li v0,0x44
lb a1,0x1(s4)
beq a1,v0,0x00015bb4
_li v0,0x69
beq a1,v0,0x00015b7c
_li v0,0x42
xor s4,a1,v0
li a0,0x2
li v1,0x1
movz v1,a0,s4
or s4,v1,zero
xor a1,a1,v0
li v1,0x3e8
li v0,0x400
movz v0,v1,a1
or a1,v0,zero
addiu s1,s1,-0x42
andi v0,s1,0xff
sltiu v0,v0,0x36
beq v0,zero,0x00015dd0
_lw v0,-0x7fc4(gp)
andi s1,s1,0xff
sll s1,s1,0x2
addiu v0,v0,-0x7400
addu s1,v0,s1
lw v0,0x0(s1)
addu v0,v0,gp
jr v0
_nop
lb s4,0x2(s4)
xori s4,s4,0x42
li v1,0x1
li v0,0x3
movn v0,v1,s4
or s4,v0,zero
b 0x00015b48
_li a1,0x400
li s4,0x1
b 0x00015b48
_li a1,0x400
li s4,0x1
b 0x00015b48
_li a1,0x400
li s4,0x2
b 0x00015b48
_li a1,0x3e8
lw v1,0x20(sp)
lui v0,0xffc0
slt v0,v1,v0
bne v0,zero,0x00015bf0
_lui v0,0x8000
lui v0,0x40
slt v0,v1,v0
beq v0,zero,0x00015bfc
_sll v1,v1,0x9
sw v1,0x20(sp)
b 0x00015de4
_or v0,zero,zero
sw v0,0x20(sp)
b 0x00015de4
_li v0,0x1
lui v0,0x7fff
ori v0,v0,0xffff
sw v0,0x20(sp)
b 0x00015de4
_li v0,0x1
lw v1,0x20(sp)
lui v0,0xffe0
slt v0,v1,v0
bne v0,zero,0x00015c40
_lui v0,0x8000
lui v0,0x20
slt v0,v1,v0
beq v0,zero,0x00015c4c
_sll v1,v1,0xa
sw v1,0x20(sp)
b 0x00015de4
_or v0,zero,zero
sw v0,0x20(sp)
b 0x00015de4
_li v0,0x1
lui v0,0x7fff
ori v0,v0,0xffff
sw v0,0x20(sp)
b 0x00015de4
_li v0,0x1
li a2,0x6
addiu a0,sp,0x20
lw t9,-0x7fcc(gp)
addiu t9,t9,0x5860
bal 0x00015860
_nop
lw gp,0x10(sp)
b 0x00015de8
_or s2,s2,v0
li a2,0x3
addiu a0,sp,0x20
lw t9,-0x7fcc(gp)
addiu t9,t9,0x5860
bal 0x00015860
_nop
lw gp,0x10(sp)
b 0x00015de8
_or s2,s2,v0
li a2,0x1
addiu a0,sp,0x20
lw t9,-0x7fcc(gp)
addiu t9,t9,0x5860
bal 0x00015860
_nop
lw gp,0x10(sp)
b 0x00015de8
_or s2,s2,v0
li a2,0x2
addiu a0,sp,0x20
lw t9,-0x7fcc(gp)
addiu t9,t9,0x5860
bal 0x00015860
_nop
lw gp,0x10(sp)
b 0x00015de8
_or s2,s2,v0
li a2,0x5
addiu a0,sp,0x20
lw t9,-0x7fcc(gp)
addiu t9,t9,0x5860
bal 0x00015860
_nop
lw gp,0x10(sp)
b 0x00015de8
_or s2,s2,v0
li a2,0x4
addiu a0,sp,0x20
lw t9,-0x7fcc(gp)
addiu t9,t9,0x5860
bal 0x00015860
_nop
lw gp,0x10(sp)
b 0x00015de8
_or s2,s2,v0
lw v1,0x20(sp)
lui v0,0xc000
slt v0,v1,v0
bne v0,zero,0x00015d68
_lui v0,0x8000
lui v0,0x4000
slt v0,v1,v0
beq v0,zero,0x00015d74
_sll v1,v1,0x1
sw v1,0x20(sp)
b 0x00015de4
_or v0,zero,zero
sw v0,0x20(sp)
b 0x00015de4
_li v0,0x1
lui v0,0x7fff
ori v0,v0,0xffff
sw v0,0x20(sp)
b 0x00015de4
_li v0,0x1
li a2,0x8
addiu a0,sp,0x20
lw t9,-0x7fcc(gp)
addiu t9,t9,0x5860
bal 0x00015860
_nop
lw gp,0x10(sp)
b 0x00015de8
_or s2,s2,v0
li a2,0x7
addiu a0,sp,0x20
lw t9,-0x7fcc(gp)
addiu t9,t9,0x5860
bal 0x00015860
_nop
lw gp,0x10(sp)
b 0x00015de8
_or s2,s2,v0
lw v0,0x20(sp)
sw v0,0x0(s3)
b 0x00015a98
_ori s2,s2,0x2
or v0,zero,zero
or s2,s2,v0
lw v0,0x0(s0)
addu s4,v0,s4
sw s4,0x0(s0)
lb v0,0x0(s4)
beq v0,zero,0x00015a94
_lw v0,0x20(sp)
b 0x00015a94
_ori s2,s2,0x2
b 0x00015a98
_li s2,0x4
b 0x00015a98
_li s2,0x4
b 0x00015a98
_li s2,0x4
lw t9,-0x7e44(gp)
jalr t9
_nop
nop
(translation_unit "uint xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  uint uVar11;\n  char *pcVar12;\n  int iStack_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }\n  if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  piVar10 = param_2;\n  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);\n  pcVar12 = (char *)*param_2;\n  if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }\n  piVar10 = piVar1;\n  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n  if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  iVar6 = piVar10[8];\n  iVar7 = *piVar10;\n  iVar5 = piVar10[7];\n  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }\n  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);\n  piVar10[7] = uVar11;\n  piVar10[8] = *piVar10;\n  return uVar11;\n}\n\n" (function_definition "uint xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  uint uVar11;\n  char *pcVar12;\n  int iStack_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }\n  if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  piVar10 = param_2;\n  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);\n  pcVar12 = (char *)*param_2;\n  if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }\n  piVar10 = piVar1;\n  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n  if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  iVar6 = piVar10[8];\n  iVar7 = *piVar10;\n  iVar5 = piVar10[7];\n  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }\n  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);\n  piVar10[7] = uVar11;\n  piVar10[8] = *piVar10;\n  return uVar11;\n}" type_identifier (function_declarator "xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)" identifier (parameter_list "(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  uint uVar11;\n  char *pcVar12;\n  int iStack_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }\n  if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  piVar10 = param_2;\n  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);\n  pcVar12 = (char *)*param_2;\n  if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }\n  piVar10 = piVar1;\n  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n  if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  iVar6 = piVar10[8];\n  iVar7 = *piVar10;\n  iVar5 = piVar10[7];\n  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }\n  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);\n  piVar10[7] = uVar11;\n  piVar10[8] = *piVar10;\n  return uVar11;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int iStack_2c;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0002929c;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0002929c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0002929c" * (cast_expression "(int *)PTR___stack_chk_guard_0002929c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }" if (parenthesized_expression "(0x24 < param_3)" ( (binary_expression "0x24 < param_3" number_literal < identifier) )) (compound_statement "{\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }" { (expression_statement "uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);" (assignment_expression "uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" identifier = (call_expression "(*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" (parenthesized_expression "(*(code *)PTR___assert_fail_000291e0)" ( (pointer_expression "*(code *)PTR___assert_fail_000291e0" * (cast_expression "(code *)PTR___assert_fail_000291e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" ( (binary_expression "PTR_DAT_0002910c + -0x74ec" identifier + number_literal) , (binary_expression "PTR_DAT_0002910c + -0x74fc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0002910c + -0x7328" identifier + number_literal) )))) ;) (return_statement "return uVar11;" return identifier ;) })) (if_statement "if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_2 = &iStack_2c;\n  }" { (expression_statement "param_2 = &iStack_2c;" (assignment_expression "param_2 = &iStack_2c" identifier = (pointer_expression "&iStack_2c" & identifier)) ;) })) (expression_statement "piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();" (assignment_expression "piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_0002922c)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_0002922c)()" (parenthesized_expression "(*(code *)PTR___errno_location_0002922c)" ( (pointer_expression "*(code *)PTR___errno_location_0002922c" * (cast_expression "(code *)PTR___errno_location_0002922c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "piVar10 = param_2;" (assignment_expression "piVar10 = param_2" identifier = identifier) ;) (expression_statement "local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);" (assignment_expression "local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3)" identifier = (call_expression "(*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3)" (parenthesized_expression "(*(code *)PTR_strtol_000291e4)" ( (pointer_expression "*(code *)PTR_strtol_000291e4" * (cast_expression "(code *)PTR_strtol_000291e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" if (parenthesized_expression "(pcVar12 == param_1)" ( (binary_expression "pcVar12 == param_1" identifier == identifier) )) (compound_statement "{\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }" { (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" identifier = number_literal) ;) (if_statement "if (param_5 == 0) goto LAB_00015a98;" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;)) (expression_statement "piVar10 = (int *)(int)*param_1;" (assignment_expression "piVar10 = (int *)(int)*param_1" identifier = (cast_expression "(int *)(int)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)))) ;) (if_statement "if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" { (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "iVar5 = (*(code *)PTR_strchr_00029244)(param_5);" (assignment_expression "iVar5 = (*(code *)PTR_strchr_00029244)(param_5)" identifier = (call_expression "(*(code *)PTR_strchr_00029244)(param_5)" (parenthesized_expression "(*(code *)PTR_strchr_00029244)" ( (pointer_expression "*(code *)PTR_strchr_00029244" * (cast_expression "(code *)PTR_strchr_00029244" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_5)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" { (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "piVar1 = (int *)(int)*pcVar12;" (assignment_expression "piVar1 = (int *)(int)*pcVar12" identifier = (cast_expression "(int *)(int)*pcVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*pcVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar12" * identifier)))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" else (compound_statement "{\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" { (if_statement "if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" else (compound_statement "{\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" { (if_statement "if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }" if (parenthesized_expression "(*piVar1 != 0x22)" ( (binary_expression "*piVar1 != 0x22" (pointer_expression "*piVar1" * identifier) != number_literal) )) (compound_statement "{\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }" { (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) }))) (if_statement "if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" { (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" * identifier) = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "piVar10 = (int *)(int)*pcVar12;" (assignment_expression "piVar10 = (int *)(int)*pcVar12" identifier = (cast_expression "(int *)(int)*pcVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*pcVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar12" * identifier)))) ;) (expression_statement "piVar1 = piVar10;" (assignment_expression "piVar1 = piVar10" identifier = identifier) ;) (if_statement "if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" { (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" * identifier) = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) }))) (expression_statement "piVar10 = piVar1;" (assignment_expression "piVar10 = piVar1" identifier = identifier) ;) (expression_statement "iVar5 = (*(code *)PTR_strchr_00029244)(param_5);" (assignment_expression "iVar5 = (*(code *)PTR_strchr_00029244)(param_5)" identifier = (call_expression "(*(code *)PTR_strchr_00029244)(param_5)" (parenthesized_expression "(*(code *)PTR_strchr_00029244)" ( (pointer_expression "*(code *)PTR_strchr_00029244" * (cast_expression "(code *)PTR_strchr_00029244" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_5)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" { (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "uVar11 = uVar11 | 2;" (assignment_expression "uVar11 = uVar11 | 2" identifier = (binary_expression "uVar11 | 2" identifier | number_literal)) ;) }) (else_clause "else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" else (compound_statement "{\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" { (if_statement "if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }" if (parenthesized_expression "(((int)piVar1 - 0x45U & 0xff) < 0x30)" ( (binary_expression "((int)piVar1 - 0x45U & 0xff) < 0x30" (parenthesized_expression "((int)piVar1 - 0x45U & 0xff)" ( (binary_expression "(int)piVar1 - 0x45U & 0xff" (binary_expression "(int)piVar1 - 0x45U" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }" { comment comment (expression_statement "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();" (assignment_expression "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" * (cast_expression "(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" ( (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0" (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4" identifier + (binary_expression "((int)piVar1 - 0x45U & 0xff) * 4" (parenthesized_expression "((int)piVar1 - 0x45U & 0xff)" ( (binary_expression "(int)piVar1 - 0x45U & 0xff" (binary_expression "(int)piVar1 - 0x45U" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar11;" return identifier ;) })) (expression_statement "piVar10 = (int *)0x400;" (assignment_expression "piVar10 = (int *)0x400" identifier = (cast_expression "(int *)0x400" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }" if (parenthesized_expression "(((int)piVar1 - 0x42U & 0xff) < 0x36)" ( (binary_expression "((int)piVar1 - 0x42U & 0xff) < 0x36" (parenthesized_expression "((int)piVar1 - 0x42U & 0xff)" ( (binary_expression "(int)piVar1 - 0x42U & 0xff" (binary_expression "(int)piVar1 - 0x42U" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }" { comment comment (expression_statement "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();" (assignment_expression "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" * (cast_expression "(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" ( (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400" (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4" identifier + (binary_expression "((int)piVar1 - 0x42U & 0xff) * 4" (parenthesized_expression "((int)piVar1 - 0x42U & 0xff)" ( (binary_expression "(int)piVar1 - 0x42U & 0xff" (binary_expression "(int)piVar1 - 0x42U" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar11;" return identifier ;) })) (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "uVar11 = uVar11 | 2;" (assignment_expression "uVar11 = uVar11 | 2" identifier = (binary_expression "uVar11 | 2" identifier | number_literal)) ;) }))) (labeled_statement "LAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }" statement_identifier : (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }" if (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_0002929c)" ( (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_0002929c" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0002929c" * (cast_expression "(int *)PTR___stack_chk_guard_0002929c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar11;\n  }" { (return_statement "return uVar11;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0002928c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002928c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002928c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002928c" * (cast_expression "(code *)PTR___stack_chk_fail_0002928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar6 = piVar10[8];" (assignment_expression "iVar6 = piVar10[8]" identifier = (subscript_expression "piVar10[8]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *piVar10;" (assignment_expression "iVar7 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "iVar5 = piVar10[7];" (assignment_expression "iVar5 = piVar10[7]" identifier = (subscript_expression "piVar10[7]" identifier [ number_literal ])) ;) (if_statement "if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }" if (parenthesized_expression "((iVar6 < iVar7) && (iVar5 < iVar6))" ( (binary_expression "(iVar6 < iVar7) && (iVar5 < iVar6)" (parenthesized_expression "(iVar6 < iVar7)" ( (binary_expression "iVar6 < iVar7" identifier < identifier) )) && (parenthesized_expression "(iVar5 < iVar6)" ( (binary_expression "iVar5 < iVar6" identifier < identifier) ))) )) (compound_statement "{\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }" { (do_statement "do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));" do (compound_statement "{\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    }" { (expression_statement "iVar8 = iVar7 - iVar6;" (assignment_expression "iVar8 = iVar7 - iVar6" identifier = (binary_expression "iVar7 - iVar6" identifier - identifier)) ;) (expression_statement "iVar9 = iVar6 - iVar5;" (assignment_expression "iVar9 = iVar6 - iVar5" identifier = (binary_expression "iVar6 - iVar5" identifier - identifier)) ;) (if_statement "if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" if (parenthesized_expression "(iVar9 < iVar8)" ( (binary_expression "iVar9 < iVar8" identifier < identifier) )) (compound_statement "{\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }" { (if_statement "if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(local_24 + iVar5 * 4);" (assignment_expression "puVar3 = (undefined4 *)(local_24 + iVar5 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + iVar5 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar5 * 4)" ( (binary_expression "local_24 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);" (assignment_expression "puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + (iVar7 - iVar9) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (iVar7 - iVar9) * 4)" ( (binary_expression "local_24 + (iVar7 - iVar9) * 4" identifier + (binary_expression "(iVar7 - iVar9) * 4" (parenthesized_expression "(iVar7 - iVar9)" ( (binary_expression "iVar7 - iVar9" identifier - identifier) )) * number_literal)) )))) ;) (do_statement "do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));" do (compound_statement "{\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          }" { (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar2;" (assignment_expression "*puVar3 = *puVar2" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*puVar2 = uVar4;" (assignment_expression "*puVar2 = uVar4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 != (undefined4 *)(local_24 + iVar7 * 4))" ( (binary_expression "puVar2 != (undefined4 *)(local_24 + iVar7 * 4)" identifier != (cast_expression "(undefined4 *)(local_24 + iVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar7 * 4)" ( (binary_expression "local_24 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) )) ;) })) (expression_statement "iVar7 = iVar7 - iVar9;" (assignment_expression "iVar7 = iVar7 - iVar9" identifier = (binary_expression "iVar7 - iVar9" identifier - identifier)) ;) }) (else_clause "else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" else (compound_statement "{\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" { (if_statement "if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(local_24 + iVar5 * 4);" (assignment_expression "puVar3 = (undefined4 *)(local_24 + iVar5 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + iVar5 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar5 * 4)" ( (binary_expression "local_24 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar2 = (undefined4 *)(local_24 + iVar6 * 4);" (assignment_expression "puVar2 = (undefined4 *)(local_24 + iVar6 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + iVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar6 * 4)" ( (binary_expression "local_24 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));" do (compound_statement "{\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          }" { (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar2;" (assignment_expression "*puVar3 = *puVar2" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*puVar2 = uVar4;" (assignment_expression "*puVar2 = uVar4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4))" ( (binary_expression "puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4)" identifier != (cast_expression "(undefined4 *)(local_24 + (iVar8 + iVar5) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (iVar8 + iVar5) * 4)" ( (binary_expression "local_24 + (iVar8 + iVar5) * 4" identifier + (binary_expression "(iVar8 + iVar5) * 4" (parenthesized_expression "(iVar8 + iVar5)" ( (binary_expression "iVar8 + iVar5" identifier + identifier) )) * number_literal)) )))) )) ;) })) (expression_statement "iVar5 = iVar5 + iVar8;" (assignment_expression "iVar5 = iVar5 + iVar8" identifier = (binary_expression "iVar5 + iVar8" identifier + identifier)) ;) }))) }) while (parenthesized_expression "((iVar6 < iVar7) && (iVar5 < iVar6))" ( (binary_expression "(iVar6 < iVar7) && (iVar5 < iVar6)" (parenthesized_expression "(iVar6 < iVar7)" ( (binary_expression "iVar6 < iVar7" identifier < identifier) )) && (parenthesized_expression "(iVar5 < iVar6)" ( (binary_expression "iVar5 < iVar6" identifier < identifier) ))) )) ;) })) (expression_statement "uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);" (assignment_expression "uVar11 = piVar10[7] + (*piVar10 - piVar10[8])" identifier = (binary_expression "piVar10[7] + (*piVar10 - piVar10[8])" (subscript_expression "piVar10[7]" identifier [ number_literal ]) + (parenthesized_expression "(*piVar10 - piVar10[8])" ( (binary_expression "*piVar10 - piVar10[8]" (pointer_expression "*piVar10" * identifier) - (subscript_expression "piVar10[8]" identifier [ number_literal ])) )))) ;) (expression_statement "piVar10[7] = uVar11;" (assignment_expression "piVar10[7] = uVar11" (subscript_expression "piVar10[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar10[8] = *piVar10;" (assignment_expression "piVar10[8] = *piVar10" (subscript_expression "piVar10[8]" identifier [ number_literal ]) = (pointer_expression "*piVar10" * identifier)) ;) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit "strtol_error xstrtol(char *s,char **ptr,int strtol_base,long *val,char *valid_suffixes)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  int iVar8;\n  char **ppcVar9;\n  char **ppcVar10;\n  strtol_error sVar11;\n  char *pcVar12;\n  char *t_ptr;\n  long tmp;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < (uint)strtol_base) {\n    sVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return sVar11;\n  }\n  if (ptr == (char **)0x0) {\n    ptr = &t_ptr;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  ppcVar10 = ptr;\n  tmp = (*(code *)PTR_strtol_000291e4)(s,ptr,strtol_base);\n  pcVar12 = *ptr;\n  if (pcVar12 == s) {\n    sVar11 = LONGINT_INVALID;\n    if (valid_suffixes == (char *)0x0) goto LAB_00015a98;\n    ppcVar10 = (char **)(int)*s;\n    if (ppcVar10 == (char **)0x0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);\n    if (iVar7 == 0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    tmp = 1;\n    ppcVar9 = (char **)(int)*pcVar12;\n    sVar11 = LONGINT_OK;\n  }\n  else {\n    if (*piVar1 == 0) {\n      sVar11 = LONGINT_OK;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }\n    if (valid_suffixes == (char *)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n    ppcVar10 = (char **)(int)*pcVar12;\n    ppcVar9 = ppcVar10;\n    if (ppcVar10 == (char **)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n  }\n  ppcVar10 = ppcVar9;\n  iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);\n  if (iVar7 == 0) {\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }\n  else {\n    if (((int)ppcVar9 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return sVar11;\n    }\n    ppcVar10 = (char **)0x400;\n    if (((int)ppcVar9 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return sVar11;\n    }\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return sVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  pcVar5 = ppcVar10[8];\n  pcVar6 = *ppcVar10;\n  pcVar12 = ppcVar10[7];\n  if (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5)) {\n    do {\n      iVar7 = (int)pcVar6 - (int)pcVar5;\n      iVar8 = (int)pcVar5 - (int)pcVar12;\n      if (iVar8 < iVar7) {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }\n      else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }\n    } while (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5));\n  }\n  pcVar12 = ppcVar10[8];\n  pcVar5 = ppcVar10[7];\n  ppcVar10[7] = pcVar5 + ((int)*ppcVar10 - (int)pcVar12);\n  ppcVar10[8] = *ppcVar10;\n  return (strtol_error)(pcVar5 + ((int)*ppcVar10 - (int)pcVar12));\n}\n\n" (function_definition "strtol_error xstrtol(char *s,char **ptr,int strtol_base,long *val,char *valid_suffixes)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  int iVar8;\n  char **ppcVar9;\n  char **ppcVar10;\n  strtol_error sVar11;\n  char *pcVar12;\n  char *t_ptr;\n  long tmp;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < (uint)strtol_base) {\n    sVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return sVar11;\n  }\n  if (ptr == (char **)0x0) {\n    ptr = &t_ptr;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  ppcVar10 = ptr;\n  tmp = (*(code *)PTR_strtol_000291e4)(s,ptr,strtol_base);\n  pcVar12 = *ptr;\n  if (pcVar12 == s) {\n    sVar11 = LONGINT_INVALID;\n    if (valid_suffixes == (char *)0x0) goto LAB_00015a98;\n    ppcVar10 = (char **)(int)*s;\n    if (ppcVar10 == (char **)0x0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);\n    if (iVar7 == 0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    tmp = 1;\n    ppcVar9 = (char **)(int)*pcVar12;\n    sVar11 = LONGINT_OK;\n  }\n  else {\n    if (*piVar1 == 0) {\n      sVar11 = LONGINT_OK;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }\n    if (valid_suffixes == (char *)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n    ppcVar10 = (char **)(int)*pcVar12;\n    ppcVar9 = ppcVar10;\n    if (ppcVar10 == (char **)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n  }\n  ppcVar10 = ppcVar9;\n  iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);\n  if (iVar7 == 0) {\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }\n  else {\n    if (((int)ppcVar9 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return sVar11;\n    }\n    ppcVar10 = (char **)0x400;\n    if (((int)ppcVar9 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return sVar11;\n    }\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return sVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  pcVar5 = ppcVar10[8];\n  pcVar6 = *ppcVar10;\n  pcVar12 = ppcVar10[7];\n  if (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5)) {\n    do {\n      iVar7 = (int)pcVar6 - (int)pcVar5;\n      iVar8 = (int)pcVar5 - (int)pcVar12;\n      if (iVar8 < iVar7) {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }\n      else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }\n    } while (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5));\n  }\n  pcVar12 = ppcVar10[8];\n  pcVar5 = ppcVar10[7];\n  ppcVar10[7] = pcVar5 + ((int)*ppcVar10 - (int)pcVar12);\n  ppcVar10[8] = *ppcVar10;\n  return (strtol_error)(pcVar5 + ((int)*ppcVar10 - (int)pcVar12));\n}" type_identifier (function_declarator "xstrtol(char *s,char **ptr,int strtol_base,long *val,char *valid_suffixes)" identifier (parameter_list "(char *s,char **ptr,int strtol_base,long *val,char *valid_suffixes)" ( (parameter_declaration "char *s" primitive_type (pointer_declarator "*s" * identifier)) , (parameter_declaration "char **ptr" primitive_type (pointer_declarator "**ptr" * (pointer_declarator "*ptr" * identifier))) , (parameter_declaration "int strtol_base" primitive_type identifier) , (parameter_declaration "long *val" (sized_type_specifier "long" long) (pointer_declarator "*val" * identifier)) , (parameter_declaration "char *valid_suffixes" primitive_type (pointer_declarator "*valid_suffixes" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  int iVar8;\n  char **ppcVar9;\n  char **ppcVar10;\n  strtol_error sVar11;\n  char *pcVar12;\n  char *t_ptr;\n  long tmp;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < (uint)strtol_base) {\n    sVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return sVar11;\n  }\n  if (ptr == (char **)0x0) {\n    ptr = &t_ptr;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  ppcVar10 = ptr;\n  tmp = (*(code *)PTR_strtol_000291e4)(s,ptr,strtol_base);\n  pcVar12 = *ptr;\n  if (pcVar12 == s) {\n    sVar11 = LONGINT_INVALID;\n    if (valid_suffixes == (char *)0x0) goto LAB_00015a98;\n    ppcVar10 = (char **)(int)*s;\n    if (ppcVar10 == (char **)0x0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);\n    if (iVar7 == 0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    tmp = 1;\n    ppcVar9 = (char **)(int)*pcVar12;\n    sVar11 = LONGINT_OK;\n  }\n  else {\n    if (*piVar1 == 0) {\n      sVar11 = LONGINT_OK;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }\n    if (valid_suffixes == (char *)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n    ppcVar10 = (char **)(int)*pcVar12;\n    ppcVar9 = ppcVar10;\n    if (ppcVar10 == (char **)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n  }\n  ppcVar10 = ppcVar9;\n  iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);\n  if (iVar7 == 0) {\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }\n  else {\n    if (((int)ppcVar9 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return sVar11;\n    }\n    ppcVar10 = (char **)0x400;\n    if (((int)ppcVar9 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return sVar11;\n    }\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return sVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  pcVar5 = ppcVar10[8];\n  pcVar6 = *ppcVar10;\n  pcVar12 = ppcVar10[7];\n  if (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5)) {\n    do {\n      iVar7 = (int)pcVar6 - (int)pcVar5;\n      iVar8 = (int)pcVar5 - (int)pcVar12;\n      if (iVar8 < iVar7) {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }\n      else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }\n    } while (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5));\n  }\n  pcVar12 = ppcVar10[8];\n  pcVar5 = ppcVar10[7];\n  ppcVar10[7] = pcVar5 + ((int)*ppcVar10 - (int)pcVar12);\n  ppcVar10[8] = *ppcVar10;\n  return (strtol_error)(pcVar5 + ((int)*ppcVar10 - (int)pcVar12));\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char **ppcVar9;" primitive_type (pointer_declarator "**ppcVar9" * (pointer_declarator "*ppcVar9" * identifier)) ;) (declaration "char **ppcVar10;" primitive_type (pointer_declarator "**ppcVar10" * (pointer_declarator "*ppcVar10" * identifier)) ;) (declaration "strtol_error sVar11;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *t_ptr;" primitive_type (pointer_declarator "*t_ptr" * identifier) ;) (declaration "long tmp;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0002929c;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0002929c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0002929c" * (cast_expression "(int *)PTR___stack_chk_guard_0002929c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (0x24 < (uint)strtol_base) {\n    sVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return sVar11;\n  }" if (parenthesized_expression "(0x24 < (uint)strtol_base)" ( (binary_expression "0x24 < (uint)strtol_base" number_literal < (cast_expression "(uint)strtol_base" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n    sVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return sVar11;\n  }" { (expression_statement "sVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);" (assignment_expression "sVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" identifier = (call_expression "(*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" (parenthesized_expression "(*(code *)PTR___assert_fail_000291e0)" ( (pointer_expression "*(code *)PTR___assert_fail_000291e0" * (cast_expression "(code *)PTR___assert_fail_000291e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" ( (binary_expression "PTR_DAT_0002910c + -0x74ec" identifier + number_literal) , (binary_expression "PTR_DAT_0002910c + -0x74fc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0002910c + -0x7328" identifier + number_literal) )))) ;) (return_statement "return sVar11;" return identifier ;) })) (if_statement "if (ptr == (char **)0x0) {\n    ptr = &t_ptr;\n  }" if (parenthesized_expression "(ptr == (char **)0x0)" ( (binary_expression "ptr == (char **)0x0" identifier == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n    ptr = &t_ptr;\n  }" { (expression_statement "ptr = &t_ptr;" (assignment_expression "ptr = &t_ptr" identifier = (pointer_expression "&t_ptr" & identifier)) ;) })) (expression_statement "piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();" (assignment_expression "piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_0002922c)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_0002922c)()" (parenthesized_expression "(*(code *)PTR___errno_location_0002922c)" ( (pointer_expression "*(code *)PTR___errno_location_0002922c" * (cast_expression "(code *)PTR___errno_location_0002922c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "ppcVar10 = ptr;" (assignment_expression "ppcVar10 = ptr" identifier = identifier) ;) (expression_statement "tmp = (*(code *)PTR_strtol_000291e4)(s,ptr,strtol_base);" (assignment_expression "tmp = (*(code *)PTR_strtol_000291e4)(s,ptr,strtol_base)" identifier = (call_expression "(*(code *)PTR_strtol_000291e4)(s,ptr,strtol_base)" (parenthesized_expression "(*(code *)PTR_strtol_000291e4)" ( (pointer_expression "*(code *)PTR_strtol_000291e4" * (cast_expression "(code *)PTR_strtol_000291e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(s,ptr,strtol_base)" ( identifier , identifier , identifier )))) ;) (expression_statement "pcVar12 = *ptr;" (assignment_expression "pcVar12 = *ptr" identifier = (pointer_expression "*ptr" * identifier)) ;) (if_statement "if (pcVar12 == s) {\n    sVar11 = LONGINT_INVALID;\n    if (valid_suffixes == (char *)0x0) goto LAB_00015a98;\n    ppcVar10 = (char **)(int)*s;\n    if (ppcVar10 == (char **)0x0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);\n    if (iVar7 == 0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    tmp = 1;\n    ppcVar9 = (char **)(int)*pcVar12;\n    sVar11 = LONGINT_OK;\n  }\n  else {\n    if (*piVar1 == 0) {\n      sVar11 = LONGINT_OK;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }\n    if (valid_suffixes == (char *)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n    ppcVar10 = (char **)(int)*pcVar12;\n    ppcVar9 = ppcVar10;\n    if (ppcVar10 == (char **)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n  }" if (parenthesized_expression "(pcVar12 == s)" ( (binary_expression "pcVar12 == s" identifier == identifier) )) (compound_statement "{\n    sVar11 = LONGINT_INVALID;\n    if (valid_suffixes == (char *)0x0) goto LAB_00015a98;\n    ppcVar10 = (char **)(int)*s;\n    if (ppcVar10 == (char **)0x0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);\n    if (iVar7 == 0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }\n    tmp = 1;\n    ppcVar9 = (char **)(int)*pcVar12;\n    sVar11 = LONGINT_OK;\n  }" { (expression_statement "sVar11 = LONGINT_INVALID;" (assignment_expression "sVar11 = LONGINT_INVALID" identifier = identifier) ;) (if_statement "if (valid_suffixes == (char *)0x0) goto LAB_00015a98;" if (parenthesized_expression "(valid_suffixes == (char *)0x0)" ( (binary_expression "valid_suffixes == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;)) (expression_statement "ppcVar10 = (char **)(int)*s;" (assignment_expression "ppcVar10 = (char **)(int)*s" identifier = (cast_expression "(char **)(int)*s" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (cast_expression "(int)*s" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*s" * identifier)))) ;) (if_statement "if (ppcVar10 == (char **)0x0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(ppcVar10 == (char **)0x0)" ( (binary_expression "ppcVar10 == (char **)0x0" identifier == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }" { (expression_statement "sVar11 = LONGINT_INVALID;" (assignment_expression "sVar11 = LONGINT_INVALID" identifier = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);" (assignment_expression "iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes)" identifier = (call_expression "(*(code *)PTR_strchr_00029244)(valid_suffixes)" (parenthesized_expression "(*(code *)PTR_strchr_00029244)" ( (pointer_expression "*(code *)PTR_strchr_00029244" * (cast_expression "(code *)PTR_strchr_00029244" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(valid_suffixes)" ( identifier )))) ;) (if_statement "if (iVar7 == 0) {\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      sVar11 = LONGINT_INVALID;\n      goto LAB_00015a98;\n    }" { (expression_statement "sVar11 = LONGINT_INVALID;" (assignment_expression "sVar11 = LONGINT_INVALID" identifier = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "tmp = 1;" (assignment_expression "tmp = 1" identifier = number_literal) ;) (expression_statement "ppcVar9 = (char **)(int)*pcVar12;" (assignment_expression "ppcVar9 = (char **)(int)*pcVar12" identifier = (cast_expression "(char **)(int)*pcVar12" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (cast_expression "(int)*pcVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar12" * identifier)))) ;) (expression_statement "sVar11 = LONGINT_OK;" (assignment_expression "sVar11 = LONGINT_OK" identifier = identifier) ;) }) (else_clause "else {\n    if (*piVar1 == 0) {\n      sVar11 = LONGINT_OK;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }\n    if (valid_suffixes == (char *)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n    ppcVar10 = (char **)(int)*pcVar12;\n    ppcVar9 = ppcVar10;\n    if (ppcVar10 == (char **)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n  }" else (compound_statement "{\n    if (*piVar1 == 0) {\n      sVar11 = LONGINT_OK;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }\n    if (valid_suffixes == (char *)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n    ppcVar10 = (char **)(int)*pcVar12;\n    ppcVar9 = ppcVar10;\n    if (ppcVar10 == (char **)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }\n  }" { (if_statement "if (*piVar1 == 0) {\n      sVar11 = LONGINT_OK;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n      sVar11 = LONGINT_OK;\n    }" { (expression_statement "sVar11 = LONGINT_OK;" (assignment_expression "sVar11 = LONGINT_OK" identifier = identifier) ;) }) (else_clause "else {\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }" else (compound_statement "{\n      if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }\n      sVar11 = LONGINT_OVERFLOW;\n    }" { (if_statement "if (*piVar1 != 0x22) {\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }" if (parenthesized_expression "(*piVar1 != 0x22)" ( (binary_expression "*piVar1 != 0x22" (pointer_expression "*piVar1" * identifier) != number_literal) )) (compound_statement "{\n        sVar11 = LONGINT_INVALID;\n        goto LAB_00015a98;\n      }" { (expression_statement "sVar11 = LONGINT_INVALID;" (assignment_expression "sVar11 = LONGINT_INVALID" identifier = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "sVar11 = LONGINT_OVERFLOW;" (assignment_expression "sVar11 = LONGINT_OVERFLOW" identifier = identifier) ;) }))) (if_statement "if (valid_suffixes == (char *)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(valid_suffixes == (char *)0x0)" ( (binary_expression "valid_suffixes == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *val = tmp;\n      goto LAB_00015a98;\n    }" { (expression_statement "*val = tmp;" (assignment_expression "*val = tmp" (pointer_expression "*val" * identifier) = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "ppcVar10 = (char **)(int)*pcVar12;" (assignment_expression "ppcVar10 = (char **)(int)*pcVar12" identifier = (cast_expression "(char **)(int)*pcVar12" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (cast_expression "(int)*pcVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar12" * identifier)))) ;) (expression_statement "ppcVar9 = ppcVar10;" (assignment_expression "ppcVar9 = ppcVar10" identifier = identifier) ;) (if_statement "if (ppcVar10 == (char **)0x0) {\n      *val = tmp;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(ppcVar10 == (char **)0x0)" ( (binary_expression "ppcVar10 == (char **)0x0" identifier == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      *val = tmp;\n      goto LAB_00015a98;\n    }" { (expression_statement "*val = tmp;" (assignment_expression "*val = tmp" (pointer_expression "*val" * identifier) = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) }))) (expression_statement "ppcVar10 = ppcVar9;" (assignment_expression "ppcVar10 = ppcVar9" identifier = identifier) ;) (expression_statement "iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes);" (assignment_expression "iVar7 = (*(code *)PTR_strchr_00029244)(valid_suffixes)" identifier = (call_expression "(*(code *)PTR_strchr_00029244)(valid_suffixes)" (parenthesized_expression "(*(code *)PTR_strchr_00029244)" ( (pointer_expression "*(code *)PTR_strchr_00029244" * (cast_expression "(code *)PTR_strchr_00029244" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(valid_suffixes)" ( identifier )))) ;) (if_statement "if (iVar7 == 0) {\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }\n  else {\n    if (((int)ppcVar9 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return sVar11;\n    }\n    ppcVar10 = (char **)0x400;\n    if (((int)ppcVar9 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return sVar11;\n    }\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }" { (expression_statement "*val = tmp;" (assignment_expression "*val = tmp" (pointer_expression "*val" * identifier) = identifier) ;) (expression_statement "sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;" (assignment_expression "sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR" identifier = (binary_expression "sVar11 | LONGINT_INVALID_SUFFIX_CHAR" identifier | identifier)) ;) }) (else_clause "else {\n    if (((int)ppcVar9 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return sVar11;\n    }\n    ppcVar10 = (char **)0x400;\n    if (((int)ppcVar9 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return sVar11;\n    }\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }" else (compound_statement "{\n    if (((int)ppcVar9 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return sVar11;\n    }\n    ppcVar10 = (char **)0x400;\n    if (((int)ppcVar9 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return sVar11;\n    }\n    *val = tmp;\n    sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;\n  }" { (if_statement "if (((int)ppcVar9 - 0x45U & 0xff) < 0x30) {\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return sVar11;\n    }" if (parenthesized_expression "(((int)ppcVar9 - 0x45U & 0xff) < 0x30)" ( (binary_expression "((int)ppcVar9 - 0x45U & 0xff) < 0x30" (parenthesized_expression "((int)ppcVar9 - 0x45U & 0xff)" ( (binary_expression "(int)ppcVar9 - 0x45U & 0xff" (binary_expression "(int)ppcVar9 - 0x45U" (cast_expression "(int)ppcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00015a64 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return sVar11;\n    }" { comment comment (expression_statement "sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))();" (assignment_expression "sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0))" * (cast_expression "(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0))" ( (binary_expression "&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)" * (cast_expression "(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0)" ( (binary_expression "PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4 + -0x74c0" (binary_expression "PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x45U & 0xff) * 4" identifier + (binary_expression "((int)ppcVar9 - 0x45U & 0xff) * 4" (parenthesized_expression "((int)ppcVar9 - 0x45U & 0xff)" ( (binary_expression "(int)ppcVar9 - 0x45U & 0xff" (binary_expression "(int)ppcVar9 - 0x45U" (cast_expression "(int)ppcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return sVar11;" return identifier ;) })) (expression_statement "ppcVar10 = (char **)0x400;" (assignment_expression "ppcVar10 = (char **)0x400" identifier = (cast_expression "(char **)0x400" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (((int)ppcVar9 - 0x42U & 0xff) < 0x36) {\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return sVar11;\n    }" if (parenthesized_expression "(((int)ppcVar9 - 0x42U & 0xff) < 0x36)" ( (binary_expression "((int)ppcVar9 - 0x42U & 0xff) < 0x36" (parenthesized_expression "((int)ppcVar9 - 0x42U & 0xff)" ( (binary_expression "(int)ppcVar9 - 0x42U & 0xff" (binary_expression "(int)ppcVar9 - 0x42U" (cast_expression "(int)ppcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00015b68 */\n                    /* WARNING: Treating indirect jump as call */\n      sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return sVar11;\n    }" { comment comment (expression_statement "sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))();" (assignment_expression "sVar11 = (*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400))" * (cast_expression "(code *)(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400))" ( (binary_expression "&_gp + *(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)" * (cast_expression "(int *)(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400)" ( (binary_expression "PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4 + -0x7400" (binary_expression "PTR_DAT_0002910c +\n                                         ((int)ppcVar9 - 0x42U & 0xff) * 4" identifier + (binary_expression "((int)ppcVar9 - 0x42U & 0xff) * 4" (parenthesized_expression "((int)ppcVar9 - 0x42U & 0xff)" ( (binary_expression "(int)ppcVar9 - 0x42U & 0xff" (binary_expression "(int)ppcVar9 - 0x42U" (cast_expression "(int)ppcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return sVar11;" return identifier ;) })) (expression_statement "*val = tmp;" (assignment_expression "*val = tmp" (pointer_expression "*val" * identifier) = identifier) ;) (expression_statement "sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR;" (assignment_expression "sVar11 = sVar11 | LONGINT_INVALID_SUFFIX_CHAR" identifier = (binary_expression "sVar11 | LONGINT_INVALID_SUFFIX_CHAR" identifier | identifier)) ;) }))) (labeled_statement "LAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return sVar11;\n  }" statement_identifier : (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return sVar11;\n  }" if (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_0002929c)" ( (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_0002929c" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0002929c" * (cast_expression "(int *)PTR___stack_chk_guard_0002929c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return sVar11;\n  }" { (return_statement "return sVar11;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0002928c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002928c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002928c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002928c" * (cast_expression "(code *)PTR___stack_chk_fail_0002928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar5 = ppcVar10[8];" (assignment_expression "pcVar5 = ppcVar10[8]" identifier = (subscript_expression "ppcVar10[8]" identifier [ number_literal ])) ;) (expression_statement "pcVar6 = *ppcVar10;" (assignment_expression "pcVar6 = *ppcVar10" identifier = (pointer_expression "*ppcVar10" * identifier)) ;) (expression_statement "pcVar12 = ppcVar10[7];" (assignment_expression "pcVar12 = ppcVar10[7]" identifier = (subscript_expression "ppcVar10[7]" identifier [ number_literal ])) ;) (if_statement "if (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5)) {\n    do {\n      iVar7 = (int)pcVar6 - (int)pcVar5;\n      iVar8 = (int)pcVar5 - (int)pcVar12;\n      if (iVar8 < iVar7) {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }\n      else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }\n    } while (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5));\n  }" if (parenthesized_expression "(((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5))" ( (binary_expression "((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5)" (parenthesized_expression "((int)pcVar5 < (int)pcVar6)" ( (binary_expression "(int)pcVar5 < (int)pcVar6" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)pcVar12 < (int)pcVar5)" ( (binary_expression "(int)pcVar12 < (int)pcVar5" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    do {\n      iVar7 = (int)pcVar6 - (int)pcVar5;\n      iVar8 = (int)pcVar5 - (int)pcVar12;\n      if (iVar8 < iVar7) {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }\n      else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }\n    } while (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5));\n  }" { (do_statement "do {\n      iVar7 = (int)pcVar6 - (int)pcVar5;\n      iVar8 = (int)pcVar5 - (int)pcVar12;\n      if (iVar8 < iVar7) {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }\n      else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }\n    } while (((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5));" do (compound_statement "{\n      iVar7 = (int)pcVar6 - (int)pcVar5;\n      iVar8 = (int)pcVar5 - (int)pcVar12;\n      if (iVar8 < iVar7) {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }\n      else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }\n    }" { (expression_statement "iVar7 = (int)pcVar6 - (int)pcVar5;" (assignment_expression "iVar7 = (int)pcVar6 - (int)pcVar5" identifier = (binary_expression "(int)pcVar6 - (int)pcVar5" (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar8 = (int)pcVar5 - (int)pcVar12;" (assignment_expression "iVar8 = (int)pcVar5 - (int)pcVar12" identifier = (binary_expression "(int)pcVar5 - (int)pcVar12" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar8 < iVar7) {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }\n      else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }" if (parenthesized_expression "(iVar8 < iVar7)" ( (binary_expression "iVar8 < iVar7" identifier < identifier) )) (compound_statement "{\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }\n        pcVar6 = pcVar6 + -iVar8;\n      }" { (if_statement "if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);" (assignment_expression "puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + (int)pcVar12 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (int)pcVar12 * 4)" ( (binary_expression "local_24 + (int)pcVar12 * 4" identifier + (binary_expression "(int)pcVar12 * 4" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4);" (assignment_expression "puVar2 = (undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + ((int)pcVar6 - iVar8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + ((int)pcVar6 - iVar8) * 4)" ( (binary_expression "local_24 + ((int)pcVar6 - iVar8) * 4" identifier + (binary_expression "((int)pcVar6 - iVar8) * 4" (parenthesized_expression "((int)pcVar6 - iVar8)" ( (binary_expression "(int)pcVar6 - iVar8" (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )) * number_literal)) )))) ;) (do_statement "do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4));" do (compound_statement "{\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          }" { (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar2;" (assignment_expression "*puVar3 = *puVar2" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*puVar2 = uVar4;" (assignment_expression "*puVar2 = uVar4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4))" ( (binary_expression "puVar2 != (undefined4 *)(local_24 + (int)pcVar6 * 4)" identifier != (cast_expression "(undefined4 *)(local_24 + (int)pcVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (int)pcVar6 * 4)" ( (binary_expression "local_24 + (int)pcVar6 * 4" identifier + (binary_expression "(int)pcVar6 * 4" (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) )) ;) })) (expression_statement "pcVar6 = pcVar6 + -iVar8;" (assignment_expression "pcVar6 = pcVar6 + -iVar8" identifier = (binary_expression "pcVar6 + -iVar8" identifier + (unary_expression "-iVar8" - identifier))) ;) }) (else_clause "else {\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }" else (compound_statement "{\n        if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }\n        pcVar12 = pcVar12 + iVar7;\n      }" { (if_statement "if (0 < iVar7) {\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);\n          puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4);" (assignment_expression "puVar3 = (undefined4 *)(local_24 + (int)pcVar12 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + (int)pcVar12 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (int)pcVar12 * 4)" ( (binary_expression "local_24 + (int)pcVar12 * 4" identifier + (binary_expression "(int)pcVar12 * 4" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4);" (assignment_expression "puVar2 = (undefined4 *)(local_24 + (int)pcVar5 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + (int)pcVar5 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (int)pcVar5 * 4)" ( (binary_expression "local_24 + (int)pcVar5 * 4" identifier + (binary_expression "(int)pcVar5 * 4" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (do_statement "do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4));" do (compound_statement "{\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          }" { (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar2;" (assignment_expression "*puVar3 = *puVar2" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*puVar2 = uVar4;" (assignment_expression "*puVar2 = uVar4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4))" ( (binary_expression "puVar3 != (undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4)" identifier != (cast_expression "(undefined4 *)(local_24 + (int)(pcVar12 + iVar7) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (int)(pcVar12 + iVar7) * 4)" ( (binary_expression "local_24 + (int)(pcVar12 + iVar7) * 4" identifier + (binary_expression "(int)(pcVar12 + iVar7) * 4" (cast_expression "(int)(pcVar12 + iVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar12 + iVar7)" ( (binary_expression "pcVar12 + iVar7" identifier + identifier) ))) * number_literal)) )))) )) ;) })) (expression_statement "pcVar12 = pcVar12 + iVar7;" (assignment_expression "pcVar12 = pcVar12 + iVar7" identifier = (binary_expression "pcVar12 + iVar7" identifier + identifier)) ;) }))) }) while (parenthesized_expression "(((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5))" ( (binary_expression "((int)pcVar5 < (int)pcVar6) && ((int)pcVar12 < (int)pcVar5)" (parenthesized_expression "((int)pcVar5 < (int)pcVar6)" ( (binary_expression "(int)pcVar5 < (int)pcVar6" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)pcVar12 < (int)pcVar5)" ( (binary_expression "(int)pcVar12 < (int)pcVar5" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) ;) })) (expression_statement "pcVar12 = ppcVar10[8];" (assignment_expression "pcVar12 = ppcVar10[8]" identifier = (subscript_expression "ppcVar10[8]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = ppcVar10[7];" (assignment_expression "pcVar5 = ppcVar10[7]" identifier = (subscript_expression "ppcVar10[7]" identifier [ number_literal ])) ;) (expression_statement "ppcVar10[7] = pcVar5 + ((int)*ppcVar10 - (int)pcVar12);" (assignment_expression "ppcVar10[7] = pcVar5 + ((int)*ppcVar10 - (int)pcVar12)" (subscript_expression "ppcVar10[7]" identifier [ number_literal ]) = (binary_expression "pcVar5 + ((int)*ppcVar10 - (int)pcVar12)" identifier + (parenthesized_expression "((int)*ppcVar10 - (int)pcVar12)" ( (binary_expression "(int)*ppcVar10 - (int)pcVar12" (cast_expression "(int)*ppcVar10" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppcVar10" * identifier)) - (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ppcVar10[8] = *ppcVar10;" (assignment_expression "ppcVar10[8] = *ppcVar10" (subscript_expression "ppcVar10[8]" identifier [ number_literal ]) = (pointer_expression "*ppcVar10" * identifier)) ;) (return_statement "return (strtol_error)(pcVar5 + ((int)*ppcVar10 - (int)pcVar12));" return (call_expression "(strtol_error)(pcVar5 + ((int)*ppcVar10 - (int)pcVar12))" (parenthesized_expression "(strtol_error)" ( identifier )) (argument_list "(pcVar5 + ((int)*ppcVar10 - (int)pcVar12))" ( (binary_expression "pcVar5 + ((int)*ppcVar10 - (int)pcVar12)" identifier + (parenthesized_expression "((int)*ppcVar10 - (int)pcVar12)" ( (binary_expression "(int)*ppcVar10 - (int)pcVar12" (cast_expression "(int)*ppcVar10" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppcVar10" * identifier)) - (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) ;) })))
(translation_unit "uint xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  uint uVar11;\n  char *pcVar12;\n  int iStack_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }\n  if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  piVar10 = param_2;\n  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);\n  pcVar12 = (char *)*param_2;\n  if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }\n  piVar10 = piVar1;\n  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n  if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  iVar6 = piVar10[8];\n  iVar7 = *piVar10;\n  iVar5 = piVar10[7];\n  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }\n  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);\n  piVar10[7] = uVar11;\n  piVar10[8] = *piVar10;\n  return uVar11;\n}\n\n" (function_definition "uint xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  uint uVar11;\n  char *pcVar12;\n  int iStack_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }\n  if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  piVar10 = param_2;\n  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);\n  pcVar12 = (char *)*param_2;\n  if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }\n  piVar10 = piVar1;\n  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n  if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  iVar6 = piVar10[8];\n  iVar7 = *piVar10;\n  iVar5 = piVar10[7];\n  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }\n  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);\n  piVar10[7] = uVar11;\n  piVar10[8] = *piVar10;\n  return uVar11;\n}" type_identifier (function_declarator "xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)" identifier (parameter_list "(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  uint uVar11;\n  char *pcVar12;\n  int iStack_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }\n  if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  piVar10 = param_2;\n  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);\n  pcVar12 = (char *)*param_2;\n  if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }\n  piVar10 = piVar1;\n  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n  if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  iVar6 = piVar10[8];\n  iVar7 = *piVar10;\n  iVar5 = piVar10[7];\n  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }\n  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);\n  piVar10[7] = uVar11;\n  piVar10[8] = *piVar10;\n  return uVar11;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int iStack_2c;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0002929c;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0002929c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0002929c" * (cast_expression "(int *)PTR___stack_chk_guard_0002929c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }" if (parenthesized_expression "(0x24 < param_3)" ( (binary_expression "0x24 < param_3" number_literal < identifier) )) (compound_statement "{\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }" { (expression_statement "uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);" (assignment_expression "uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" identifier = (call_expression "(*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" (parenthesized_expression "(*(code *)PTR___assert_fail_000291e0)" ( (pointer_expression "*(code *)PTR___assert_fail_000291e0" * (cast_expression "(code *)PTR___assert_fail_000291e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" ( (binary_expression "PTR_DAT_0002910c + -0x74ec" identifier + number_literal) , (binary_expression "PTR_DAT_0002910c + -0x74fc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0002910c + -0x7328" identifier + number_literal) )))) ;) (return_statement "return uVar11;" return identifier ;) })) (if_statement "if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_2 = &iStack_2c;\n  }" { (expression_statement "param_2 = &iStack_2c;" (assignment_expression "param_2 = &iStack_2c" identifier = (pointer_expression "&iStack_2c" & identifier)) ;) })) (expression_statement "piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();" (assignment_expression "piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_0002922c)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_0002922c)()" (parenthesized_expression "(*(code *)PTR___errno_location_0002922c)" ( (pointer_expression "*(code *)PTR___errno_location_0002922c" * (cast_expression "(code *)PTR___errno_location_0002922c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "piVar10 = param_2;" (assignment_expression "piVar10 = param_2" identifier = identifier) ;) (expression_statement "local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);" (assignment_expression "local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3)" identifier = (call_expression "(*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3)" (parenthesized_expression "(*(code *)PTR_strtol_000291e4)" ( (pointer_expression "*(code *)PTR_strtol_000291e4" * (cast_expression "(code *)PTR_strtol_000291e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" if (parenthesized_expression "(pcVar12 == param_1)" ( (binary_expression "pcVar12 == param_1" identifier == identifier) )) (compound_statement "{\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }" { (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" identifier = number_literal) ;) (if_statement "if (param_5 == 0) goto LAB_00015a98;" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;)) (expression_statement "piVar10 = (int *)(int)*param_1;" (assignment_expression "piVar10 = (int *)(int)*param_1" identifier = (cast_expression "(int *)(int)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)))) ;) (if_statement "if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" { (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "iVar5 = (*(code *)PTR_strchr_00029244)(param_5);" (assignment_expression "iVar5 = (*(code *)PTR_strchr_00029244)(param_5)" identifier = (call_expression "(*(code *)PTR_strchr_00029244)(param_5)" (parenthesized_expression "(*(code *)PTR_strchr_00029244)" ( (pointer_expression "*(code *)PTR_strchr_00029244" * (cast_expression "(code *)PTR_strchr_00029244" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_5)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" { (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "piVar1 = (int *)(int)*pcVar12;" (assignment_expression "piVar1 = (int *)(int)*pcVar12" identifier = (cast_expression "(int *)(int)*pcVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*pcVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar12" * identifier)))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" else (compound_statement "{\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" { (if_statement "if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" else (compound_statement "{\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" { (if_statement "if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }" if (parenthesized_expression "(*piVar1 != 0x22)" ( (binary_expression "*piVar1 != 0x22" (pointer_expression "*piVar1" * identifier) != number_literal) )) (compound_statement "{\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }" { (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) }))) (if_statement "if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" { (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" * identifier) = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) (expression_statement "piVar10 = (int *)(int)*pcVar12;" (assignment_expression "piVar10 = (int *)(int)*pcVar12" identifier = (cast_expression "(int *)(int)*pcVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*pcVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar12" * identifier)))) ;) (expression_statement "piVar1 = piVar10;" (assignment_expression "piVar1 = piVar10" identifier = identifier) ;) (if_statement "if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" { (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" * identifier) = identifier) ;) (goto_statement "goto LAB_00015a98;" goto statement_identifier ;) })) }))) (expression_statement "piVar10 = piVar1;" (assignment_expression "piVar10 = piVar1" identifier = identifier) ;) (expression_statement "iVar5 = (*(code *)PTR_strchr_00029244)(param_5);" (assignment_expression "iVar5 = (*(code *)PTR_strchr_00029244)(param_5)" identifier = (call_expression "(*(code *)PTR_strchr_00029244)(param_5)" (parenthesized_expression "(*(code *)PTR_strchr_00029244)" ( (pointer_expression "*(code *)PTR_strchr_00029244" * (cast_expression "(code *)PTR_strchr_00029244" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_5)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" { (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "uVar11 = uVar11 | 2;" (assignment_expression "uVar11 = uVar11 | 2" identifier = (binary_expression "uVar11 | 2" identifier | number_literal)) ;) }) (else_clause "else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" else (compound_statement "{\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" { (if_statement "if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }" if (parenthesized_expression "(((int)piVar1 - 0x45U & 0xff) < 0x30)" ( (binary_expression "((int)piVar1 - 0x45U & 0xff) < 0x30" (parenthesized_expression "((int)piVar1 - 0x45U & 0xff)" ( (binary_expression "(int)piVar1 - 0x45U & 0xff" (binary_expression "(int)piVar1 - 0x45U" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }" { (expression_statement "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();" (assignment_expression "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" * (cast_expression "(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" ( (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0" (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4" identifier + (binary_expression "((int)piVar1 - 0x45U & 0xff) * 4" (parenthesized_expression "((int)piVar1 - 0x45U & 0xff)" ( (binary_expression "(int)piVar1 - 0x45U & 0xff" (binary_expression "(int)piVar1 - 0x45U" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar11;" return identifier ;) })) (expression_statement "piVar10 = (int *)0x400;" (assignment_expression "piVar10 = (int *)0x400" identifier = (cast_expression "(int *)0x400" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }" if (parenthesized_expression "(((int)piVar1 - 0x42U & 0xff) < 0x36)" ( (binary_expression "((int)piVar1 - 0x42U & 0xff) < 0x36" (parenthesized_expression "((int)piVar1 - 0x42U & 0xff)" ( (binary_expression "(int)piVar1 - 0x42U & 0xff" (binary_expression "(int)piVar1 - 0x42U" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }" { (expression_statement "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();" (assignment_expression "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" * (cast_expression "(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" ( (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400" (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4" identifier + (binary_expression "((int)piVar1 - 0x42U & 0xff) * 4" (parenthesized_expression "((int)piVar1 - 0x42U & 0xff)" ( (binary_expression "(int)piVar1 - 0x42U & 0xff" (binary_expression "(int)piVar1 - 0x42U" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar11;" return identifier ;) })) (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "uVar11 = uVar11 | 2;" (assignment_expression "uVar11 = uVar11 | 2" identifier = (binary_expression "uVar11 | 2" identifier | number_literal)) ;) }))) (labeled_statement "LAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }" statement_identifier : (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }" if (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_0002929c)" ( (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_0002929c" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0002929c" * (cast_expression "(int *)PTR___stack_chk_guard_0002929c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar11;\n  }" { (return_statement "return uVar11;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0002928c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002928c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002928c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002928c" * (cast_expression "(code *)PTR___stack_chk_fail_0002928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar6 = piVar10[8];" (assignment_expression "iVar6 = piVar10[8]" identifier = (subscript_expression "piVar10[8]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *piVar10;" (assignment_expression "iVar7 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "iVar5 = piVar10[7];" (assignment_expression "iVar5 = piVar10[7]" identifier = (subscript_expression "piVar10[7]" identifier [ number_literal ])) ;) (if_statement "if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }" if (parenthesized_expression "((iVar6 < iVar7) && (iVar5 < iVar6))" ( (binary_expression "(iVar6 < iVar7) && (iVar5 < iVar6)" (parenthesized_expression "(iVar6 < iVar7)" ( (binary_expression "iVar6 < iVar7" identifier < identifier) )) && (parenthesized_expression "(iVar5 < iVar6)" ( (binary_expression "iVar5 < iVar6" identifier < identifier) ))) )) (compound_statement "{\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }" { (do_statement "do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));" do (compound_statement "{\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    }" { (expression_statement "iVar8 = iVar7 - iVar6;" (assignment_expression "iVar8 = iVar7 - iVar6" identifier = (binary_expression "iVar7 - iVar6" identifier - identifier)) ;) (expression_statement "iVar9 = iVar6 - iVar5;" (assignment_expression "iVar9 = iVar6 - iVar5" identifier = (binary_expression "iVar6 - iVar5" identifier - identifier)) ;) (if_statement "if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" if (parenthesized_expression "(iVar9 < iVar8)" ( (binary_expression "iVar9 < iVar8" identifier < identifier) )) (compound_statement "{\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }" { (if_statement "if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(local_24 + iVar5 * 4);" (assignment_expression "puVar3 = (undefined4 *)(local_24 + iVar5 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + iVar5 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar5 * 4)" ( (binary_expression "local_24 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);" (assignment_expression "puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + (iVar7 - iVar9) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (iVar7 - iVar9) * 4)" ( (binary_expression "local_24 + (iVar7 - iVar9) * 4" identifier + (binary_expression "(iVar7 - iVar9) * 4" (parenthesized_expression "(iVar7 - iVar9)" ( (binary_expression "iVar7 - iVar9" identifier - identifier) )) * number_literal)) )))) ;) (do_statement "do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));" do (compound_statement "{\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          }" { (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar2;" (assignment_expression "*puVar3 = *puVar2" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*puVar2 = uVar4;" (assignment_expression "*puVar2 = uVar4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 != (undefined4 *)(local_24 + iVar7 * 4))" ( (binary_expression "puVar2 != (undefined4 *)(local_24 + iVar7 * 4)" identifier != (cast_expression "(undefined4 *)(local_24 + iVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar7 * 4)" ( (binary_expression "local_24 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) )) ;) })) (expression_statement "iVar7 = iVar7 - iVar9;" (assignment_expression "iVar7 = iVar7 - iVar9" identifier = (binary_expression "iVar7 - iVar9" identifier - identifier)) ;) }) (else_clause "else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" else (compound_statement "{\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" { (if_statement "if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(local_24 + iVar5 * 4);" (assignment_expression "puVar3 = (undefined4 *)(local_24 + iVar5 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + iVar5 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar5 * 4)" ( (binary_expression "local_24 + iVar5 * 4" identifier + (binary_expression "iVar5 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar2 = (undefined4 *)(local_24 + iVar6 * 4);" (assignment_expression "puVar2 = (undefined4 *)(local_24 + iVar6 * 4)" identifier = (cast_expression "(undefined4 *)(local_24 + iVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar6 * 4)" ( (binary_expression "local_24 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));" do (compound_statement "{\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          }" { (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar2;" (assignment_expression "*puVar3 = *puVar2" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*puVar2 = uVar4;" (assignment_expression "*puVar2 = uVar4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4))" ( (binary_expression "puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4)" identifier != (cast_expression "(undefined4 *)(local_24 + (iVar8 + iVar5) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + (iVar8 + iVar5) * 4)" ( (binary_expression "local_24 + (iVar8 + iVar5) * 4" identifier + (binary_expression "(iVar8 + iVar5) * 4" (parenthesized_expression "(iVar8 + iVar5)" ( (binary_expression "iVar8 + iVar5" identifier + identifier) )) * number_literal)) )))) )) ;) })) (expression_statement "iVar5 = iVar5 + iVar8;" (assignment_expression "iVar5 = iVar5 + iVar8" identifier = (binary_expression "iVar5 + iVar8" identifier + identifier)) ;) }))) }) while (parenthesized_expression "((iVar6 < iVar7) && (iVar5 < iVar6))" ( (binary_expression "(iVar6 < iVar7) && (iVar5 < iVar6)" (parenthesized_expression "(iVar6 < iVar7)" ( (binary_expression "iVar6 < iVar7" identifier < identifier) )) && (parenthesized_expression "(iVar5 < iVar6)" ( (binary_expression "iVar5 < iVar6" identifier < identifier) ))) )) ;) })) (expression_statement "uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);" (assignment_expression "uVar11 = piVar10[7] + (*piVar10 - piVar10[8])" identifier = (binary_expression "piVar10[7] + (*piVar10 - piVar10[8])" (subscript_expression "piVar10[7]" identifier [ number_literal ]) + (parenthesized_expression "(*piVar10 - piVar10[8])" ( (binary_expression "*piVar10 - piVar10[8]" (pointer_expression "*piVar10" * identifier) - (subscript_expression "piVar10[8]" identifier [ number_literal ])) )))) ;) (expression_statement "piVar10[7] = uVar11;" (assignment_expression "piVar10[7] = uVar11" (subscript_expression "piVar10[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar10[8] = *piVar10;" (assignment_expression "piVar10[8] = *piVar10" (subscript_expression "piVar10[8]" identifier [ number_literal ]) = (pointer_expression "*piVar10" * identifier)) ;) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & LIT) )) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & LIT) )) * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & LIT) )) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & LIT) )) * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) )))) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) - (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (return_statement return IDENT ;) })))
(function_definition "uint xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  uint uVar11;\n  char *pcVar12;\n  int iStack_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }\n  if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  piVar10 = param_2;\n  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);\n  pcVar12 = (char *)*param_2;\n  if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }\n  piVar10 = piVar1;\n  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n  if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  iVar6 = piVar10[8];\n  iVar7 = *piVar10;\n  iVar5 = piVar10[7];\n  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }\n  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);\n  piVar10[7] = uVar11;\n  piVar10[8] = *piVar10;\n  return uVar11;\n}" (type_identifier "uint") (function_declarator "xstrtol(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)" (identifier "xstrtol") (parameter_list "(char *param_1,int *param_2,uint param_3,undefined4 *param_4,int param_5)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  uint uVar11;\n  char *pcVar12;\n  int iStack_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  local_24 = *(int *)PTR___stack_chk_guard_0002929c;\n  if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }\n  if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }\n  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();\n  *piVar1 = 0;\n  piVar10 = param_2;\n  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);\n  pcVar12 = (char *)*param_2;\n  if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }\n  piVar10 = piVar1;\n  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n  if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\nLAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }\n  (*(code *)PTR___stack_chk_fail_0002928c)();\n  iVar6 = piVar10[8];\n  iVar7 = *piVar10;\n  iVar5 = piVar10[7];\n  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }\n  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);\n  piVar10[7] = uVar11;\n  piVar10[8] = *piVar10;\n  return uVar11;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "char *pcVar12;" (primitive_type "char") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "int iStack_2c;" (primitive_type "int") (identifier "iStack_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0002929c;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0002929c" (identifier "local_24") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0002929c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0002929c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0002929c")))) (; ";")) (if_statement "if (0x24 < param_3) {\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }" (if "if") (parenthesized_expression "(0x24 < param_3)" (( "(") (binary_expression "0x24 < param_3" (number_literal "0x24") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n    uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);\n    return uVar11;\n  }" ({ "{") (expression_statement "uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328);" (assignment_expression "uVar11 = (*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" (identifier "uVar11") (= "=") (call_expression "(*(code *)PTR___assert_fail_000291e0)\n                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" (parenthesized_expression "(*(code *)PTR___assert_fail_000291e0)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_000291e0" (* "*") (cast_expression "(code *)PTR___assert_fail_000291e0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_000291e0"))) () ")")) (argument_list "(PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,\n                        PTR_DAT_0002910c + -0x7328)" (( "(") (binary_expression "PTR_DAT_0002910c + -0x74ec" (identifier "PTR_DAT_0002910c") (+ "+") (number_literal "-0x74ec")) (, ",") (binary_expression "PTR_DAT_0002910c + -0x74fc" (identifier "PTR_DAT_0002910c") (+ "+") (number_literal "-0x74fc")) (, ",") (number_literal "0x60") (, ",") (binary_expression "PTR_DAT_0002910c + -0x7328" (identifier "PTR_DAT_0002910c") (+ "+") (number_literal "-0x7328")) () ")")))) (; ";")) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}"))) (if_statement "if (param_2 == (int *)0x0) {\n    param_2 = &iStack_2c;\n  }" (if "if") (parenthesized_expression "(param_2 == (int *)0x0)" (( "(") (binary_expression "param_2 == (int *)0x0" (identifier "param_2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    param_2 = &iStack_2c;\n  }" ({ "{") (expression_statement "param_2 = &iStack_2c;" (assignment_expression "param_2 = &iStack_2c" (identifier "param_2") (= "=") (pointer_expression "&iStack_2c" (& "&") (identifier "iStack_2c"))) (; ";")) (} "}"))) (expression_statement "piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();" (assignment_expression "piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)()" (identifier "piVar1") (= "=") (cast_expression "(int *)(*(code *)PTR___errno_location_0002922c)()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___errno_location_0002922c)()" (parenthesized_expression "(*(code *)PTR___errno_location_0002922c)" (( "(") (pointer_expression "*(code *)PTR___errno_location_0002922c" (* "*") (cast_expression "(code *)PTR___errno_location_0002922c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___errno_location_0002922c"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar10 = param_2;" (assignment_expression "piVar10 = param_2" (identifier "piVar10") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);" (assignment_expression "local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3)" (identifier "local_28") (= "=") (call_expression "(*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3)" (parenthesized_expression "(*(code *)PTR_strtol_000291e4)" (( "(") (pointer_expression "*(code *)PTR_strtol_000291e4" (* "*") (cast_expression "(code *)PTR_strtol_000291e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strtol_000291e4"))) () ")")) (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "pcVar12 = (char *)*param_2;" (assignment_expression "pcVar12 = (char *)*param_2" (identifier "pcVar12") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if (pcVar12 == param_1) {\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }\n  else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" (if "if") (parenthesized_expression "(pcVar12 == param_1)" (( "(") (binary_expression "pcVar12 == param_1" (identifier "pcVar12") (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n    uVar11 = 4;\n    if (param_5 == 0) goto LAB_00015a98;\n    piVar10 = (int *)(int)*param_1;\n    if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);\n    if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }\n    local_28 = 1;\n    piVar1 = (int *)(int)*pcVar12;\n    uVar11 = 0;\n  }" ({ "{") (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" (identifier "uVar11") (= "=") (number_literal "4")) (; ";")) (if_statement "if (param_5 == 0) goto LAB_00015a98;" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00015a98;" (goto "goto") (statement_identifier "LAB_00015a98") (; ";"))) (expression_statement "piVar10 = (int *)(int)*param_1;" (assignment_expression "piVar10 = (int *)(int)*param_1" (identifier "piVar10") (= "=") (cast_expression "(int *)(int)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))))) (; ";")) (if_statement "if (piVar10 == (int *)0x0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" (if "if") (parenthesized_expression "(piVar10 == (int *)0x0)" (( "(") (binary_expression "piVar10 == (int *)0x0" (identifier "piVar10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" ({ "{") (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" (identifier "uVar11") (= "=") (number_literal "4")) (; ";")) (goto_statement "goto LAB_00015a98;" (goto "goto") (statement_identifier "LAB_00015a98") (; ";")) (} "}"))) (expression_statement "iVar5 = (*(code *)PTR_strchr_00029244)(param_5);" (assignment_expression "iVar5 = (*(code *)PTR_strchr_00029244)(param_5)" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_strchr_00029244)(param_5)" (parenthesized_expression "(*(code *)PTR_strchr_00029244)" (( "(") (pointer_expression "*(code *)PTR_strchr_00029244" (* "*") (cast_expression "(code *)PTR_strchr_00029244" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strchr_00029244"))) () ")")) (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = 4;\n      goto LAB_00015a98;\n    }" ({ "{") (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" (identifier "uVar11") (= "=") (number_literal "4")) (; ";")) (goto_statement "goto LAB_00015a98;" (goto "goto") (statement_identifier "LAB_00015a98") (; ";")) (} "}"))) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar1 = (int *)(int)*pcVar12;" (assignment_expression "piVar1 = (int *)(int)*pcVar12" (identifier "piVar1") (= "=") (cast_expression "(int *)(int)*pcVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12"))))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" (else "else") (compound_statement "{\n    if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }\n    if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n    piVar10 = (int *)(int)*pcVar12;\n    piVar1 = piVar10;\n    if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }\n  }" ({ "{") (if_statement "if (*piVar1 == 0) {\n      uVar11 = 0;\n    }\n    else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" (if "if") (parenthesized_expression "(*piVar1 == 0)" (( "(") (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = 0;\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" (else "else") (compound_statement "{\n      if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }\n      uVar11 = 1;\n    }" ({ "{") (if_statement "if (*piVar1 != 0x22) {\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }" (if "if") (parenthesized_expression "(*piVar1 != 0x22)" (( "(") (binary_expression "*piVar1 != 0x22" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (!= "!=") (number_literal "0x22")) () ")")) (compound_statement "{\n        uVar11 = 4;\n        goto LAB_00015a98;\n      }" ({ "{") (expression_statement "uVar11 = 4;" (assignment_expression "uVar11 = 4" (identifier "uVar11") (= "=") (number_literal "4")) (; ";")) (goto_statement "goto LAB_00015a98;" (goto "goto") (statement_identifier "LAB_00015a98") (; ";")) (} "}"))) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if (param_5 == 0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" ({ "{") (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "local_28")) (; ";")) (goto_statement "goto LAB_00015a98;" (goto "goto") (statement_identifier "LAB_00015a98") (; ";")) (} "}"))) (expression_statement "piVar10 = (int *)(int)*pcVar12;" (assignment_expression "piVar10 = (int *)(int)*pcVar12" (identifier "piVar10") (= "=") (cast_expression "(int *)(int)*pcVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)*pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12"))))) (; ";")) (expression_statement "piVar1 = piVar10;" (assignment_expression "piVar1 = piVar10" (identifier "piVar1") (= "=") (identifier "piVar10")) (; ";")) (if_statement "if (piVar10 == (int *)0x0) {\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" (if "if") (parenthesized_expression "(piVar10 == (int *)0x0)" (( "(") (binary_expression "piVar10 == (int *)0x0" (identifier "piVar10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *param_4 = local_28;\n      goto LAB_00015a98;\n    }" ({ "{") (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "local_28")) (; ";")) (goto_statement "goto LAB_00015a98;" (goto "goto") (statement_identifier "LAB_00015a98") (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar10 = piVar1;" (assignment_expression "piVar10 = piVar1" (identifier "piVar10") (= "=") (identifier "piVar1")) (; ";")) (expression_statement "iVar5 = (*(code *)PTR_strchr_00029244)(param_5);" (assignment_expression "iVar5 = (*(code *)PTR_strchr_00029244)(param_5)" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_strchr_00029244)(param_5)" (parenthesized_expression "(*(code *)PTR_strchr_00029244)" (( "(") (pointer_expression "*(code *)PTR_strchr_00029244" (* "*") (cast_expression "(code *)PTR_strchr_00029244" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strchr_00029244"))) () ")")) (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }\n  else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" ({ "{") (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "uVar11 = uVar11 | 2;" (assignment_expression "uVar11 = uVar11 | 2" (identifier "uVar11") (= "=") (binary_expression "uVar11 | 2" (identifier "uVar11") (| "|") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else {\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" (else "else") (compound_statement "{\n    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }\n    piVar10 = (int *)0x400;\n    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }\n    *param_4 = local_28;\n    uVar11 = uVar11 | 2;\n  }" ({ "{") (if_statement "if (((int)piVar1 - 0x45U & 0xff) < 0x30) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }" (if "if") (parenthesized_expression "(((int)piVar1 - 0x45U & 0xff) < 0x30)" (( "(") (binary_expression "((int)piVar1 - 0x45U & 0xff) < 0x30" (parenthesized_expression "((int)piVar1 - 0x45U & 0xff)" (( "(") (binary_expression "(int)piVar1 - 0x45U & 0xff" (binary_expression "(int)piVar1 - 0x45U" (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1")) (- "-") (number_literal "0x45U")) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();\n      return uVar11;\n    }" ({ "{") (expression_statement "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();" (assignment_expression "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))()" (identifier "uVar11") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0))" (( "(") (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" (* "*") (cast_expression "(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)" (( "(") (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0" (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x45U & 0xff) * 4" (identifier "PTR_DAT_0002910c") (+ "+") (binary_expression "((int)piVar1 - 0x45U & 0xff) * 4" (parenthesized_expression "((int)piVar1 - 0x45U & 0xff)" (( "(") (binary_expression "(int)piVar1 - 0x45U & 0xff" (binary_expression "(int)piVar1 - 0x45U" (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1")) (- "-") (number_literal "0x45U")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x74c0")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}"))) (expression_statement "piVar10 = (int *)0x400;" (assignment_expression "piVar10 = (int *)0x400" (identifier "piVar10") (= "=") (cast_expression "(int *)0x400" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x400"))) (; ";")) (if_statement "if (((int)piVar1 - 0x42U & 0xff) < 0x36) {\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }" (if "if") (parenthesized_expression "(((int)piVar1 - 0x42U & 0xff) < 0x36)" (( "(") (binary_expression "((int)piVar1 - 0x42U & 0xff) < 0x36" (parenthesized_expression "((int)piVar1 - 0x42U & 0xff)" (( "(") (binary_expression "(int)piVar1 - 0x42U & 0xff" (binary_expression "(int)piVar1 - 0x42U" (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1")) (- "-") (number_literal "0x42U")) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "0x36")) () ")")) (compound_statement "{\n                    \n                    \n      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();\n      return uVar11;\n    }" ({ "{") (expression_statement "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();" (assignment_expression "uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))()" (identifier "uVar11") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400))" (( "(") (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" (* "*") (cast_expression "(int *)(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)" (( "(") (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400" (binary_expression "PTR_DAT_0002910c +\n                                           ((int)piVar1 - 0x42U & 0xff) * 4" (identifier "PTR_DAT_0002910c") (+ "+") (binary_expression "((int)piVar1 - 0x42U & 0xff) * 4" (parenthesized_expression "((int)piVar1 - 0x42U & 0xff)" (( "(") (binary_expression "(int)piVar1 - 0x42U & 0xff" (binary_expression "(int)piVar1 - 0x42U" (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1")) (- "-") (number_literal "0x42U")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x7400")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}"))) (expression_statement "*param_4 = local_28;" (assignment_expression "*param_4 = local_28" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "uVar11 = uVar11 | 2;" (assignment_expression "uVar11 = uVar11 | 2" (identifier "uVar11") (= "=") (binary_expression "uVar11 | 2" (identifier "uVar11") (| "|") (number_literal "2"))) (; ";")) (} "}")))) (labeled_statement "LAB_00015a98:\n  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }" (statement_identifier "LAB_00015a98") (: ":") (if_statement "if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {\n    return uVar11;\n  }" (if "if") (parenthesized_expression "(local_24 == *(int *)PTR___stack_chk_guard_0002929c)" (( "(") (binary_expression "local_24 == *(int *)PTR___stack_chk_guard_0002929c" (identifier "local_24") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_0002929c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0002929c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0002929c")))) () ")")) (compound_statement "{\n    return uVar11;\n  }" ({ "{") (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___stack_chk_fail_0002928c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002928c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002928c)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0002928c" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0002928c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0002928c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = piVar10[8];" (assignment_expression "iVar6 = piVar10[8]" (identifier "iVar6") (= "=") (subscript_expression "piVar10[8]" (identifier "piVar10") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar7 = *piVar10;" (assignment_expression "iVar7 = *piVar10" (identifier "iVar7") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "iVar5 = piVar10[7];" (assignment_expression "iVar5 = piVar10[7]" (identifier "iVar5") (= "=") (subscript_expression "piVar10[7]" (identifier "piVar10") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((iVar6 < iVar7) && (iVar5 < iVar6)) {\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }" (if "if") (parenthesized_expression "((iVar6 < iVar7) && (iVar5 < iVar6))" (( "(") (binary_expression "(iVar6 < iVar7) && (iVar5 < iVar6)" (parenthesized_expression "(iVar6 < iVar7)" (( "(") (binary_expression "iVar6 < iVar7" (identifier "iVar6") (< "<") (identifier "iVar7")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 < iVar6)" (( "(") (binary_expression "iVar5 < iVar6" (identifier "iVar5") (< "<") (identifier "iVar6")) () ")"))) () ")")) (compound_statement "{\n    do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));\n  }" ({ "{") (do_statement "do {\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    } while ((iVar6 < iVar7) && (iVar5 < iVar6));" (do "do") (compound_statement "{\n      iVar8 = iVar7 - iVar6;\n      iVar9 = iVar6 - iVar5;\n      if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }\n    }" ({ "{") (expression_statement "iVar8 = iVar7 - iVar6;" (assignment_expression "iVar8 = iVar7 - iVar6" (identifier "iVar8") (= "=") (binary_expression "iVar7 - iVar6" (identifier "iVar7") (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "iVar9 = iVar6 - iVar5;" (assignment_expression "iVar9 = iVar6 - iVar5" (identifier "iVar9") (= "=") (binary_expression "iVar6 - iVar5" (identifier "iVar6") (- "-") (identifier "iVar5"))) (; ";")) (if_statement "if (iVar9 < iVar8) {\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }\n      else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" (if "if") (parenthesized_expression "(iVar9 < iVar8)" (( "(") (binary_expression "iVar9 < iVar8" (identifier "iVar9") (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n        if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }\n        iVar7 = iVar7 - iVar9;\n      }" ({ "{") (if_statement "if (0 < iVar9) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }" (if "if") (parenthesized_expression "(0 < iVar9)" (( "(") (binary_expression "0 < iVar9" (number_literal "0") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));\n        }" ({ "{") (expression_statement "puVar3 = (undefined4 *)(local_24 + iVar5 * 4);" (assignment_expression "puVar3 = (undefined4 *)(local_24 + iVar5 * 4)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(local_24 + iVar5 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + iVar5 * 4)" (( "(") (binary_expression "local_24 + iVar5 * 4" (identifier "local_24") (+ "+") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);" (assignment_expression "puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(local_24 + (iVar7 - iVar9) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + (iVar7 - iVar9) * 4)" (( "(") (binary_expression "local_24 + (iVar7 - iVar9) * 4" (identifier "local_24") (+ "+") (binary_expression "(iVar7 - iVar9) * 4" (parenthesized_expression "(iVar7 - iVar9)" (( "(") (binary_expression "iVar7 - iVar9" (identifier "iVar7") (- "-") (identifier "iVar9")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));" (do "do") (compound_statement "{\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar2 = puVar2 + 1;\n            puVar3 = puVar3 + 1;\n          }" ({ "{") (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" (identifier "uVar4") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "*puVar3 = *puVar2;" (assignment_expression "*puVar3 = *puVar2" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "*puVar2 = uVar4;" (assignment_expression "*puVar2 = uVar4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 != (undefined4 *)(local_24 + iVar7 * 4))" (( "(") (binary_expression "puVar2 != (undefined4 *)(local_24 + iVar7 * 4)" (identifier "puVar2") (!= "!=") (cast_expression "(undefined4 *)(local_24 + iVar7 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + iVar7 * 4)" (( "(") (binary_expression "local_24 + iVar7 * 4" (identifier "local_24") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar7 = iVar7 - iVar9;" (assignment_expression "iVar7 = iVar7 - iVar9" (identifier "iVar7") (= "=") (binary_expression "iVar7 - iVar9" (identifier "iVar7") (- "-") (identifier "iVar9"))) (; ";")) (} "}")) (else_clause "else {\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" (else "else") (compound_statement "{\n        if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }\n        iVar5 = iVar5 + iVar8;\n      }" ({ "{") (if_statement "if (0 < iVar8) {\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }" (if "if") (parenthesized_expression "(0 < iVar8)" (( "(") (binary_expression "0 < iVar8" (number_literal "0") (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);\n          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);\n          do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));\n        }" ({ "{") (expression_statement "puVar3 = (undefined4 *)(local_24 + iVar5 * 4);" (assignment_expression "puVar3 = (undefined4 *)(local_24 + iVar5 * 4)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(local_24 + iVar5 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + iVar5 * 4)" (( "(") (binary_expression "local_24 + iVar5 * 4" (identifier "local_24") (+ "+") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar2 = (undefined4 *)(local_24 + iVar6 * 4);" (assignment_expression "puVar2 = (undefined4 *)(local_24 + iVar6 * 4)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(local_24 + iVar6 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + iVar6 * 4)" (( "(") (binary_expression "local_24 + iVar6 * 4" (identifier "local_24") (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));" (do "do") (compound_statement "{\n            uVar4 = *puVar3;\n            *puVar3 = *puVar2;\n            *puVar2 = uVar4;\n            puVar3 = puVar3 + 1;\n            puVar2 = puVar2 + 1;\n          }" ({ "{") (expression_statement "uVar4 = *puVar3;" (assignment_expression "uVar4 = *puVar3" (identifier "uVar4") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "*puVar3 = *puVar2;" (assignment_expression "*puVar3 = *puVar2" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "*puVar2 = uVar4;" (assignment_expression "*puVar2 = uVar4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4))" (( "(") (binary_expression "puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4)" (identifier "puVar3") (!= "!=") (cast_expression "(undefined4 *)(local_24 + (iVar8 + iVar5) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + (iVar8 + iVar5) * 4)" (( "(") (binary_expression "local_24 + (iVar8 + iVar5) * 4" (identifier "local_24") (+ "+") (binary_expression "(iVar8 + iVar5) * 4" (parenthesized_expression "(iVar8 + iVar5)" (( "(") (binary_expression "iVar8 + iVar5" (identifier "iVar8") (+ "+") (identifier "iVar5")) () ")")) (* "*") (number_literal "4"))) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar5 = iVar5 + iVar8;" (assignment_expression "iVar5 = iVar5 + iVar8" (identifier "iVar5") (= "=") (binary_expression "iVar5 + iVar8" (identifier "iVar5") (+ "+") (identifier "iVar8"))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "((iVar6 < iVar7) && (iVar5 < iVar6))" (( "(") (binary_expression "(iVar6 < iVar7) && (iVar5 < iVar6)" (parenthesized_expression "(iVar6 < iVar7)" (( "(") (binary_expression "iVar6 < iVar7" (identifier "iVar6") (< "<") (identifier "iVar7")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 < iVar6)" (( "(") (binary_expression "iVar5 < iVar6" (identifier "iVar5") (< "<") (identifier "iVar6")) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);" (assignment_expression "uVar11 = piVar10[7] + (*piVar10 - piVar10[8])" (identifier "uVar11") (= "=") (binary_expression "piVar10[7] + (*piVar10 - piVar10[8])" (subscript_expression "piVar10[7]" (identifier "piVar10") ([ "[") (number_literal "7") (] "]")) (+ "+") (parenthesized_expression "(*piVar10 - piVar10[8])" (( "(") (binary_expression "*piVar10 - piVar10[8]" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (- "-") (subscript_expression "piVar10[8]" (identifier "piVar10") ([ "[") (number_literal "8") (] "]"))) () ")")))) (; ";")) (expression_statement "piVar10[7] = uVar11;" (assignment_expression "piVar10[7] = uVar11" (subscript_expression "piVar10[7]" (identifier "piVar10") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "piVar10[8] = *piVar10;" (assignment_expression "piVar10[8] = *piVar10" (subscript_expression "piVar10[8]" (identifier "piVar10") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))) (if_statement condition: (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: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (if_statement condition: (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: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (number_literal))) (goto_statement label: (statement_identifier)))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (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: (pointer_expression argument: (identifier)) right: (identifier))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (return_statement (identifier)))))

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

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  uint uVar11;
  char *pcVar12;
  int iStack_2c;
  undefined4 local_28;
  int local_24;
  
  local_24 = *(int *)PTR___stack_chk_guard_0002929c;
  if (0x24 < param_3) {
    uVar11 = (*(code *)PTR___assert_fail_000291e0)
                       (PTR_DAT_0002910c + -0x74ec,PTR_DAT_0002910c + -0x74fc,0x60,
                        PTR_DAT_0002910c + -0x7328);
    return uVar11;
  }
  if (param_2 == (int *)0x0) {
    param_2 = &iStack_2c;
  }
  piVar1 = (int *)(*(code *)PTR___errno_location_0002922c)();
  *piVar1 = 0;
  piVar10 = param_2;
  local_28 = (*(code *)PTR_strtol_000291e4)(param_1,param_2,param_3);
  pcVar12 = (char *)*param_2;
  if (pcVar12 == param_1) {
    uVar11 = 4;
    if (param_5 == 0) goto LAB_00015a98;
    piVar10 = (int *)(int)*param_1;
    if (piVar10 == (int *)0x0) {
      uVar11 = 4;
      goto LAB_00015a98;
    }
    iVar5 = (*(code *)PTR_strchr_00029244)(param_5);
    if (iVar5 == 0) {
      uVar11 = 4;
      goto LAB_00015a98;
    }
    local_28 = 1;
    piVar1 = (int *)(int)*pcVar12;
    uVar11 = 0;
  }
  else {
    if (*piVar1 == 0) {
      uVar11 = 0;
    }
    else {
      if (*piVar1 != 0x22) {
        uVar11 = 4;
        goto LAB_00015a98;
      }
      uVar11 = 1;
    }
    if (param_5 == 0) {
      *param_4 = local_28;
      goto LAB_00015a98;
    }
    piVar10 = (int *)(int)*pcVar12;
    piVar1 = piVar10;
    if (piVar10 == (int *)0x0) {
      *param_4 = local_28;
      goto LAB_00015a98;
    }
  }
  piVar10 = piVar1;
  iVar5 = (*(code *)PTR_strchr_00029244)(param_5);
  if (iVar5 == 0) {
    *param_4 = local_28;
    uVar11 = uVar11 | 2;
  }
  else {
    if (((int)piVar1 - 0x45U & 0xff) < 0x30) {
                    /* WARNING: Could not emulate address calculation at 0x00015a64 */
                    /* WARNING: Treating indirect jump as call */
      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +
                                           ((int)piVar1 - 0x45U & 0xff) * 4 + -0x74c0)))();
      return uVar11;
    }
    piVar10 = (int *)0x400;
    if (((int)piVar1 - 0x42U & 0xff) < 0x36) {
                    /* WARNING: Could not emulate address calculation at 0x00015b68 */
                    /* WARNING: Treating indirect jump as call */
      uVar11 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0002910c +
                                           ((int)piVar1 - 0x42U & 0xff) * 4 + -0x7400)))();
      return uVar11;
    }
    *param_4 = local_28;
    uVar11 = uVar11 | 2;
  }
LAB_00015a98:
  if (local_24 == *(int *)PTR___stack_chk_guard_0002929c) {
    return uVar11;
  }
  (*(code *)PTR___stack_chk_fail_0002928c)();
  iVar6 = piVar10[8];
  iVar7 = *piVar10;
  iVar5 = piVar10[7];
  if ((iVar6 < iVar7) && (iVar5 < iVar6)) {
    do {
      iVar8 = iVar7 - iVar6;
      iVar9 = iVar6 - iVar5;
      if (iVar9 < iVar8) {
        if (0 < iVar9) {
          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);
          puVar2 = (undefined4 *)(local_24 + (iVar7 - iVar9) * 4);
          do {
            uVar4 = *puVar3;
            *puVar3 = *puVar2;
            *puVar2 = uVar4;
            puVar2 = puVar2 + 1;
            puVar3 = puVar3 + 1;
          } while (puVar2 != (undefined4 *)(local_24 + iVar7 * 4));
        }
        iVar7 = iVar7 - iVar9;
      }
      else {
        if (0 < iVar8) {
          puVar3 = (undefined4 *)(local_24 + iVar5 * 4);
          puVar2 = (undefined4 *)(local_24 + iVar6 * 4);
          do {
            uVar4 = *puVar3;
            *puVar3 = *puVar2;
            *puVar2 = uVar4;
            puVar3 = puVar3 + 1;
            puVar2 = puVar2 + 1;
          } while (puVar3 != (undefined4 *)(local_24 + (iVar8 + iVar5) * 4));
        }
        iVar5 = iVar5 + iVar8;
      }
    } while ((iVar6 < iVar7) && (iVar5 < iVar6));
  }
  uVar11 = piVar10[7] + (*piVar10 - piVar10[8]);
  piVar10[7] = uVar11;
  piVar10[8] = *piVar10;
  return uVar11;
}

