
uerr_t ftp_pwd(int csock,char **pwd)

{
  undefined *puVar1;
  char **buf;
  undefined8 *bufsize;
  int iVar2;
  uerr_t uVar3;
  char *pcVar4;
  int iVar5;
  int *piVar6;
  char **ret_line;
  undefined4 in_a3;
  int *piVar7;
  undefined *puVar8;
  code *pcVar9;
  undefined8 uVar10;
  double in_f12_13;
  char *pcStack_60;
  int iStack_5c;
  uerr_t uStack_58;
  undefined *puStack_54;
  undefined *puStack_50;
  char **ppcStack_4c;
  char *respline;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_000afc3c;
  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;
  buf = (char **)ftp_request(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0);
  bufsize = (undefined8 *)(*(code *)PTR_strlen_000afc68)(buf);
  ret_line = buf;
  iVar2 = fd_write(csock,(char *)buf,(int)bufsize,in_f12_13);
  if (iVar2 < 0) {
    uVar3 = WRITEFAILED;
    (*(code *)PTR_free_000afd08)(buf);
  }
  else {
    (*(code *)PTR_free_000afd08)();
    ret_line = &respline;
    uVar3 = ftp_response(csock,ret_line);
    puVar8 = PTR_s_hallenge__000af46c;
    if (uVar3 == FTPOK) {
      csock = (int)PTR_s_hallenge__000af46c;
      if (*respline != '5') {
        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);
        ret_line = (char **)(puVar8 + -0x3d0);
        csock = (*(code *)PTR_strtok_000afba8)(0);
        if ((undefined *)csock != (undefined *)0x0) {
          (*(code *)PTR_free_000afd08)(*pwd);
          puVar8 = PTR_xstrdup_000af48c;
          *pwd = (char *)0x0;
          pcVar4 = (char *)(*(code *)puVar8)(csock);
          puVar8 = PTR_free_000afd08;
          *pwd = pcVar4;
          (*(code *)puVar8)(respline);
          goto LAB_0002bae8;
        }
      }
      uVar3 = FTPSRVERR;
      (*(code *)PTR_free_000afd08)(respline);
    }
  }
LAB_0002bae8:
  if (local_1c == *(int *)puVar1) {
    return uVar3;
  }
  iVar2 = local_1c;
  puVar8 = PTR___stack_chk_fail_000afbd4;
  (*(code *)PTR___stack_chk_fail_000afbd4)();
  puStack_54 = puVar1;
  piVar7 = *(int **)(puVar8 + 0x840f4);
  iStack_5c = *piVar7;
  uStack_58 = uVar3;
  puStack_50 = (undefined *)csock;
  ppcStack_4c = pwd;
  pcVar4 = ftp_request((char *)(*(int *)(puVar8 + 0x83924) + -0x14fc),(char *)ret_line);
  iVar5 = (**(code **)(puVar8 + 0x84120))(pcVar4);
  uVar10 = *(undefined8 *)(*(int *)(puVar8 + 0x83920) + 0x40b8);
  iVar5 = fd_write(iVar2,pcVar4,iVar5,in_f12_13);
  if (iVar5 < 0) {
    uVar3 = WRITEFAILED;
    (**(code **)(puVar8 + 0x841c0))(pcVar4);
    *(undefined4 *)((int)bufsize + 4) = 0;
    *(undefined4 *)bufsize = 0;
  }
  else {
    (**(code **)(puVar8 + 0x841c0))();
    uVar3 = ftp_response(iVar2,&pcStack_60);
    pcVar4 = pcStack_60;
    if (uVar3 == FTPOK) {
      if (*pcStack_60 == '5') {
        pcVar9 = *(code **)(puVar8 + 0x841c0);
      }
      else {
        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();
        *piVar6 = 0;
        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);
        iVar2 = *piVar6;
        *bufsize = uVar10;
        pcVar9 = *(code **)(puVar8 + 0x841c0);
        if (iVar2 == 0) {
          (*pcVar9)(pcStack_60);
          goto LAB_0002bc24;
        }
      }
      (*pcVar9)(pcStack_60);
    }
    *(undefined4 *)((int)bufsize + 4) = 0;
    *(undefined4 *)bufsize = 0;
  }
LAB_0002bc24:
  if (iStack_5c == *piVar7) {
    return uVar3;
  }
  pcVar9 = *(code **)(puVar8 + 0x8408c);
  iVar2 = iStack_5c;
  (*pcVar9)();
  if (iVar2 == 0) {
    return 0x49;
  }
  iVar5 = (**(code **)(pcVar9 + 0x83e84))();
  if (iVar5 == 0) {
    uVar3 = (uerr_t)*(char *)(iVar2 + 5);
    if (uVar3 != NOCONERROR) {
      if (uVar3 - 0x61 < 0x1a) {
        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);
      }
      return uVar3;
    }
  }
  return 0x49;
}



int ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)

{
  undefined *puVar1;
  char *pcVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined4 uVar6;
  int *piVar7;
  int iVar8;
  int *piVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined8 uVar12;
  char *pcStack_60;
  int iStack_5c;
  int iStack_58;
  undefined *puStack_54;
  undefined *puStack_50;
  undefined4 *puStack_4c;
  char *local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_000afc3c;
  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;
  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);
  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);
  iVar5 = fd_write(param_1,uVar3);
  if (iVar5 < 0) {
    iVar5 = 0x2c;
    (*(code *)PTR_free_000afd08)(uVar3);
  }
  else {
    (*(code *)PTR_free_000afd08)();
    iVar5 = ftp_response(param_1,&local_20);
    puVar10 = PTR_s_hallenge__000af46c;
    if (iVar5 == 7) {
      param_1 = PTR_s_hallenge__000af46c;
      if (*local_20 != '5') {
        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);
        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);
        if (param_1 != (undefined *)0x0) {
          (*(code *)PTR_free_000afd08)(*param_2);
          puVar10 = PTR_xstrdup_000af48c;
          *param_2 = 0;
          uVar3 = (*(code *)puVar10)(param_1);
          puVar10 = PTR_free_000afd08;
          *param_2 = uVar3;
          (*(code *)puVar10)(local_20);
          goto LAB_0002bae8;
        }
      }
      iVar5 = 0xf;
      (*(code *)PTR_free_000afd08)(local_20);
    }
  }
LAB_0002bae8:
  if (local_1c == *(int *)puVar1) {
    return iVar5;
  }
  iVar8 = local_1c;
  puVar10 = PTR___stack_chk_fail_000afbd4;
  (*(code *)PTR___stack_chk_fail_000afbd4)();
  puStack_54 = puVar1;
  piVar9 = *(int **)(puVar10 + 0x840f4);
  iStack_5c = *piVar9;
  iStack_58 = iVar5;
  puStack_50 = param_1;
  puStack_4c = param_2;
  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);
  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);
  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));
  if (iVar5 < 0) {
    iVar5 = 0x2c;
    (**(code **)(puVar10 + 0x841c0))(uVar3);
    *(undefined4 *)((int)puVar4 + 4) = 0;
    *(undefined4 *)puVar4 = 0;
  }
  else {
    (**(code **)(puVar10 + 0x841c0))();
    iVar5 = ftp_response(iVar8,&pcStack_60);
    pcVar2 = pcStack_60;
    if (iVar5 == 7) {
      if (*pcStack_60 == '5') {
        pcVar11 = *(code **)(puVar10 + 0x841c0);
      }
      else {
        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();
        *piVar7 = 0;
        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);
        iVar8 = *piVar7;
        *puVar4 = uVar12;
        pcVar11 = *(code **)(puVar10 + 0x841c0);
        if (iVar8 == 0) {
          (*pcVar11)(pcStack_60);
          goto LAB_0002bc24;
        }
      }
      (*pcVar11)(pcStack_60);
    }
    *(undefined4 *)((int)puVar4 + 4) = 0;
    *(undefined4 *)puVar4 = 0;
  }
LAB_0002bc24:
  if (iStack_5c == *piVar9) {
    return iVar5;
  }
  pcVar11 = *(code **)(puVar10 + 0x8408c);
  iVar5 = iStack_5c;
  (*pcVar11)();
  if (iVar5 == 0) {
    return 0x49;
  }
  iVar8 = (**(code **)(pcVar11 + 0x83e84))();
  if (iVar8 == 0) {
    iVar8 = (int)*(char *)(iVar5 + 5);
    if (iVar8 != 0) {
      if (iVar8 - 0x61U < 0x1a) {
        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);
      }
      return iVar8;
    }
  }
  return 0x49;
}


lui gp,0x9
addiu gp,gp,-0x4574
addu gp,gp,t9
addiu sp,sp,-0x40
lw t9,-0x7c70(gp)
sw s1,0x30(sp)
addiu t9,t9,-0x6ee0
sw s2,0x34(sp)
or s2,a0,zero
lw s1,-0x77f4(gp)
lw a0,-0x7fc4(gp)
sw s3,0x38(sp)
or s3,a1,zero
or a1,zero,zero
sw ra,0x3c(sp)
sw gp,0x18(sp)
addiu a0,a0,-0x1500
sw s0,0x2c(sp)
lw v0,0x0(s1)
sw v0,0x24(sp)
bal 0x00029120
_nop
lw gp,0x18(sp)
or a0,v0,zero
lw t9,-0x77c8(gp)
jalr t9
_or s0,v0,zero
or a0,s2,zero
lw gp,0x18(sp)
or a2,v0,zero
or a1,s0,zero
lw v0,-0x7fc8(gp)
lw t9,-0x7c5c(gp)
ldc1 f0,0x40b8(v0)
bal 0x0001c0c4
_sdc1 f0,0x10(sp)
or a0,s0,zero
lw gp,0x18(sp)
bltz v0,0x0002bb14
_lw t9,-0x7728(gp)
jalr t9
_nop
addiu a1,sp,0x20
lw gp,0x18(sp)
lw t9,-0x7d38(gp)
bal 0x00029394
_or a0,s2,zero
li v1,0x7
lw gp,0x18(sp)
bne v0,v1,0x0002bae8
_or s0,v0,zero
lw a0,0x20(sp)
li v0,0x35
lb v1,0x0(a0)
beq v1,v0,0x0002bb28
_lw s2,-0x7fc4(gp)
lw t9,-0x7888(gp)
jalr t9
_addiu a1,s2,-0x3d0
addiu a1,s2,-0x3d0
lw gp,0x18(sp)
lw t9,-0x7888(gp)
jalr t9
_or a0,zero,zero
lw gp,0x18(sp)
beq v0,zero,0x0002bb24
_or s2,v0,zero
lw t9,-0x7728(gp)
jalr t9
_lw a0,0x0(s3)
or a0,s2,zero
lw gp,0x18(sp)
lw t9,-0x7fa4(gp)
jalr t9
_sw zero,0x0(s3)
lw gp,0x18(sp)
lw a0,0x20(sp)
lw t9,-0x7728(gp)
jalr t9
_sw v0,0x0(s3)
lw gp,0x18(sp)
lw a0,0x24(sp)
or v0,s0,zero
lw v1,0x0(s1)
bne a0,v1,0x0002bb3c
_lw ra,0x3c(sp)
lw s3,0x38(sp)
lw s2,0x34(sp)
lw s1,0x30(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x40
jalr t9
_li s0,0x2c
b 0x0002bae8
_lw gp,0x18(sp)
lw a0,0x20(sp)
lw t9,-0x7728(gp)
jalr t9
_li s0,0xf
b 0x0002bae8
_lw gp,0x18(sp)
lw t9,-0x785c(gp)
jalr t9
_nop
(translation_unit "int ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  undefined4 uVar3;\n  undefined8 *puVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  char *pcStack_60;\n  int iStack_5c;\n  int iStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  undefined4 *puStack_4c;\n  char *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);\n  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);\n  iVar5 = fd_write(param_1,uVar3);\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }\n  iVar8 = local_1c;\n  puVar10 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar9 = *(int **)(puVar10 + 0x840f4);\n  iStack_5c = *piVar9;\n  iStack_58 = iVar5;\n  puStack_50 = param_1;\n  puStack_4c = param_2;\n  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);\n  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);\n  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x8408c);\n  iVar5 = iStack_5c;\n  (*pcVar11)();\n  if (iVar5 == 0) {\n    return 0x49;\n  }\n  iVar8 = (**(code **)(pcVar11 + 0x83e84))();\n  if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }\n  return 0x49;\n}\n\n" (function_definition "int ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  undefined4 uVar3;\n  undefined8 *puVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  char *pcStack_60;\n  int iStack_5c;\n  int iStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  undefined4 *puStack_4c;\n  char *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);\n  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);\n  iVar5 = fd_write(param_1,uVar3);\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }\n  iVar8 = local_1c;\n  puVar10 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar9 = *(int **)(puVar10 + 0x840f4);\n  iStack_5c = *piVar9;\n  iStack_58 = iVar5;\n  puStack_50 = param_1;\n  puStack_4c = param_2;\n  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);\n  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);\n  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x8408c);\n  iVar5 = iStack_5c;\n  (*pcVar11)();\n  if (iVar5 == 0) {\n    return 0x49;\n  }\n  iVar8 = (**(code **)(pcVar11 + 0x83e84))();\n  if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }\n  return 0x49;\n}" primitive_type (function_declarator "ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "undefined *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  char *pcVar2;\n  undefined4 uVar3;\n  undefined8 *puVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  char *pcStack_60;\n  int iStack_5c;\n  int iStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  undefined4 *puStack_4c;\n  char *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);\n  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);\n  iVar5 = fd_write(param_1,uVar3);\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }\n  iVar8 = local_1c;\n  puVar10 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar9 = *(int **)(puVar10 + 0x840f4);\n  iStack_5c = *piVar9;\n  iStack_58 = iVar5;\n  puStack_50 = param_1;\n  puStack_4c = param_2;\n  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);\n  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);\n  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x8408c);\n  iVar5 = iStack_5c;\n  (*pcVar11)();\n  if (iVar5 == 0) {\n    return 0x49;\n  }\n  iVar8 = (**(code **)(pcVar11 + 0x83e84))();\n  if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }\n  return 0x49;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "char *pcStack_60;" primitive_type (pointer_declarator "*pcStack_60" * identifier) ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "int iStack_58;" primitive_type identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "undefined4 *puStack_4c;" type_identifier (pointer_declarator "*puStack_4c" * identifier) ;) (declaration "char *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000afc3c" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000afc3c;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000afc3c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000afc3c" * (cast_expression "(int *)PTR___stack_chk_guard_000afc3c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);" (assignment_expression "uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0)" identifier = (call_expression "FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0)" identifier (argument_list "(PTR_s_hallenge__000af46c + -0x1500,0)" ( (binary_expression "PTR_s_hallenge__000af46c + -0x1500" identifier + number_literal) , number_literal )))) ;) (expression_statement "puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);" (assignment_expression "puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3)" identifier = (cast_expression "(undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_strlen_000afc68)(uVar3)" (parenthesized_expression "(*(code *)PTR_strlen_000afc68)" ( (pointer_expression "*(code *)PTR_strlen_000afc68" * (cast_expression "(code *)PTR_strlen_000afc68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3)" ( identifier ))))) ;) (expression_statement "iVar5 = fd_write(param_1,uVar3);" (assignment_expression "iVar5 = fd_write(param_1,uVar3)" identifier = (call_expression "fd_write(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }" { (expression_statement "iVar5 = 0x2c;" (assignment_expression "iVar5 = 0x2c" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_free_000afd08)(uVar3);" (call_expression "(*(code *)PTR_free_000afd08)(uVar3)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3)" ( identifier ))) ;) }) (else_clause "else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" else (compound_statement "{\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" { (expression_statement "(*(code *)PTR_free_000afd08)();" (call_expression "(*(code *)PTR_free_000afd08)()" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = ftp_response(param_1,&local_20);" (assignment_expression "iVar5 = ftp_response(param_1,&local_20)" identifier = (call_expression "ftp_response(param_1,&local_20)" identifier (argument_list "(param_1,&local_20)" ( identifier , (pointer_expression "&local_20" & identifier) )))) ;) (expression_statement "puVar10 = PTR_s_hallenge__000af46c;" (assignment_expression "puVar10 = PTR_s_hallenge__000af46c" identifier = identifier) ;) (if_statement "if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }" if (parenthesized_expression "(iVar5 == 7)" ( (binary_expression "iVar5 == 7" identifier == number_literal) )) (compound_statement "{\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }" { (expression_statement "param_1 = PTR_s_hallenge__000af46c;" (assignment_expression "param_1 = PTR_s_hallenge__000af46c" identifier = identifier) ;) (if_statement "if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }" if (parenthesized_expression "(*local_20 != '5')" ( (binary_expression "*local_20 != '5'" (pointer_expression "*local_20" * identifier) != (char_literal "'5'" ' character ')) )) (compound_statement "{\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }" { (expression_statement "(*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);" (call_expression "(*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0)" (parenthesized_expression "(*(code *)PTR_strtok_000afba8)" ( (pointer_expression "*(code *)PTR_strtok_000afba8" * (cast_expression "(code *)PTR_strtok_000afba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_20,PTR_s_hallenge__000af46c + -0x3d0)" ( identifier , (binary_expression "PTR_s_hallenge__000af46c + -0x3d0" identifier + number_literal) ))) ;) (expression_statement "param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);" (assignment_expression "param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" identifier = (cast_expression "(undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" (parenthesized_expression "(*(code *)PTR_strtok_000afba8)" ( (pointer_expression "*(code *)PTR_strtok_000afba8" * (cast_expression "(code *)PTR_strtok_000afba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,puVar10 + -0x3d0)" ( number_literal , (binary_expression "puVar10 + -0x3d0" identifier + number_literal) ))))) ;) (if_statement "if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }" if (parenthesized_expression "(param_1 != (undefined *)0x0)" ( (binary_expression "param_1 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }" { (expression_statement "(*(code *)PTR_free_000afd08)(*param_2);" (call_expression "(*(code *)PTR_free_000afd08)(*param_2)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_2)" ( (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "puVar10 = PTR_xstrdup_000af48c;" (assignment_expression "puVar10 = PTR_xstrdup_000af48c" identifier = identifier) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "uVar3 = (*(code *)puVar10)(param_1);" (assignment_expression "uVar3 = (*(code *)puVar10)(param_1)" identifier = (call_expression "(*(code *)puVar10)(param_1)" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar10 = PTR_free_000afd08;" (assignment_expression "puVar10 = PTR_free_000afd08" identifier = identifier) ;) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar10)(local_20);" (call_expression "(*(code *)puVar10)(local_20)" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_20)" ( identifier ))) ;) (goto_statement "goto LAB_0002bae8;" goto statement_identifier ;) })) })) (expression_statement "iVar5 = 0xf;" (assignment_expression "iVar5 = 0xf" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_free_000afd08)(local_20);" (call_expression "(*(code *)PTR_free_000afd08)(local_20)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_20)" ( identifier ))) ;) })) }))) (labeled_statement "LAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar5;\n  }" { (return_statement "return iVar5;" return identifier ;) }))) (expression_statement "iVar8 = local_1c;" (assignment_expression "iVar8 = local_1c" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_000afbd4;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000afbd4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000afbd4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000afbd4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000afbd4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000afbd4" * (cast_expression "(code *)PTR___stack_chk_fail_000afbd4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_54 = puVar1;" (assignment_expression "puStack_54 = puVar1" identifier = identifier) ;) (expression_statement "piVar9 = *(int **)(puVar10 + 0x840f4);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0x840f4)" identifier = (pointer_expression "*(int **)(puVar10 + 0x840f4)" * (cast_expression "(int **)(puVar10 + 0x840f4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x840f4)" ( (binary_expression "puVar10 + 0x840f4" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar9;" (assignment_expression "iStack_5c = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iStack_58 = iVar5;" (assignment_expression "iStack_58 = iVar5" identifier = identifier) ;) (expression_statement "puStack_50 = param_1;" (assignment_expression "puStack_50 = param_1" identifier = identifier) ;) (expression_statement "puStack_4c = param_2;" (assignment_expression "puStack_4c = param_2" identifier = identifier) ;) (expression_statement "uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);" (assignment_expression "uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc)" identifier = (call_expression "FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc)" identifier (argument_list "(*(int *)(puVar10 + 0x83924) + -0x14fc)" ( (binary_expression "*(int *)(puVar10 + 0x83924) + -0x14fc" (pointer_expression "*(int *)(puVar10 + 0x83924)" * (cast_expression "(int *)(puVar10 + 0x83924)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x83924)" ( (binary_expression "puVar10 + 0x83924" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);" (assignment_expression "uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3)" identifier = (call_expression "(**(code **)(puVar10 + 0x84120))(uVar3)" (parenthesized_expression "(**(code **)(puVar10 + 0x84120))" ( (pointer_expression "**(code **)(puVar10 + 0x84120)" * (pointer_expression "*(code **)(puVar10 + 0x84120)" * (cast_expression "(code **)(puVar10 + 0x84120)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x84120)" ( (binary_expression "puVar10 + 0x84120" identifier + number_literal) ))))) )) (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));" (assignment_expression "iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" identifier = (call_expression "fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" identifier (argument_list "(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" ( identifier , identifier , identifier , identifier , (pointer_expression "*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8)" * (cast_expression "(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x83920) + 0x40b8)" ( (binary_expression "*(int *)(puVar10 + 0x83920) + 0x40b8" (pointer_expression "*(int *)(puVar10 + 0x83920)" * (cast_expression "(int *)(puVar10 + 0x83920)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x83920)" ( (binary_expression "puVar10 + 0x83920" identifier + number_literal) )))) + number_literal) )))) )))) ;) (if_statement "if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" { (expression_statement "iVar5 = 0x2c;" (assignment_expression "iVar5 = 0x2c" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar10 + 0x841c0))(uVar3);" (call_expression "(**(code **)(puVar10 + 0x841c0))(uVar3)" (parenthesized_expression "(**(code **)(puVar10 + 0x841c0))" ( (pointer_expression "**(code **)(puVar10 + 0x841c0)" * (pointer_expression "*(code **)(puVar10 + 0x841c0)" * (cast_expression "(code **)(puVar10 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841c0)" ( (binary_expression "puVar10 + 0x841c0" identifier + number_literal) ))))) )) (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "*(undefined4 *)((int)puVar4 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar4 + 4) = 0" (pointer_expression "*(undefined4 *)((int)puVar4 + 4)" * (cast_expression "(undefined4 *)((int)puVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 4)" ( (binary_expression "(int)puVar4 + 4" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)puVar4 = 0;" (assignment_expression "*(undefined4 *)puVar4 = 0" (pointer_expression "*(undefined4 *)puVar4" * (cast_expression "(undefined4 *)puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }) (else_clause "else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" else (compound_statement "{\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" { (expression_statement "(**(code **)(puVar10 + 0x841c0))();" (call_expression "(**(code **)(puVar10 + 0x841c0))()" (parenthesized_expression "(**(code **)(puVar10 + 0x841c0))" ( (pointer_expression "**(code **)(puVar10 + 0x841c0)" * (pointer_expression "*(code **)(puVar10 + 0x841c0)" * (cast_expression "(code **)(puVar10 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841c0)" ( (binary_expression "puVar10 + 0x841c0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = ftp_response(iVar8,&pcStack_60);" (assignment_expression "iVar5 = ftp_response(iVar8,&pcStack_60)" identifier = (call_expression "ftp_response(iVar8,&pcStack_60)" identifier (argument_list "(iVar8,&pcStack_60)" ( identifier , (pointer_expression "&pcStack_60" & identifier) )))) ;) (expression_statement "pcVar2 = pcStack_60;" (assignment_expression "pcVar2 = pcStack_60" identifier = identifier) ;) (if_statement "if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }" if (parenthesized_expression "(iVar5 == 7)" ( (binary_expression "iVar5 == 7" identifier == number_literal) )) (compound_statement "{\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }" { (if_statement "if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" if (parenthesized_expression "(*pcStack_60 == '5')" ( (binary_expression "*pcStack_60 == '5'" (pointer_expression "*pcStack_60" * identifier) == (char_literal "'5'" ' character ')) )) (compound_statement "{\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }" { (expression_statement "pcVar11 = *(code **)(puVar10 + 0x841c0);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x841c0)" identifier = (pointer_expression "*(code **)(puVar10 + 0x841c0)" * (cast_expression "(code **)(puVar10 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841c0)" ( (binary_expression "puVar10 + 0x841c0" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" else (compound_statement "{\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" { (expression_statement "piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();" (assignment_expression "piVar7 = (int *)(**(code **)(puVar10 + 0x84348))()" identifier = (cast_expression "(int *)(**(code **)(puVar10 + 0x84348))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar10 + 0x84348))()" (parenthesized_expression "(**(code **)(puVar10 + 0x84348))" ( (pointer_expression "**(code **)(puVar10 + 0x84348)" * (pointer_expression "*(code **)(puVar10 + 0x84348)" * (cast_expression "(code **)(puVar10 + 0x84348)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x84348)" ( (binary_expression "puVar10 + 0x84348" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar7 = 0;" (assignment_expression "*piVar7 = 0" (pointer_expression "*piVar7" * identifier) = number_literal) ;) (expression_statement "uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);" (assignment_expression "uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10)" identifier = (call_expression "(**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10)" (parenthesized_expression "(**(code **)(puVar10 + 0x841f4))" ( (pointer_expression "**(code **)(puVar10 + 0x841f4)" * (pointer_expression "*(code **)(puVar10 + 0x841f4)" * (cast_expression "(code **)(puVar10 + 0x841f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841f4)" ( (binary_expression "puVar10 + 0x841f4" identifier + number_literal) ))))) )) (argument_list "(pcVar2 + 4,0,10)" ( (binary_expression "pcVar2 + 4" identifier + number_literal) , number_literal , number_literal )))) ;) (expression_statement "iVar8 = *piVar7;" (assignment_expression "iVar8 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*puVar4 = uVar12;" (assignment_expression "*puVar4 = uVar12" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x841c0);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x841c0)" identifier = (pointer_expression "*(code **)(puVar10 + 0x841c0)" * (cast_expression "(code **)(puVar10 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841c0)" ( (binary_expression "puVar10 + 0x841c0" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }" { (expression_statement "(*pcVar11)(pcStack_60);" (call_expression "(*pcVar11)(pcStack_60)" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "(pcStack_60)" ( identifier ))) ;) (goto_statement "goto LAB_0002bc24;" goto statement_identifier ;) })) }))) (expression_statement "(*pcVar11)(pcStack_60);" (call_expression "(*pcVar11)(pcStack_60)" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "(pcStack_60)" ( identifier ))) ;) })) (expression_statement "*(undefined4 *)((int)puVar4 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar4 + 4) = 0" (pointer_expression "*(undefined4 *)((int)puVar4 + 4)" * (cast_expression "(undefined4 *)((int)puVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 4)" ( (binary_expression "(int)puVar4 + 4" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)puVar4 = 0;" (assignment_expression "*(undefined4 *)puVar4 = 0" (pointer_expression "*(undefined4 *)puVar4" * (cast_expression "(undefined4 *)puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }))) (labeled_statement "LAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }" statement_identifier : (if_statement "if (iStack_5c == *piVar9) {\n    return iVar5;\n  }" if (parenthesized_expression "(iStack_5c == *piVar9)" ( (binary_expression "iStack_5c == *piVar9" identifier == (pointer_expression "*piVar9" * identifier)) )) (compound_statement "{\n    return iVar5;\n  }" { (return_statement "return iVar5;" return identifier ;) }))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x8408c);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x8408c)" identifier = (pointer_expression "*(code **)(puVar10 + 0x8408c)" * (cast_expression "(code **)(puVar10 + 0x8408c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x8408c)" ( (binary_expression "puVar10 + 0x8408c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = iStack_5c;" (assignment_expression "iVar5 = iStack_5c" identifier = identifier) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar5 == 0) {\n    return 0x49;\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0x49;\n  }" { (return_statement "return 0x49;" return number_literal ;) })) (expression_statement "iVar8 = (**(code **)(pcVar11 + 0x83e84))();" (assignment_expression "iVar8 = (**(code **)(pcVar11 + 0x83e84))()" identifier = (call_expression "(**(code **)(pcVar11 + 0x83e84))()" (parenthesized_expression "(**(code **)(pcVar11 + 0x83e84))" ( (pointer_expression "**(code **)(pcVar11 + 0x83e84)" * (pointer_expression "*(code **)(pcVar11 + 0x83e84)" * (cast_expression "(code **)(pcVar11 + 0x83e84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x83e84)" ( (binary_expression "pcVar11 + 0x83e84" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }" { (expression_statement "iVar8 = (int)*(char *)(iVar5 + 5);" (assignment_expression "iVar8 = (int)*(char *)(iVar5 + 5)" identifier = (cast_expression "(int)*(char *)(iVar5 + 5)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(iVar5 + 5)" * (cast_expression "(char *)(iVar5 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 5)" ( (binary_expression "iVar5 + 5" identifier + number_literal) )))))) ;) (if_statement "if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }" { (if_statement "if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }" if (parenthesized_expression "(iVar8 - 0x61U < 0x1a)" ( (binary_expression "iVar8 - 0x61U < 0x1a" (binary_expression "iVar8 - 0x61U" identifier - number_literal) < number_literal) )) (compound_statement "{\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }" { (expression_statement "iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);" (assignment_expression "iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20)" identifier = (cast_expression "(int)(char)(*(char *)(iVar5 + 5) + -0x20)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(*(char *)(iVar5 + 5) + -0x20)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*(char *)(iVar5 + 5) + -0x20)" ( (binary_expression "*(char *)(iVar5 + 5) + -0x20" (pointer_expression "*(char *)(iVar5 + 5)" * (cast_expression "(char *)(iVar5 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 5)" ( (binary_expression "iVar5 + 5" identifier + number_literal) )))) + number_literal) ))))) ;) })) (return_statement "return iVar8;" return identifier ;) })) })) (return_statement "return 0x49;" return number_literal ;) })))
(translation_unit "uerr_t ftp_pwd(int csock,char **pwd)\n\n{\n  undefined *puVar1;\n  char **buf;\n  undefined8 *bufsize;\n  int iVar2;\n  uerr_t uVar3;\n  char *pcVar4;\n  int iVar5;\n  int *piVar6;\n  char **ret_line;\n  undefined4 in_a3;\n  int *piVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  double in_f12_13;\n  char *pcStack_60;\n  int iStack_5c;\n  uerr_t uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  char **ppcStack_4c;\n  char *respline;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  buf = (char **)ftp_request(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0);\n  bufsize = (undefined8 *)(*(code *)PTR_strlen_000afc68)(buf);\n  ret_line = buf;\n  iVar2 = fd_write(csock,(char *)buf,(int)bufsize,in_f12_13);\n  if (iVar2 < 0) {\n    uVar3 = WRITEFAILED;\n    (*(code *)PTR_free_000afd08)(buf);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    ret_line = &respline;\n    uVar3 = ftp_response(csock,ret_line);\n    puVar8 = PTR_s_hallenge__000af46c;\n    if (uVar3 == FTPOK) {\n      csock = (int)PTR_s_hallenge__000af46c;\n      if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }\n      uVar3 = FTPSRVERR;\n      (*(code *)PTR_free_000afd08)(respline);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return uVar3;\n  }\n  iVar2 = local_1c;\n  puVar8 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar7 = *(int **)(puVar8 + 0x840f4);\n  iStack_5c = *piVar7;\n  uStack_58 = uVar3;\n  puStack_50 = (undefined *)csock;\n  ppcStack_4c = pwd;\n  pcVar4 = ftp_request((char *)(*(int *)(puVar8 + 0x83924) + -0x14fc),(char *)ret_line);\n  iVar5 = (**(code **)(puVar8 + 0x84120))(pcVar4);\n  uVar10 = *(undefined8 *)(*(int *)(puVar8 + 0x83920) + 0x40b8);\n  iVar5 = fd_write(iVar2,pcVar4,iVar5,in_f12_13);\n  if (iVar5 < 0) {\n    uVar3 = WRITEFAILED;\n    (**(code **)(puVar8 + 0x841c0))(pcVar4);\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }\n  else {\n    (**(code **)(puVar8 + 0x841c0))();\n    uVar3 = ftp_response(iVar2,&pcStack_60);\n    pcVar4 = pcStack_60;\n    if (uVar3 == FTPOK) {\n      if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar9)(pcStack_60);\n    }\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar7) {\n    return uVar3;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x8408c);\n  iVar2 = iStack_5c;\n  (*pcVar9)();\n  if (iVar2 == 0) {\n    return 0x49;\n  }\n  iVar5 = (**(code **)(pcVar9 + 0x83e84))();\n  if (iVar5 == 0) {\n    uVar3 = (uerr_t)*(char *)(iVar2 + 5);\n    if (uVar3 != NOCONERROR) {\n      if (uVar3 - 0x61 < 0x1a) {\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }\n      return uVar3;\n    }\n  }\n  return 0x49;\n}\n\n" (function_definition "uerr_t ftp_pwd(int csock,char **pwd)\n\n{\n  undefined *puVar1;\n  char **buf;\n  undefined8 *bufsize;\n  int iVar2;\n  uerr_t uVar3;\n  char *pcVar4;\n  int iVar5;\n  int *piVar6;\n  char **ret_line;\n  undefined4 in_a3;\n  int *piVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  double in_f12_13;\n  char *pcStack_60;\n  int iStack_5c;\n  uerr_t uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  char **ppcStack_4c;\n  char *respline;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  buf = (char **)ftp_request(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0);\n  bufsize = (undefined8 *)(*(code *)PTR_strlen_000afc68)(buf);\n  ret_line = buf;\n  iVar2 = fd_write(csock,(char *)buf,(int)bufsize,in_f12_13);\n  if (iVar2 < 0) {\n    uVar3 = WRITEFAILED;\n    (*(code *)PTR_free_000afd08)(buf);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    ret_line = &respline;\n    uVar3 = ftp_response(csock,ret_line);\n    puVar8 = PTR_s_hallenge__000af46c;\n    if (uVar3 == FTPOK) {\n      csock = (int)PTR_s_hallenge__000af46c;\n      if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }\n      uVar3 = FTPSRVERR;\n      (*(code *)PTR_free_000afd08)(respline);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return uVar3;\n  }\n  iVar2 = local_1c;\n  puVar8 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar7 = *(int **)(puVar8 + 0x840f4);\n  iStack_5c = *piVar7;\n  uStack_58 = uVar3;\n  puStack_50 = (undefined *)csock;\n  ppcStack_4c = pwd;\n  pcVar4 = ftp_request((char *)(*(int *)(puVar8 + 0x83924) + -0x14fc),(char *)ret_line);\n  iVar5 = (**(code **)(puVar8 + 0x84120))(pcVar4);\n  uVar10 = *(undefined8 *)(*(int *)(puVar8 + 0x83920) + 0x40b8);\n  iVar5 = fd_write(iVar2,pcVar4,iVar5,in_f12_13);\n  if (iVar5 < 0) {\n    uVar3 = WRITEFAILED;\n    (**(code **)(puVar8 + 0x841c0))(pcVar4);\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }\n  else {\n    (**(code **)(puVar8 + 0x841c0))();\n    uVar3 = ftp_response(iVar2,&pcStack_60);\n    pcVar4 = pcStack_60;\n    if (uVar3 == FTPOK) {\n      if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar9)(pcStack_60);\n    }\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar7) {\n    return uVar3;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x8408c);\n  iVar2 = iStack_5c;\n  (*pcVar9)();\n  if (iVar2 == 0) {\n    return 0x49;\n  }\n  iVar5 = (**(code **)(pcVar9 + 0x83e84))();\n  if (iVar5 == 0) {\n    uVar3 = (uerr_t)*(char *)(iVar2 + 5);\n    if (uVar3 != NOCONERROR) {\n      if (uVar3 - 0x61 < 0x1a) {\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }\n      return uVar3;\n    }\n  }\n  return 0x49;\n}" type_identifier (function_declarator "ftp_pwd(int csock,char **pwd)" identifier (parameter_list "(int csock,char **pwd)" ( (parameter_declaration "int csock" primitive_type identifier) , (parameter_declaration "char **pwd" primitive_type (pointer_declarator "**pwd" * (pointer_declarator "*pwd" * identifier))) ))) (compound_statement "{\n  undefined *puVar1;\n  char **buf;\n  undefined8 *bufsize;\n  int iVar2;\n  uerr_t uVar3;\n  char *pcVar4;\n  int iVar5;\n  int *piVar6;\n  char **ret_line;\n  undefined4 in_a3;\n  int *piVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  double in_f12_13;\n  char *pcStack_60;\n  int iStack_5c;\n  uerr_t uStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  char **ppcStack_4c;\n  char *respline;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  buf = (char **)ftp_request(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0);\n  bufsize = (undefined8 *)(*(code *)PTR_strlen_000afc68)(buf);\n  ret_line = buf;\n  iVar2 = fd_write(csock,(char *)buf,(int)bufsize,in_f12_13);\n  if (iVar2 < 0) {\n    uVar3 = WRITEFAILED;\n    (*(code *)PTR_free_000afd08)(buf);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    ret_line = &respline;\n    uVar3 = ftp_response(csock,ret_line);\n    puVar8 = PTR_s_hallenge__000af46c;\n    if (uVar3 == FTPOK) {\n      csock = (int)PTR_s_hallenge__000af46c;\n      if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }\n      uVar3 = FTPSRVERR;\n      (*(code *)PTR_free_000afd08)(respline);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return uVar3;\n  }\n  iVar2 = local_1c;\n  puVar8 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar7 = *(int **)(puVar8 + 0x840f4);\n  iStack_5c = *piVar7;\n  uStack_58 = uVar3;\n  puStack_50 = (undefined *)csock;\n  ppcStack_4c = pwd;\n  pcVar4 = ftp_request((char *)(*(int *)(puVar8 + 0x83924) + -0x14fc),(char *)ret_line);\n  iVar5 = (**(code **)(puVar8 + 0x84120))(pcVar4);\n  uVar10 = *(undefined8 *)(*(int *)(puVar8 + 0x83920) + 0x40b8);\n  iVar5 = fd_write(iVar2,pcVar4,iVar5,in_f12_13);\n  if (iVar5 < 0) {\n    uVar3 = WRITEFAILED;\n    (**(code **)(puVar8 + 0x841c0))(pcVar4);\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }\n  else {\n    (**(code **)(puVar8 + 0x841c0))();\n    uVar3 = ftp_response(iVar2,&pcStack_60);\n    pcVar4 = pcStack_60;\n    if (uVar3 == FTPOK) {\n      if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar9)(pcStack_60);\n    }\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar7) {\n    return uVar3;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x8408c);\n  iVar2 = iStack_5c;\n  (*pcVar9)();\n  if (iVar2 == 0) {\n    return 0x49;\n  }\n  iVar5 = (**(code **)(pcVar9 + 0x83e84))();\n  if (iVar5 == 0) {\n    uVar3 = (uerr_t)*(char *)(iVar2 + 5);\n    if (uVar3 != NOCONERROR) {\n      if (uVar3 - 0x61 < 0x1a) {\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }\n      return uVar3;\n    }\n  }\n  return 0x49;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char **buf;" primitive_type (pointer_declarator "**buf" * (pointer_declarator "*buf" * identifier)) ;) (declaration "undefined8 *bufsize;" type_identifier (pointer_declarator "*bufsize" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uerr_t uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "char **ret_line;" primitive_type (pointer_declarator "**ret_line" * (pointer_declarator "*ret_line" * identifier)) ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (declaration "double in_f12_13;" primitive_type identifier ;) (declaration "char *pcStack_60;" primitive_type (pointer_declarator "*pcStack_60" * identifier) ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "uerr_t uStack_58;" type_identifier identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "char **ppcStack_4c;" primitive_type (pointer_declarator "**ppcStack_4c" * (pointer_declarator "*ppcStack_4c" * identifier)) ;) (declaration "char *respline;" primitive_type (pointer_declarator "*respline" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000afc3c" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000afc3c;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000afc3c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000afc3c" * (cast_expression "(int *)PTR___stack_chk_guard_000afc3c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "buf = (char **)ftp_request(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0);" (assignment_expression "buf = (char **)ftp_request(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0)" identifier = (cast_expression "(char **)ftp_request(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "ftp_request(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0)" identifier (argument_list "(PTR_s_hallenge__000af46c + -0x1500,(char *)0x0)" ( (binary_expression "PTR_s_hallenge__000af46c + -0x1500" identifier + number_literal) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "bufsize = (undefined8 *)(*(code *)PTR_strlen_000afc68)(buf);" (assignment_expression "bufsize = (undefined8 *)(*(code *)PTR_strlen_000afc68)(buf)" identifier = (cast_expression "(undefined8 *)(*(code *)PTR_strlen_000afc68)(buf)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_strlen_000afc68)(buf)" (parenthesized_expression "(*(code *)PTR_strlen_000afc68)" ( (pointer_expression "*(code *)PTR_strlen_000afc68" * (cast_expression "(code *)PTR_strlen_000afc68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(buf)" ( identifier ))))) ;) (expression_statement "ret_line = buf;" (assignment_expression "ret_line = buf" identifier = identifier) ;) (expression_statement "iVar2 = fd_write(csock,(char *)buf,(int)bufsize,in_f12_13);" (assignment_expression "iVar2 = fd_write(csock,(char *)buf,(int)bufsize,in_f12_13)" identifier = (call_expression "fd_write(csock,(char *)buf,(int)bufsize,in_f12_13)" identifier (argument_list "(csock,(char *)buf,(int)bufsize,in_f12_13)" ( identifier , (cast_expression "(char *)buf" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)bufsize" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (if_statement "if (iVar2 < 0) {\n    uVar3 = WRITEFAILED;\n    (*(code *)PTR_free_000afd08)(buf);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    ret_line = &respline;\n    uVar3 = ftp_response(csock,ret_line);\n    puVar8 = PTR_s_hallenge__000af46c;\n    if (uVar3 == FTPOK) {\n      csock = (int)PTR_s_hallenge__000af46c;\n      if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }\n      uVar3 = FTPSRVERR;\n      (*(code *)PTR_free_000afd08)(respline);\n    }\n  }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar3 = WRITEFAILED;\n    (*(code *)PTR_free_000afd08)(buf);\n  }" { (expression_statement "uVar3 = WRITEFAILED;" (assignment_expression "uVar3 = WRITEFAILED" identifier = identifier) ;) (expression_statement "(*(code *)PTR_free_000afd08)(buf);" (call_expression "(*(code *)PTR_free_000afd08)(buf)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(buf)" ( identifier ))) ;) }) (else_clause "else {\n    (*(code *)PTR_free_000afd08)();\n    ret_line = &respline;\n    uVar3 = ftp_response(csock,ret_line);\n    puVar8 = PTR_s_hallenge__000af46c;\n    if (uVar3 == FTPOK) {\n      csock = (int)PTR_s_hallenge__000af46c;\n      if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }\n      uVar3 = FTPSRVERR;\n      (*(code *)PTR_free_000afd08)(respline);\n    }\n  }" else (compound_statement "{\n    (*(code *)PTR_free_000afd08)();\n    ret_line = &respline;\n    uVar3 = ftp_response(csock,ret_line);\n    puVar8 = PTR_s_hallenge__000af46c;\n    if (uVar3 == FTPOK) {\n      csock = (int)PTR_s_hallenge__000af46c;\n      if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }\n      uVar3 = FTPSRVERR;\n      (*(code *)PTR_free_000afd08)(respline);\n    }\n  }" { (expression_statement "(*(code *)PTR_free_000afd08)();" (call_expression "(*(code *)PTR_free_000afd08)()" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "ret_line = &respline;" (assignment_expression "ret_line = &respline" identifier = (pointer_expression "&respline" & identifier)) ;) (expression_statement "uVar3 = ftp_response(csock,ret_line);" (assignment_expression "uVar3 = ftp_response(csock,ret_line)" identifier = (call_expression "ftp_response(csock,ret_line)" identifier (argument_list "(csock,ret_line)" ( identifier , identifier )))) ;) (expression_statement "puVar8 = PTR_s_hallenge__000af46c;" (assignment_expression "puVar8 = PTR_s_hallenge__000af46c" identifier = identifier) ;) (if_statement "if (uVar3 == FTPOK) {\n      csock = (int)PTR_s_hallenge__000af46c;\n      if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }\n      uVar3 = FTPSRVERR;\n      (*(code *)PTR_free_000afd08)(respline);\n    }" if (parenthesized_expression "(uVar3 == FTPOK)" ( (binary_expression "uVar3 == FTPOK" identifier == identifier) )) (compound_statement "{\n      csock = (int)PTR_s_hallenge__000af46c;\n      if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }\n      uVar3 = FTPSRVERR;\n      (*(code *)PTR_free_000afd08)(respline);\n    }" { (expression_statement "csock = (int)PTR_s_hallenge__000af46c;" (assignment_expression "csock = (int)PTR_s_hallenge__000af46c" identifier = (cast_expression "(int)PTR_s_hallenge__000af46c" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (*respline != '5') {\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }" if (parenthesized_expression "(*respline != '5')" ( (binary_expression "*respline != '5'" (pointer_expression "*respline" * identifier) != (char_literal "'5'" ' character ')) )) (compound_statement "{\n        (*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);\n        ret_line = (char **)(puVar8 + -0x3d0);\n        csock = (*(code *)PTR_strtok_000afba8)(0);\n        if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }\n      }" { (expression_statement "(*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0);" (call_expression "(*(code *)PTR_strtok_000afba8)(respline,PTR_s_hallenge__000af46c + -0x3d0)" (parenthesized_expression "(*(code *)PTR_strtok_000afba8)" ( (pointer_expression "*(code *)PTR_strtok_000afba8" * (cast_expression "(code *)PTR_strtok_000afba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(respline,PTR_s_hallenge__000af46c + -0x3d0)" ( identifier , (binary_expression "PTR_s_hallenge__000af46c + -0x3d0" identifier + number_literal) ))) ;) (expression_statement "ret_line = (char **)(puVar8 + -0x3d0);" (assignment_expression "ret_line = (char **)(puVar8 + -0x3d0)" identifier = (cast_expression "(char **)(puVar8 + -0x3d0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + -0x3d0)" ( (binary_expression "puVar8 + -0x3d0" identifier + number_literal) )))) ;) (expression_statement "csock = (*(code *)PTR_strtok_000afba8)(0);" (assignment_expression "csock = (*(code *)PTR_strtok_000afba8)(0)" identifier = (call_expression "(*(code *)PTR_strtok_000afba8)(0)" (parenthesized_expression "(*(code *)PTR_strtok_000afba8)" ( (pointer_expression "*(code *)PTR_strtok_000afba8" * (cast_expression "(code *)PTR_strtok_000afba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal )))) ;) (if_statement "if ((undefined *)csock != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }" if (parenthesized_expression "((undefined *)csock != (undefined *)0x0)" ( (binary_expression "(undefined *)csock != (undefined *)0x0" (cast_expression "(undefined *)csock" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (*(code *)PTR_free_000afd08)(*pwd);\n          puVar8 = PTR_xstrdup_000af48c;\n          *pwd = (char *)0x0;\n          pcVar4 = (char *)(*(code *)puVar8)(csock);\n          puVar8 = PTR_free_000afd08;\n          *pwd = pcVar4;\n          (*(code *)puVar8)(respline);\n          goto LAB_0002bae8;\n        }" { (expression_statement "(*(code *)PTR_free_000afd08)(*pwd);" (call_expression "(*(code *)PTR_free_000afd08)(*pwd)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*pwd)" ( (pointer_expression "*pwd" * identifier) ))) ;) (expression_statement "puVar8 = PTR_xstrdup_000af48c;" (assignment_expression "puVar8 = PTR_xstrdup_000af48c" identifier = identifier) ;) (expression_statement "*pwd = (char *)0x0;" (assignment_expression "*pwd = (char *)0x0" (pointer_expression "*pwd" * identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar4 = (char *)(*(code *)puVar8)(csock);" (assignment_expression "pcVar4 = (char *)(*(code *)puVar8)(csock)" identifier = (cast_expression "(char *)(*(code *)puVar8)(csock)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)puVar8)(csock)" (parenthesized_expression "(*(code *)puVar8)" ( (pointer_expression "*(code *)puVar8" * (cast_expression "(code *)puVar8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(csock)" ( identifier ))))) ;) (expression_statement "puVar8 = PTR_free_000afd08;" (assignment_expression "puVar8 = PTR_free_000afd08" identifier = identifier) ;) (expression_statement "*pwd = pcVar4;" (assignment_expression "*pwd = pcVar4" (pointer_expression "*pwd" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar8)(respline);" (call_expression "(*(code *)puVar8)(respline)" (parenthesized_expression "(*(code *)puVar8)" ( (pointer_expression "*(code *)puVar8" * (cast_expression "(code *)puVar8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(respline)" ( identifier ))) ;) (goto_statement "goto LAB_0002bae8;" goto statement_identifier ;) })) })) (expression_statement "uVar3 = FTPSRVERR;" (assignment_expression "uVar3 = FTPSRVERR" identifier = identifier) ;) (expression_statement "(*(code *)PTR_free_000afd08)(respline);" (call_expression "(*(code *)PTR_free_000afd08)(respline)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(respline)" ( identifier ))) ;) })) }))) (labeled_statement "LAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) (expression_statement "iVar2 = local_1c;" (assignment_expression "iVar2 = local_1c" identifier = identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_000afbd4;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000afbd4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000afbd4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000afbd4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000afbd4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000afbd4" * (cast_expression "(code *)PTR___stack_chk_fail_000afbd4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_54 = puVar1;" (assignment_expression "puStack_54 = puVar1" identifier = identifier) ;) (expression_statement "piVar7 = *(int **)(puVar8 + 0x840f4);" (assignment_expression "piVar7 = *(int **)(puVar8 + 0x840f4)" identifier = (pointer_expression "*(int **)(puVar8 + 0x840f4)" * (cast_expression "(int **)(puVar8 + 0x840f4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x840f4)" ( (binary_expression "puVar8 + 0x840f4" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar7;" (assignment_expression "iStack_5c = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "uStack_58 = uVar3;" (assignment_expression "uStack_58 = uVar3" identifier = identifier) ;) (expression_statement "puStack_50 = (undefined *)csock;" (assignment_expression "puStack_50 = (undefined *)csock" identifier = (cast_expression "(undefined *)csock" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ppcStack_4c = pwd;" (assignment_expression "ppcStack_4c = pwd" identifier = identifier) ;) (expression_statement "pcVar4 = ftp_request((char *)(*(int *)(puVar8 + 0x83924) + -0x14fc),(char *)ret_line);" (assignment_expression "pcVar4 = ftp_request((char *)(*(int *)(puVar8 + 0x83924) + -0x14fc),(char *)ret_line)" identifier = (call_expression "ftp_request((char *)(*(int *)(puVar8 + 0x83924) + -0x14fc),(char *)ret_line)" identifier (argument_list "((char *)(*(int *)(puVar8 + 0x83924) + -0x14fc),(char *)ret_line)" ( (cast_expression "(char *)(*(int *)(puVar8 + 0x83924) + -0x14fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar8 + 0x83924) + -0x14fc)" ( (binary_expression "*(int *)(puVar8 + 0x83924) + -0x14fc" (pointer_expression "*(int *)(puVar8 + 0x83924)" * (cast_expression "(int *)(puVar8 + 0x83924)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x83924)" ( (binary_expression "puVar8 + 0x83924" identifier + number_literal) )))) + number_literal) ))) , (cast_expression "(char *)ret_line" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iVar5 = (**(code **)(puVar8 + 0x84120))(pcVar4);" (assignment_expression "iVar5 = (**(code **)(puVar8 + 0x84120))(pcVar4)" identifier = (call_expression "(**(code **)(puVar8 + 0x84120))(pcVar4)" (parenthesized_expression "(**(code **)(puVar8 + 0x84120))" ( (pointer_expression "**(code **)(puVar8 + 0x84120)" * (pointer_expression "*(code **)(puVar8 + 0x84120)" * (cast_expression "(code **)(puVar8 + 0x84120)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x84120)" ( (binary_expression "puVar8 + 0x84120" identifier + number_literal) ))))) )) (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "uVar10 = *(undefined8 *)(*(int *)(puVar8 + 0x83920) + 0x40b8);" (assignment_expression "uVar10 = *(undefined8 *)(*(int *)(puVar8 + 0x83920) + 0x40b8)" identifier = (pointer_expression "*(undefined8 *)(*(int *)(puVar8 + 0x83920) + 0x40b8)" * (cast_expression "(undefined8 *)(*(int *)(puVar8 + 0x83920) + 0x40b8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar8 + 0x83920) + 0x40b8)" ( (binary_expression "*(int *)(puVar8 + 0x83920) + 0x40b8" (pointer_expression "*(int *)(puVar8 + 0x83920)" * (cast_expression "(int *)(puVar8 + 0x83920)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x83920)" ( (binary_expression "puVar8 + 0x83920" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar5 = fd_write(iVar2,pcVar4,iVar5,in_f12_13);" (assignment_expression "iVar5 = fd_write(iVar2,pcVar4,iVar5,in_f12_13)" identifier = (call_expression "fd_write(iVar2,pcVar4,iVar5,in_f12_13)" identifier (argument_list "(iVar2,pcVar4,iVar5,in_f12_13)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 < 0) {\n    uVar3 = WRITEFAILED;\n    (**(code **)(puVar8 + 0x841c0))(pcVar4);\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }\n  else {\n    (**(code **)(puVar8 + 0x841c0))();\n    uVar3 = ftp_response(iVar2,&pcStack_60);\n    pcVar4 = pcStack_60;\n    if (uVar3 == FTPOK) {\n      if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar9)(pcStack_60);\n    }\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar3 = WRITEFAILED;\n    (**(code **)(puVar8 + 0x841c0))(pcVar4);\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }" { (expression_statement "uVar3 = WRITEFAILED;" (assignment_expression "uVar3 = WRITEFAILED" identifier = identifier) ;) (expression_statement "(**(code **)(puVar8 + 0x841c0))(pcVar4);" (call_expression "(**(code **)(puVar8 + 0x841c0))(pcVar4)" (parenthesized_expression "(**(code **)(puVar8 + 0x841c0))" ( (pointer_expression "**(code **)(puVar8 + 0x841c0)" * (pointer_expression "*(code **)(puVar8 + 0x841c0)" * (cast_expression "(code **)(puVar8 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x841c0)" ( (binary_expression "puVar8 + 0x841c0" identifier + number_literal) ))))) )) (argument_list "(pcVar4)" ( identifier ))) ;) (expression_statement "*(undefined4 *)((int)bufsize + 4) = 0;" (assignment_expression "*(undefined4 *)((int)bufsize + 4) = 0" (pointer_expression "*(undefined4 *)((int)bufsize + 4)" * (cast_expression "(undefined4 *)((int)bufsize + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)bufsize + 4)" ( (binary_expression "(int)bufsize + 4" (cast_expression "(int)bufsize" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)bufsize = 0;" (assignment_expression "*(undefined4 *)bufsize = 0" (pointer_expression "*(undefined4 *)bufsize" * (cast_expression "(undefined4 *)bufsize" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }) (else_clause "else {\n    (**(code **)(puVar8 + 0x841c0))();\n    uVar3 = ftp_response(iVar2,&pcStack_60);\n    pcVar4 = pcStack_60;\n    if (uVar3 == FTPOK) {\n      if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar9)(pcStack_60);\n    }\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }" else (compound_statement "{\n    (**(code **)(puVar8 + 0x841c0))();\n    uVar3 = ftp_response(iVar2,&pcStack_60);\n    pcVar4 = pcStack_60;\n    if (uVar3 == FTPOK) {\n      if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar9)(pcStack_60);\n    }\n    *(undefined4 *)((int)bufsize + 4) = 0;\n    *(undefined4 *)bufsize = 0;\n  }" { (expression_statement "(**(code **)(puVar8 + 0x841c0))();" (call_expression "(**(code **)(puVar8 + 0x841c0))()" (parenthesized_expression "(**(code **)(puVar8 + 0x841c0))" ( (pointer_expression "**(code **)(puVar8 + 0x841c0)" * (pointer_expression "*(code **)(puVar8 + 0x841c0)" * (cast_expression "(code **)(puVar8 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x841c0)" ( (binary_expression "puVar8 + 0x841c0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar3 = ftp_response(iVar2,&pcStack_60);" (assignment_expression "uVar3 = ftp_response(iVar2,&pcStack_60)" identifier = (call_expression "ftp_response(iVar2,&pcStack_60)" identifier (argument_list "(iVar2,&pcStack_60)" ( identifier , (pointer_expression "&pcStack_60" & identifier) )))) ;) (expression_statement "pcVar4 = pcStack_60;" (assignment_expression "pcVar4 = pcStack_60" identifier = identifier) ;) (if_statement "if (uVar3 == FTPOK) {\n      if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar9)(pcStack_60);\n    }" if (parenthesized_expression "(uVar3 == FTPOK)" ( (binary_expression "uVar3 == FTPOK" identifier == identifier) )) (compound_statement "{\n      if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar9)(pcStack_60);\n    }" { (if_statement "if (*pcStack_60 == '5') {\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }\n      else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" if (parenthesized_expression "(*pcStack_60 == '5')" ( (binary_expression "*pcStack_60 == '5'" (pointer_expression "*pcStack_60" * identifier) == (char_literal "'5'" ' character ')) )) (compound_statement "{\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n      }" { (expression_statement "pcVar9 = *(code **)(puVar8 + 0x841c0);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x841c0)" identifier = (pointer_expression "*(code **)(puVar8 + 0x841c0)" * (cast_expression "(code **)(puVar8 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x841c0)" ( (binary_expression "puVar8 + 0x841c0" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" else (compound_statement "{\n        piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();\n        *piVar6 = 0;\n        uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);\n        iVar2 = *piVar6;\n        *bufsize = uVar10;\n        pcVar9 = *(code **)(puVar8 + 0x841c0);\n        if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" { (expression_statement "piVar6 = (int *)(**(code **)(puVar8 + 0x84348))();" (assignment_expression "piVar6 = (int *)(**(code **)(puVar8 + 0x84348))()" identifier = (cast_expression "(int *)(**(code **)(puVar8 + 0x84348))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar8 + 0x84348))()" (parenthesized_expression "(**(code **)(puVar8 + 0x84348))" ( (pointer_expression "**(code **)(puVar8 + 0x84348)" * (pointer_expression "*(code **)(puVar8 + 0x84348)" * (cast_expression "(code **)(puVar8 + 0x84348)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x84348)" ( (binary_expression "puVar8 + 0x84348" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10);" (assignment_expression "uVar10 = (**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10)" identifier = (call_expression "(**(code **)(puVar8 + 0x841f4))(pcVar4 + 4,0,10,in_a3,uVar10)" (parenthesized_expression "(**(code **)(puVar8 + 0x841f4))" ( (pointer_expression "**(code **)(puVar8 + 0x841f4)" * (pointer_expression "*(code **)(puVar8 + 0x841f4)" * (cast_expression "(code **)(puVar8 + 0x841f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x841f4)" ( (binary_expression "puVar8 + 0x841f4" identifier + number_literal) ))))) )) (argument_list "(pcVar4 + 4,0,10,in_a3,uVar10)" ( (binary_expression "pcVar4 + 4" identifier + number_literal) , number_literal , number_literal , identifier , identifier )))) ;) (expression_statement "iVar2 = *piVar6;" (assignment_expression "iVar2 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*bufsize = uVar10;" (assignment_expression "*bufsize = uVar10" (pointer_expression "*bufsize" * identifier) = identifier) ;) (expression_statement "pcVar9 = *(code **)(puVar8 + 0x841c0);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x841c0)" identifier = (pointer_expression "*(code **)(puVar8 + 0x841c0)" * (cast_expression "(code **)(puVar8 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x841c0)" ( (binary_expression "puVar8 + 0x841c0" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          (*pcVar9)(pcStack_60);\n          goto LAB_0002bc24;\n        }" { (expression_statement "(*pcVar9)(pcStack_60);" (call_expression "(*pcVar9)(pcStack_60)" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "(pcStack_60)" ( identifier ))) ;) (goto_statement "goto LAB_0002bc24;" goto statement_identifier ;) })) }))) (expression_statement "(*pcVar9)(pcStack_60);" (call_expression "(*pcVar9)(pcStack_60)" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "(pcStack_60)" ( identifier ))) ;) })) (expression_statement "*(undefined4 *)((int)bufsize + 4) = 0;" (assignment_expression "*(undefined4 *)((int)bufsize + 4) = 0" (pointer_expression "*(undefined4 *)((int)bufsize + 4)" * (cast_expression "(undefined4 *)((int)bufsize + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)bufsize + 4)" ( (binary_expression "(int)bufsize + 4" (cast_expression "(int)bufsize" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)bufsize = 0;" (assignment_expression "*(undefined4 *)bufsize = 0" (pointer_expression "*(undefined4 *)bufsize" * (cast_expression "(undefined4 *)bufsize" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }))) (labeled_statement "LAB_0002bc24:\n  if (iStack_5c == *piVar7) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (iStack_5c == *piVar7) {\n    return uVar3;\n  }" if (parenthesized_expression "(iStack_5c == *piVar7)" ( (binary_expression "iStack_5c == *piVar7" identifier == (pointer_expression "*piVar7" * identifier)) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) (expression_statement "pcVar9 = *(code **)(puVar8 + 0x8408c);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x8408c)" identifier = (pointer_expression "*(code **)(puVar8 + 0x8408c)" * (cast_expression "(code **)(puVar8 + 0x8408c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x8408c)" ( (binary_expression "puVar8 + 0x8408c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = iStack_5c;" (assignment_expression "iVar2 = iStack_5c" identifier = identifier) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar2 == 0) {\n    return 0x49;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0x49;\n  }" { (return_statement "return 0x49;" return number_literal ;) })) (expression_statement "iVar5 = (**(code **)(pcVar9 + 0x83e84))();" (assignment_expression "iVar5 = (**(code **)(pcVar9 + 0x83e84))()" identifier = (call_expression "(**(code **)(pcVar9 + 0x83e84))()" (parenthesized_expression "(**(code **)(pcVar9 + 0x83e84))" ( (pointer_expression "**(code **)(pcVar9 + 0x83e84)" * (pointer_expression "*(code **)(pcVar9 + 0x83e84)" * (cast_expression "(code **)(pcVar9 + 0x83e84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x83e84)" ( (binary_expression "pcVar9 + 0x83e84" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n    uVar3 = (uerr_t)*(char *)(iVar2 + 5);\n    if (uVar3 != NOCONERROR) {\n      if (uVar3 - 0x61 < 0x1a) {\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }\n      return uVar3;\n    }\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = (uerr_t)*(char *)(iVar2 + 5);\n    if (uVar3 != NOCONERROR) {\n      if (uVar3 - 0x61 < 0x1a) {\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }\n      return uVar3;\n    }\n  }" { (expression_statement "uVar3 = (uerr_t)*(char *)(iVar2 + 5);" (assignment_expression "uVar3 = (uerr_t)*(char *)(iVar2 + 5)" identifier = (binary_expression "(uerr_t)*(char *)(iVar2 + 5)" (parenthesized_expression "(uerr_t)" ( identifier )) * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 != NOCONERROR) {\n      if (uVar3 - 0x61 < 0x1a) {\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }\n      return uVar3;\n    }" if (parenthesized_expression "(uVar3 != NOCONERROR)" ( (binary_expression "uVar3 != NOCONERROR" identifier != identifier) )) (compound_statement "{\n      if (uVar3 - 0x61 < 0x1a) {\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }\n      return uVar3;\n    }" { (if_statement "if (uVar3 - 0x61 < 0x1a) {\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }" if (parenthesized_expression "(uVar3 - 0x61 < 0x1a)" ( (binary_expression "uVar3 - 0x61 < 0x1a" (binary_expression "uVar3 - 0x61" identifier - number_literal) < number_literal) )) (compound_statement "{\n        uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);\n      }" { (expression_statement "uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20);" (assignment_expression "uVar3 = (uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20)" identifier = (call_expression "(uerr_t)(char)(*(char *)(iVar2 + 5) + -0x20)" (call_expression "(uerr_t)(char)" (parenthesized_expression "(uerr_t)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(*(char *)(iVar2 + 5) + -0x20)" ( (binary_expression "*(char *)(iVar2 + 5) + -0x20" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) + number_literal) )))) ;) })) (return_statement "return uVar3;" return identifier ;) })) })) (return_statement "return 0x49;" return number_literal ;) })))
(translation_unit "int ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  undefined4 uVar3;\n  undefined8 *puVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  char *pcStack_60;\n  int iStack_5c;\n  int iStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  undefined4 *puStack_4c;\n  char *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);\n  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);\n  iVar5 = fd_write(param_1,uVar3);\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }\n  iVar8 = local_1c;\n  puVar10 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar9 = *(int **)(puVar10 + 0x840f4);\n  iStack_5c = *piVar9;\n  iStack_58 = iVar5;\n  puStack_50 = param_1;\n  puStack_4c = param_2;\n  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);\n  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);\n  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x8408c);\n  iVar5 = iStack_5c;\n  (*pcVar11)();\n  if (iVar5 == 0) {\n    return 0x49;\n  }\n  iVar8 = (**(code **)(pcVar11 + 0x83e84))();\n  if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }\n  return 0x49;\n}\n\n" (function_definition "int ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  undefined4 uVar3;\n  undefined8 *puVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  char *pcStack_60;\n  int iStack_5c;\n  int iStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  undefined4 *puStack_4c;\n  char *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);\n  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);\n  iVar5 = fd_write(param_1,uVar3);\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }\n  iVar8 = local_1c;\n  puVar10 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar9 = *(int **)(puVar10 + 0x840f4);\n  iStack_5c = *piVar9;\n  iStack_58 = iVar5;\n  puStack_50 = param_1;\n  puStack_4c = param_2;\n  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);\n  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);\n  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x8408c);\n  iVar5 = iStack_5c;\n  (*pcVar11)();\n  if (iVar5 == 0) {\n    return 0x49;\n  }\n  iVar8 = (**(code **)(pcVar11 + 0x83e84))();\n  if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }\n  return 0x49;\n}" primitive_type (function_declarator "ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "undefined *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  char *pcVar2;\n  undefined4 uVar3;\n  undefined8 *puVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  char *pcStack_60;\n  int iStack_5c;\n  int iStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  undefined4 *puStack_4c;\n  char *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);\n  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);\n  iVar5 = fd_write(param_1,uVar3);\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }\n  iVar8 = local_1c;\n  puVar10 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar9 = *(int **)(puVar10 + 0x840f4);\n  iStack_5c = *piVar9;\n  iStack_58 = iVar5;\n  puStack_50 = param_1;\n  puStack_4c = param_2;\n  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);\n  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);\n  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x8408c);\n  iVar5 = iStack_5c;\n  (*pcVar11)();\n  if (iVar5 == 0) {\n    return 0x49;\n  }\n  iVar8 = (**(code **)(pcVar11 + 0x83e84))();\n  if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }\n  return 0x49;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "char *pcStack_60;" primitive_type (pointer_declarator "*pcStack_60" * identifier) ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "int iStack_58;" primitive_type identifier ;) (declaration "undefined *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "undefined4 *puStack_4c;" type_identifier (pointer_declarator "*puStack_4c" * identifier) ;) (declaration "char *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000afc3c" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000afc3c;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000afc3c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000afc3c" * (cast_expression "(int *)PTR___stack_chk_guard_000afc3c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);" (assignment_expression "uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0)" identifier = (call_expression "FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0)" identifier (argument_list "(PTR_s_hallenge__000af46c + -0x1500,0)" ( (binary_expression "PTR_s_hallenge__000af46c + -0x1500" identifier + number_literal) , number_literal )))) ;) (expression_statement "puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);" (assignment_expression "puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3)" identifier = (cast_expression "(undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_strlen_000afc68)(uVar3)" (parenthesized_expression "(*(code *)PTR_strlen_000afc68)" ( (pointer_expression "*(code *)PTR_strlen_000afc68" * (cast_expression "(code *)PTR_strlen_000afc68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3)" ( identifier ))))) ;) (expression_statement "iVar5 = fd_write(param_1,uVar3);" (assignment_expression "iVar5 = fd_write(param_1,uVar3)" identifier = (call_expression "fd_write(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }" { (expression_statement "iVar5 = 0x2c;" (assignment_expression "iVar5 = 0x2c" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_free_000afd08)(uVar3);" (call_expression "(*(code *)PTR_free_000afd08)(uVar3)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3)" ( identifier ))) ;) }) (else_clause "else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" else (compound_statement "{\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" { (expression_statement "(*(code *)PTR_free_000afd08)();" (call_expression "(*(code *)PTR_free_000afd08)()" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = ftp_response(param_1,&local_20);" (assignment_expression "iVar5 = ftp_response(param_1,&local_20)" identifier = (call_expression "ftp_response(param_1,&local_20)" identifier (argument_list "(param_1,&local_20)" ( identifier , (pointer_expression "&local_20" & identifier) )))) ;) (expression_statement "puVar10 = PTR_s_hallenge__000af46c;" (assignment_expression "puVar10 = PTR_s_hallenge__000af46c" identifier = identifier) ;) (if_statement "if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }" if (parenthesized_expression "(iVar5 == 7)" ( (binary_expression "iVar5 == 7" identifier == number_literal) )) (compound_statement "{\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }" { (expression_statement "param_1 = PTR_s_hallenge__000af46c;" (assignment_expression "param_1 = PTR_s_hallenge__000af46c" identifier = identifier) ;) (if_statement "if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }" if (parenthesized_expression "(*local_20 != '5')" ( (binary_expression "*local_20 != '5'" (pointer_expression "*local_20" * identifier) != (char_literal "'5'" ' character ')) )) (compound_statement "{\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }" { (expression_statement "(*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);" (call_expression "(*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0)" (parenthesized_expression "(*(code *)PTR_strtok_000afba8)" ( (pointer_expression "*(code *)PTR_strtok_000afba8" * (cast_expression "(code *)PTR_strtok_000afba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_20,PTR_s_hallenge__000af46c + -0x3d0)" ( identifier , (binary_expression "PTR_s_hallenge__000af46c + -0x3d0" identifier + number_literal) ))) ;) (expression_statement "param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);" (assignment_expression "param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" identifier = (cast_expression "(undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" (parenthesized_expression "(*(code *)PTR_strtok_000afba8)" ( (pointer_expression "*(code *)PTR_strtok_000afba8" * (cast_expression "(code *)PTR_strtok_000afba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,puVar10 + -0x3d0)" ( number_literal , (binary_expression "puVar10 + -0x3d0" identifier + number_literal) ))))) ;) (if_statement "if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }" if (parenthesized_expression "(param_1 != (undefined *)0x0)" ( (binary_expression "param_1 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }" { (expression_statement "(*(code *)PTR_free_000afd08)(*param_2);" (call_expression "(*(code *)PTR_free_000afd08)(*param_2)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_2)" ( (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "puVar10 = PTR_xstrdup_000af48c;" (assignment_expression "puVar10 = PTR_xstrdup_000af48c" identifier = identifier) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "uVar3 = (*(code *)puVar10)(param_1);" (assignment_expression "uVar3 = (*(code *)puVar10)(param_1)" identifier = (call_expression "(*(code *)puVar10)(param_1)" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar10 = PTR_free_000afd08;" (assignment_expression "puVar10 = PTR_free_000afd08" identifier = identifier) ;) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar10)(local_20);" (call_expression "(*(code *)puVar10)(local_20)" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_20)" ( identifier ))) ;) (goto_statement "goto LAB_0002bae8;" goto statement_identifier ;) })) })) (expression_statement "iVar5 = 0xf;" (assignment_expression "iVar5 = 0xf" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_free_000afd08)(local_20);" (call_expression "(*(code *)PTR_free_000afd08)(local_20)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_20)" ( identifier ))) ;) })) }))) (labeled_statement "LAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar5;\n  }" { (return_statement "return iVar5;" return identifier ;) }))) (expression_statement "iVar8 = local_1c;" (assignment_expression "iVar8 = local_1c" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_000afbd4;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000afbd4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000afbd4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000afbd4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000afbd4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000afbd4" * (cast_expression "(code *)PTR___stack_chk_fail_000afbd4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_54 = puVar1;" (assignment_expression "puStack_54 = puVar1" identifier = identifier) ;) (expression_statement "piVar9 = *(int **)(puVar10 + 0x840f4);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0x840f4)" identifier = (pointer_expression "*(int **)(puVar10 + 0x840f4)" * (cast_expression "(int **)(puVar10 + 0x840f4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x840f4)" ( (binary_expression "puVar10 + 0x840f4" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar9;" (assignment_expression "iStack_5c = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iStack_58 = iVar5;" (assignment_expression "iStack_58 = iVar5" identifier = identifier) ;) (expression_statement "puStack_50 = param_1;" (assignment_expression "puStack_50 = param_1" identifier = identifier) ;) (expression_statement "puStack_4c = param_2;" (assignment_expression "puStack_4c = param_2" identifier = identifier) ;) (expression_statement "uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);" (assignment_expression "uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc)" identifier = (call_expression "FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc)" identifier (argument_list "(*(int *)(puVar10 + 0x83924) + -0x14fc)" ( (binary_expression "*(int *)(puVar10 + 0x83924) + -0x14fc" (pointer_expression "*(int *)(puVar10 + 0x83924)" * (cast_expression "(int *)(puVar10 + 0x83924)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x83924)" ( (binary_expression "puVar10 + 0x83924" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);" (assignment_expression "uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3)" identifier = (call_expression "(**(code **)(puVar10 + 0x84120))(uVar3)" (parenthesized_expression "(**(code **)(puVar10 + 0x84120))" ( (pointer_expression "**(code **)(puVar10 + 0x84120)" * (pointer_expression "*(code **)(puVar10 + 0x84120)" * (cast_expression "(code **)(puVar10 + 0x84120)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x84120)" ( (binary_expression "puVar10 + 0x84120" identifier + number_literal) ))))) )) (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));" (assignment_expression "iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" identifier = (call_expression "fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" identifier (argument_list "(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" ( identifier , identifier , identifier , identifier , (pointer_expression "*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8)" * (cast_expression "(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x83920) + 0x40b8)" ( (binary_expression "*(int *)(puVar10 + 0x83920) + 0x40b8" (pointer_expression "*(int *)(puVar10 + 0x83920)" * (cast_expression "(int *)(puVar10 + 0x83920)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x83920)" ( (binary_expression "puVar10 + 0x83920" identifier + number_literal) )))) + number_literal) )))) )))) ;) (if_statement "if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" { (expression_statement "iVar5 = 0x2c;" (assignment_expression "iVar5 = 0x2c" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar10 + 0x841c0))(uVar3);" (call_expression "(**(code **)(puVar10 + 0x841c0))(uVar3)" (parenthesized_expression "(**(code **)(puVar10 + 0x841c0))" ( (pointer_expression "**(code **)(puVar10 + 0x841c0)" * (pointer_expression "*(code **)(puVar10 + 0x841c0)" * (cast_expression "(code **)(puVar10 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841c0)" ( (binary_expression "puVar10 + 0x841c0" identifier + number_literal) ))))) )) (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "*(undefined4 *)((int)puVar4 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar4 + 4) = 0" (pointer_expression "*(undefined4 *)((int)puVar4 + 4)" * (cast_expression "(undefined4 *)((int)puVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 4)" ( (binary_expression "(int)puVar4 + 4" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)puVar4 = 0;" (assignment_expression "*(undefined4 *)puVar4 = 0" (pointer_expression "*(undefined4 *)puVar4" * (cast_expression "(undefined4 *)puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }) (else_clause "else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" else (compound_statement "{\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" { (expression_statement "(**(code **)(puVar10 + 0x841c0))();" (call_expression "(**(code **)(puVar10 + 0x841c0))()" (parenthesized_expression "(**(code **)(puVar10 + 0x841c0))" ( (pointer_expression "**(code **)(puVar10 + 0x841c0)" * (pointer_expression "*(code **)(puVar10 + 0x841c0)" * (cast_expression "(code **)(puVar10 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841c0)" ( (binary_expression "puVar10 + 0x841c0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = ftp_response(iVar8,&pcStack_60);" (assignment_expression "iVar5 = ftp_response(iVar8,&pcStack_60)" identifier = (call_expression "ftp_response(iVar8,&pcStack_60)" identifier (argument_list "(iVar8,&pcStack_60)" ( identifier , (pointer_expression "&pcStack_60" & identifier) )))) ;) (expression_statement "pcVar2 = pcStack_60;" (assignment_expression "pcVar2 = pcStack_60" identifier = identifier) ;) (if_statement "if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }" if (parenthesized_expression "(iVar5 == 7)" ( (binary_expression "iVar5 == 7" identifier == number_literal) )) (compound_statement "{\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }" { (if_statement "if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" if (parenthesized_expression "(*pcStack_60 == '5')" ( (binary_expression "*pcStack_60 == '5'" (pointer_expression "*pcStack_60" * identifier) == (char_literal "'5'" ' character ')) )) (compound_statement "{\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }" { (expression_statement "pcVar11 = *(code **)(puVar10 + 0x841c0);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x841c0)" identifier = (pointer_expression "*(code **)(puVar10 + 0x841c0)" * (cast_expression "(code **)(puVar10 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841c0)" ( (binary_expression "puVar10 + 0x841c0" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" else (compound_statement "{\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" { (expression_statement "piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();" (assignment_expression "piVar7 = (int *)(**(code **)(puVar10 + 0x84348))()" identifier = (cast_expression "(int *)(**(code **)(puVar10 + 0x84348))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar10 + 0x84348))()" (parenthesized_expression "(**(code **)(puVar10 + 0x84348))" ( (pointer_expression "**(code **)(puVar10 + 0x84348)" * (pointer_expression "*(code **)(puVar10 + 0x84348)" * (cast_expression "(code **)(puVar10 + 0x84348)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x84348)" ( (binary_expression "puVar10 + 0x84348" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar7 = 0;" (assignment_expression "*piVar7 = 0" (pointer_expression "*piVar7" * identifier) = number_literal) ;) (expression_statement "uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);" (assignment_expression "uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10)" identifier = (call_expression "(**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10)" (parenthesized_expression "(**(code **)(puVar10 + 0x841f4))" ( (pointer_expression "**(code **)(puVar10 + 0x841f4)" * (pointer_expression "*(code **)(puVar10 + 0x841f4)" * (cast_expression "(code **)(puVar10 + 0x841f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841f4)" ( (binary_expression "puVar10 + 0x841f4" identifier + number_literal) ))))) )) (argument_list "(pcVar2 + 4,0,10)" ( (binary_expression "pcVar2 + 4" identifier + number_literal) , number_literal , number_literal )))) ;) (expression_statement "iVar8 = *piVar7;" (assignment_expression "iVar8 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*puVar4 = uVar12;" (assignment_expression "*puVar4 = uVar12" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x841c0);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x841c0)" identifier = (pointer_expression "*(code **)(puVar10 + 0x841c0)" * (cast_expression "(code **)(puVar10 + 0x841c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x841c0)" ( (binary_expression "puVar10 + 0x841c0" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }" { (expression_statement "(*pcVar11)(pcStack_60);" (call_expression "(*pcVar11)(pcStack_60)" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "(pcStack_60)" ( identifier ))) ;) (goto_statement "goto LAB_0002bc24;" goto statement_identifier ;) })) }))) (expression_statement "(*pcVar11)(pcStack_60);" (call_expression "(*pcVar11)(pcStack_60)" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "(pcStack_60)" ( identifier ))) ;) })) (expression_statement "*(undefined4 *)((int)puVar4 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar4 + 4) = 0" (pointer_expression "*(undefined4 *)((int)puVar4 + 4)" * (cast_expression "(undefined4 *)((int)puVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 4)" ( (binary_expression "(int)puVar4 + 4" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)puVar4 = 0;" (assignment_expression "*(undefined4 *)puVar4 = 0" (pointer_expression "*(undefined4 *)puVar4" * (cast_expression "(undefined4 *)puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }))) (labeled_statement "LAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }" statement_identifier : (if_statement "if (iStack_5c == *piVar9) {\n    return iVar5;\n  }" if (parenthesized_expression "(iStack_5c == *piVar9)" ( (binary_expression "iStack_5c == *piVar9" identifier == (pointer_expression "*piVar9" * identifier)) )) (compound_statement "{\n    return iVar5;\n  }" { (return_statement "return iVar5;" return identifier ;) }))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x8408c);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x8408c)" identifier = (pointer_expression "*(code **)(puVar10 + 0x8408c)" * (cast_expression "(code **)(puVar10 + 0x8408c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x8408c)" ( (binary_expression "puVar10 + 0x8408c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = iStack_5c;" (assignment_expression "iVar5 = iStack_5c" identifier = identifier) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar5 == 0) {\n    return 0x49;\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0x49;\n  }" { (return_statement "return 0x49;" return number_literal ;) })) (expression_statement "iVar8 = (**(code **)(pcVar11 + 0x83e84))();" (assignment_expression "iVar8 = (**(code **)(pcVar11 + 0x83e84))()" identifier = (call_expression "(**(code **)(pcVar11 + 0x83e84))()" (parenthesized_expression "(**(code **)(pcVar11 + 0x83e84))" ( (pointer_expression "**(code **)(pcVar11 + 0x83e84)" * (pointer_expression "*(code **)(pcVar11 + 0x83e84)" * (cast_expression "(code **)(pcVar11 + 0x83e84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x83e84)" ( (binary_expression "pcVar11 + 0x83e84" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }" { (expression_statement "iVar8 = (int)*(char *)(iVar5 + 5);" (assignment_expression "iVar8 = (int)*(char *)(iVar5 + 5)" identifier = (cast_expression "(int)*(char *)(iVar5 + 5)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(iVar5 + 5)" * (cast_expression "(char *)(iVar5 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 5)" ( (binary_expression "iVar5 + 5" identifier + number_literal) )))))) ;) (if_statement "if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }" { (if_statement "if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }" if (parenthesized_expression "(iVar8 - 0x61U < 0x1a)" ( (binary_expression "iVar8 - 0x61U < 0x1a" (binary_expression "iVar8 - 0x61U" identifier - number_literal) < number_literal) )) (compound_statement "{\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }" { (expression_statement "iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);" (assignment_expression "iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20)" identifier = (cast_expression "(int)(char)(*(char *)(iVar5 + 5) + -0x20)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(*(char *)(iVar5 + 5) + -0x20)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*(char *)(iVar5 + 5) + -0x20)" ( (binary_expression "*(char *)(iVar5 + 5) + -0x20" (pointer_expression "*(char *)(iVar5 + 5)" * (cast_expression "(char *)(iVar5 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 5)" ( (binary_expression "iVar5 + 5" identifier + number_literal) )))) + number_literal) ))))) ;) })) (return_statement "return iVar8;" return identifier ;) })) })) (return_statement "return 0x49;" return number_literal ;) })))
(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 IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT )))) ;) (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 ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (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 ( LIT , (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) }))) (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 (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) })) (return_statement return IDENT ;) })) })) (return_statement return LIT ;) })))
(function_definition "int ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  undefined4 uVar3;\n  undefined8 *puVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  char *pcStack_60;\n  int iStack_5c;\n  int iStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  undefined4 *puStack_4c;\n  char *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);\n  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);\n  iVar5 = fd_write(param_1,uVar3);\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }\n  iVar8 = local_1c;\n  puVar10 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar9 = *(int **)(puVar10 + 0x840f4);\n  iStack_5c = *piVar9;\n  iStack_58 = iVar5;\n  puStack_50 = param_1;\n  puStack_4c = param_2;\n  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);\n  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);\n  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x8408c);\n  iVar5 = iStack_5c;\n  (*pcVar11)();\n  if (iVar5 == 0) {\n    return 0x49;\n  }\n  iVar8 = (**(code **)(pcVar11 + 0x83e84))();\n  if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }\n  return 0x49;\n}" (primitive_type "int") (function_declarator "ftp_pwd(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)" (identifier "ftp_pwd") (parameter_list "(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "undefined *param_1" (type_identifier "undefined") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  char *pcVar2;\n  undefined4 uVar3;\n  undefined8 *puVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  char *pcStack_60;\n  int iStack_5c;\n  int iStack_58;\n  undefined *puStack_54;\n  undefined *puStack_50;\n  undefined4 *puStack_4c;\n  char *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000afc3c;\n  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;\n  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);\n  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);\n  iVar5 = fd_write(param_1,uVar3);\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }\nLAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }\n  iVar8 = local_1c;\n  puVar10 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puStack_54 = puVar1;\n  piVar9 = *(int **)(puVar10 + 0x840f4);\n  iStack_5c = *piVar9;\n  iStack_58 = iVar5;\n  puStack_50 = param_1;\n  puStack_4c = param_2;\n  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);\n  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);\n  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));\n  if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\nLAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x8408c);\n  iVar5 = iStack_5c;\n  (*pcVar11)();\n  if (iVar5 == 0) {\n    return 0x49;\n  }\n  iVar8 = (**(code **)(pcVar11 + 0x83e84))();\n  if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }\n  return 0x49;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "code *pcVar11;" (type_identifier "code") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "undefined8 uVar12;" (type_identifier "undefined8") (identifier "uVar12") (; ";")) (declaration "char *pcStack_60;" (primitive_type "char") (pointer_declarator "*pcStack_60" (* "*") (identifier "pcStack_60")) (; ";")) (declaration "int iStack_5c;" (primitive_type "int") (identifier "iStack_5c") (; ";")) (declaration "int iStack_58;" (primitive_type "int") (identifier "iStack_58") (; ";")) (declaration "undefined *puStack_54;" (type_identifier "undefined") (pointer_declarator "*puStack_54" (* "*") (identifier "puStack_54")) (; ";")) (declaration "undefined *puStack_50;" (type_identifier "undefined") (pointer_declarator "*puStack_50" (* "*") (identifier "puStack_50")) (; ";")) (declaration "undefined4 *puStack_4c;" (type_identifier "undefined4") (pointer_declarator "*puStack_4c" (* "*") (identifier "puStack_4c")) (; ";")) (declaration "char *local_20;" (primitive_type "char") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000afc3c" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_000afc3c")) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000afc3c;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000afc3c" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000afc3c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000afc3c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000afc3c")))) (; ";")) (expression_statement "uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);" (assignment_expression "uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0)" (identifier "uVar3") (= "=") (call_expression "FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0)" (identifier "FUN_00029120") (argument_list "(PTR_s_hallenge__000af46c + -0x1500,0)" (( "(") (binary_expression "PTR_s_hallenge__000af46c + -0x1500" (identifier "PTR_s_hallenge__000af46c") (+ "+") (number_literal "-0x1500")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);" (assignment_expression "puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_strlen_000afc68)(uVar3)" (parenthesized_expression "(*(code *)PTR_strlen_000afc68)" (( "(") (pointer_expression "*(code *)PTR_strlen_000afc68" (* "*") (cast_expression "(code *)PTR_strlen_000afc68" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_000afc68"))) () ")")) (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))))) (; ";")) (expression_statement "iVar5 = fd_write(param_1,uVar3);" (assignment_expression "iVar5 = fd_write(param_1,uVar3)" (identifier "iVar5") (= "=") (call_expression "fd_write(param_1,uVar3)" (identifier "fd_write") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")")))) (; ";")) (if_statement "if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }\n  else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar5 = 0x2c;\n    (*(code *)PTR_free_000afd08)(uVar3);\n  }" ({ "{") (expression_statement "iVar5 = 0x2c;" (assignment_expression "iVar5 = 0x2c" (identifier "iVar5") (= "=") (number_literal "0x2c")) (; ";")) (expression_statement "(*(code *)PTR_free_000afd08)(uVar3);" (call_expression "(*(code *)PTR_free_000afd08)(uVar3)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" (( "(") (pointer_expression "*(code *)PTR_free_000afd08" (* "*") (cast_expression "(code *)PTR_free_000afd08" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000afd08"))) () ")")) (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" (else "else") (compound_statement "{\n    (*(code *)PTR_free_000afd08)();\n    iVar5 = ftp_response(param_1,&local_20);\n    puVar10 = PTR_s_hallenge__000af46c;\n    if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }\n  }" ({ "{") (expression_statement "(*(code *)PTR_free_000afd08)();" (call_expression "(*(code *)PTR_free_000afd08)()" (parenthesized_expression "(*(code *)PTR_free_000afd08)" (( "(") (pointer_expression "*(code *)PTR_free_000afd08" (* "*") (cast_expression "(code *)PTR_free_000afd08" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000afd08"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = ftp_response(param_1,&local_20);" (assignment_expression "iVar5 = ftp_response(param_1,&local_20)" (identifier "iVar5") (= "=") (call_expression "ftp_response(param_1,&local_20)" (identifier "ftp_response") (argument_list "(param_1,&local_20)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_20" (& "&") (identifier "local_20")) () ")")))) (; ";")) (expression_statement "puVar10 = PTR_s_hallenge__000af46c;" (assignment_expression "puVar10 = PTR_s_hallenge__000af46c" (identifier "puVar10") (= "=") (identifier "PTR_s_hallenge__000af46c")) (; ";")) (if_statement "if (iVar5 == 7) {\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }" (if "if") (parenthesized_expression "(iVar5 == 7)" (( "(") (binary_expression "iVar5 == 7" (identifier "iVar5") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n      param_1 = PTR_s_hallenge__000af46c;\n      if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }\n      iVar5 = 0xf;\n      (*(code *)PTR_free_000afd08)(local_20);\n    }" ({ "{") (expression_statement "param_1 = PTR_s_hallenge__000af46c;" (assignment_expression "param_1 = PTR_s_hallenge__000af46c" (identifier "param_1") (= "=") (identifier "PTR_s_hallenge__000af46c")) (; ";")) (if_statement "if (*local_20 != '5') {\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }" (if "if") (parenthesized_expression "(*local_20 != '5')" (( "(") (binary_expression "*local_20 != '5'" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (!= "!=") (char_literal "'5'" (' "'") (character "5") (' "'"))) () ")")) (compound_statement "{\n        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);\n        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);\n        if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }\n      }" ({ "{") (expression_statement "(*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);" (call_expression "(*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0)" (parenthesized_expression "(*(code *)PTR_strtok_000afba8)" (( "(") (pointer_expression "*(code *)PTR_strtok_000afba8" (* "*") (cast_expression "(code *)PTR_strtok_000afba8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strtok_000afba8"))) () ")")) (argument_list "(local_20,PTR_s_hallenge__000af46c + -0x3d0)" (( "(") (identifier "local_20") (, ",") (binary_expression "PTR_s_hallenge__000af46c + -0x3d0" (identifier "PTR_s_hallenge__000af46c") (+ "+") (number_literal "-0x3d0")) () ")"))) (; ";")) (expression_statement "param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);" (assignment_expression "param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" (identifier "param_1") (= "=") (cast_expression "(undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0)" (parenthesized_expression "(*(code *)PTR_strtok_000afba8)" (( "(") (pointer_expression "*(code *)PTR_strtok_000afba8" (* "*") (cast_expression "(code *)PTR_strtok_000afba8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strtok_000afba8"))) () ")")) (argument_list "(0,puVar10 + -0x3d0)" (( "(") (number_literal "0") (, ",") (binary_expression "puVar10 + -0x3d0" (identifier "puVar10") (+ "+") (number_literal "-0x3d0")) () ")"))))) (; ";")) (if_statement "if (param_1 != (undefined *)0x0) {\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }" (if "if") (parenthesized_expression "(param_1 != (undefined *)0x0)" (( "(") (binary_expression "param_1 != (undefined *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          (*(code *)PTR_free_000afd08)(*param_2);\n          puVar10 = PTR_xstrdup_000af48c;\n          *param_2 = 0;\n          uVar3 = (*(code *)puVar10)(param_1);\n          puVar10 = PTR_free_000afd08;\n          *param_2 = uVar3;\n          (*(code *)puVar10)(local_20);\n          goto LAB_0002bae8;\n        }" ({ "{") (expression_statement "(*(code *)PTR_free_000afd08)(*param_2);" (call_expression "(*(code *)PTR_free_000afd08)(*param_2)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" (( "(") (pointer_expression "*(code *)PTR_free_000afd08" (* "*") (cast_expression "(code *)PTR_free_000afd08" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000afd08"))) () ")")) (argument_list "(*param_2)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")"))) (; ";")) (expression_statement "puVar10 = PTR_xstrdup_000af48c;" (assignment_expression "puVar10 = PTR_xstrdup_000af48c" (identifier "puVar10") (= "=") (identifier "PTR_xstrdup_000af48c")) (; ";")) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = (*(code *)puVar10)(param_1);" (assignment_expression "uVar3 = (*(code *)puVar10)(param_1)" (identifier "uVar3") (= "=") (call_expression "(*(code *)puVar10)(param_1)" (parenthesized_expression "(*(code *)puVar10)" (( "(") (pointer_expression "*(code *)puVar10" (* "*") (cast_expression "(code *)puVar10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "puVar10 = PTR_free_000afd08;" (assignment_expression "puVar10 = PTR_free_000afd08" (identifier "puVar10") (= "=") (identifier "PTR_free_000afd08")) (; ";")) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "(*(code *)puVar10)(local_20);" (call_expression "(*(code *)puVar10)(local_20)" (parenthesized_expression "(*(code *)puVar10)" (( "(") (pointer_expression "*(code *)puVar10" (* "*") (cast_expression "(code *)puVar10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10"))) () ")")) (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))) (; ";")) (goto_statement "goto LAB_0002bae8;" (goto "goto") (statement_identifier "LAB_0002bae8") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar5 = 0xf;" (assignment_expression "iVar5 = 0xf" (identifier "iVar5") (= "=") (number_literal "0xf")) (; ";")) (expression_statement "(*(code *)PTR_free_000afd08)(local_20);" (call_expression "(*(code *)PTR_free_000afd08)(local_20)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" (( "(") (pointer_expression "*(code *)PTR_free_000afd08" (* "*") (cast_expression "(code *)PTR_free_000afd08" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000afd08"))) () ")")) (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0002bae8:\n  if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }" (statement_identifier "LAB_0002bae8") (: ":") (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar5;\n  }" (if "if") (parenthesized_expression "(local_1c == *(int *)puVar1)" (( "(") (binary_expression "local_1c == *(int *)puVar1" (identifier "local_1c") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return iVar5;\n  }" ({ "{") (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}")))) (expression_statement "iVar8 = local_1c;" (assignment_expression "iVar8 = local_1c" (identifier "iVar8") (= "=") (identifier "local_1c")) (; ";")) (expression_statement "puVar10 = PTR___stack_chk_fail_000afbd4;" (assignment_expression "puVar10 = PTR___stack_chk_fail_000afbd4" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_fail_000afbd4")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000afbd4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000afbd4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000afbd4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000afbd4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000afbd4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000afbd4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_54 = puVar1;" (assignment_expression "puStack_54 = puVar1" (identifier "puStack_54") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "piVar9 = *(int **)(puVar10 + 0x840f4);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0x840f4)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(puVar10 + 0x840f4)" (* "*") (cast_expression "(int **)(puVar10 + 0x840f4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x840f4)" (( "(") (binary_expression "puVar10 + 0x840f4" (identifier "puVar10") (+ "+") (number_literal "0x840f4")) () ")"))))) (; ";")) (expression_statement "iStack_5c = *piVar9;" (assignment_expression "iStack_5c = *piVar9" (identifier "iStack_5c") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "iStack_58 = iVar5;" (assignment_expression "iStack_58 = iVar5" (identifier "iStack_58") (= "=") (identifier "iVar5")) (; ";")) (expression_statement "puStack_50 = param_1;" (assignment_expression "puStack_50 = param_1" (identifier "puStack_50") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puStack_4c = param_2;" (assignment_expression "puStack_4c = param_2" (identifier "puStack_4c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);" (assignment_expression "uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc)" (identifier "uVar3") (= "=") (call_expression "FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc)" (identifier "FUN_00029120") (argument_list "(*(int *)(puVar10 + 0x83924) + -0x14fc)" (( "(") (binary_expression "*(int *)(puVar10 + 0x83924) + -0x14fc" (pointer_expression "*(int *)(puVar10 + 0x83924)" (* "*") (cast_expression "(int *)(puVar10 + 0x83924)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x83924)" (( "(") (binary_expression "puVar10 + 0x83924" (identifier "puVar10") (+ "+") (number_literal "0x83924")) () ")")))) (+ "+") (number_literal "-0x14fc")) () ")")))) (; ";")) (expression_statement "uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);" (assignment_expression "uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3)" (identifier "uVar6") (= "=") (call_expression "(**(code **)(puVar10 + 0x84120))(uVar3)" (parenthesized_expression "(**(code **)(puVar10 + 0x84120))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x84120)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x84120)" (* "*") (cast_expression "(code **)(puVar10 + 0x84120)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x84120)" (( "(") (binary_expression "puVar10 + 0x84120" (identifier "puVar10") (+ "+") (number_literal "0x84120")) () ")"))))) () ")")) (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));" (assignment_expression "iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" (identifier "iVar5") (= "=") (call_expression "fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" (identifier "fd_write") (argument_list "(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8))" (( "(") (identifier "iVar8") (, ",") (identifier "uVar3") (, ",") (identifier "uVar6") (, ",") (identifier "param_4") (, ",") (pointer_expression "*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8)" (* "*") (cast_expression "(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x83920) + 0x40b8)" (( "(") (binary_expression "*(int *)(puVar10 + 0x83920) + 0x40b8" (pointer_expression "*(int *)(puVar10 + 0x83920)" (* "*") (cast_expression "(int *)(puVar10 + 0x83920)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x83920)" (( "(") (binary_expression "puVar10 + 0x83920" (identifier "puVar10") (+ "+") (number_literal "0x83920")) () ")")))) (+ "+") (number_literal "0x40b8")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar5 < 0) {\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }\n  else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar5 = 0x2c;\n    (**(code **)(puVar10 + 0x841c0))(uVar3);\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" ({ "{") (expression_statement "iVar5 = 0x2c;" (assignment_expression "iVar5 = 0x2c" (identifier "iVar5") (= "=") (number_literal "0x2c")) (; ";")) (expression_statement "(**(code **)(puVar10 + 0x841c0))(uVar3);" (call_expression "(**(code **)(puVar10 + 0x841c0))(uVar3)" (parenthesized_expression "(**(code **)(puVar10 + 0x841c0))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x841c0)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x841c0)" (* "*") (cast_expression "(code **)(puVar10 + 0x841c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x841c0)" (( "(") (binary_expression "puVar10 + 0x841c0" (identifier "puVar10") (+ "+") (number_literal "0x841c0")) () ")"))))) () ")")) (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar4 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar4 + 4) = 0" (pointer_expression "*(undefined4 *)((int)puVar4 + 4)" (* "*") (cast_expression "(undefined4 *)((int)puVar4 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 4)" (( "(") (binary_expression "(int)puVar4 + 4" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)puVar4 = 0;" (assignment_expression "*(undefined4 *)puVar4 = 0" (pointer_expression "*(undefined4 *)puVar4" (* "*") (cast_expression "(undefined4 *)puVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" (else "else") (compound_statement "{\n    (**(code **)(puVar10 + 0x841c0))();\n    iVar5 = ftp_response(iVar8,&pcStack_60);\n    pcVar2 = pcStack_60;\n    if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }\n    *(undefined4 *)((int)puVar4 + 4) = 0;\n    *(undefined4 *)puVar4 = 0;\n  }" ({ "{") (expression_statement "(**(code **)(puVar10 + 0x841c0))();" (call_expression "(**(code **)(puVar10 + 0x841c0))()" (parenthesized_expression "(**(code **)(puVar10 + 0x841c0))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x841c0)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x841c0)" (* "*") (cast_expression "(code **)(puVar10 + 0x841c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x841c0)" (( "(") (binary_expression "puVar10 + 0x841c0" (identifier "puVar10") (+ "+") (number_literal "0x841c0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = ftp_response(iVar8,&pcStack_60);" (assignment_expression "iVar5 = ftp_response(iVar8,&pcStack_60)" (identifier "iVar5") (= "=") (call_expression "ftp_response(iVar8,&pcStack_60)" (identifier "ftp_response") (argument_list "(iVar8,&pcStack_60)" (( "(") (identifier "iVar8") (, ",") (pointer_expression "&pcStack_60" (& "&") (identifier "pcStack_60")) () ")")))) (; ";")) (expression_statement "pcVar2 = pcStack_60;" (assignment_expression "pcVar2 = pcStack_60" (identifier "pcVar2") (= "=") (identifier "pcStack_60")) (; ";")) (if_statement "if (iVar5 == 7) {\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }" (if "if") (parenthesized_expression "(iVar5 == 7)" (( "(") (binary_expression "iVar5 == 7" (identifier "iVar5") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n      if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }\n      (*pcVar11)(pcStack_60);\n    }" ({ "{") (if_statement "if (*pcStack_60 == '5') {\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }\n      else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" (if "if") (parenthesized_expression "(*pcStack_60 == '5')" (( "(") (binary_expression "*pcStack_60 == '5'" (pointer_expression "*pcStack_60" (* "*") (identifier "pcStack_60")) (== "==") (char_literal "'5'" (' "'") (character "5") (' "'"))) () ")")) (compound_statement "{\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n      }" ({ "{") (expression_statement "pcVar11 = *(code **)(puVar10 + 0x841c0);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x841c0)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x841c0)" (* "*") (cast_expression "(code **)(puVar10 + 0x841c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x841c0)" (( "(") (binary_expression "puVar10 + 0x841c0" (identifier "puVar10") (+ "+") (number_literal "0x841c0")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" (else "else") (compound_statement "{\n        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();\n        *piVar7 = 0;\n        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);\n        iVar8 = *piVar7;\n        *puVar4 = uVar12;\n        pcVar11 = *(code **)(puVar10 + 0x841c0);\n        if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }\n      }" ({ "{") (expression_statement "piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();" (assignment_expression "piVar7 = (int *)(**(code **)(puVar10 + 0x84348))()" (identifier "piVar7") (= "=") (cast_expression "(int *)(**(code **)(puVar10 + 0x84348))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar10 + 0x84348))()" (parenthesized_expression "(**(code **)(puVar10 + 0x84348))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x84348)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x84348)" (* "*") (cast_expression "(code **)(puVar10 + 0x84348)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x84348)" (( "(") (binary_expression "puVar10 + 0x84348" (identifier "puVar10") (+ "+") (number_literal "0x84348")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar7 = 0;" (assignment_expression "*piVar7 = 0" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);" (assignment_expression "uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10)" (identifier "uVar12") (= "=") (call_expression "(**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10)" (parenthesized_expression "(**(code **)(puVar10 + 0x841f4))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x841f4)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x841f4)" (* "*") (cast_expression "(code **)(puVar10 + 0x841f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x841f4)" (( "(") (binary_expression "puVar10 + 0x841f4" (identifier "puVar10") (+ "+") (number_literal "0x841f4")) () ")"))))) () ")")) (argument_list "(pcVar2 + 4,0,10)" (( "(") (binary_expression "pcVar2 + 4" (identifier "pcVar2") (+ "+") (number_literal "4")) (, ",") (number_literal "0") (, ",") (number_literal "10") () ")")))) (; ";")) (expression_statement "iVar8 = *piVar7;" (assignment_expression "iVar8 = *piVar7" (identifier "iVar8") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "*puVar4 = uVar12;" (assignment_expression "*puVar4 = uVar12" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x841c0);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x841c0)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x841c0)" (* "*") (cast_expression "(code **)(puVar10 + 0x841c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x841c0)" (( "(") (binary_expression "puVar10 + 0x841c0" (identifier "puVar10") (+ "+") (number_literal "0x841c0")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) {\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          (*pcVar11)(pcStack_60);\n          goto LAB_0002bc24;\n        }" ({ "{") (expression_statement "(*pcVar11)(pcStack_60);" (call_expression "(*pcVar11)(pcStack_60)" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "(pcStack_60)" (( "(") (identifier "pcStack_60") () ")"))) (; ";")) (goto_statement "goto LAB_0002bc24;" (goto "goto") (statement_identifier "LAB_0002bc24") (; ";")) (} "}"))) (} "}")))) (expression_statement "(*pcVar11)(pcStack_60);" (call_expression "(*pcVar11)(pcStack_60)" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "(pcStack_60)" (( "(") (identifier "pcStack_60") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)((int)puVar4 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar4 + 4) = 0" (pointer_expression "*(undefined4 *)((int)puVar4 + 4)" (* "*") (cast_expression "(undefined4 *)((int)puVar4 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 4)" (( "(") (binary_expression "(int)puVar4 + 4" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)puVar4 = 0;" (assignment_expression "*(undefined4 *)puVar4 = 0" (pointer_expression "*(undefined4 *)puVar4" (* "*") (cast_expression "(undefined4 *)puVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_0002bc24:\n  if (iStack_5c == *piVar9) {\n    return iVar5;\n  }" (statement_identifier "LAB_0002bc24") (: ":") (if_statement "if (iStack_5c == *piVar9) {\n    return iVar5;\n  }" (if "if") (parenthesized_expression "(iStack_5c == *piVar9)" (( "(") (binary_expression "iStack_5c == *piVar9" (identifier "iStack_5c") (== "==") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) () ")")) (compound_statement "{\n    return iVar5;\n  }" ({ "{") (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}")))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x8408c);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x8408c)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x8408c)" (* "*") (cast_expression "(code **)(puVar10 + 0x8408c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x8408c)" (( "(") (binary_expression "puVar10 + 0x8408c" (identifier "puVar10") (+ "+") (number_literal "0x8408c")) () ")"))))) (; ";")) (expression_statement "iVar5 = iStack_5c;" (assignment_expression "iVar5 = iStack_5c" (identifier "iVar5") (= "=") (identifier "iStack_5c")) (; ";")) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar5 == 0) {\n    return 0x49;\n  }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0x49;\n  }" ({ "{") (return_statement "return 0x49;" (return "return") (number_literal "0x49") (; ";")) (} "}"))) (expression_statement "iVar8 = (**(code **)(pcVar11 + 0x83e84))();" (assignment_expression "iVar8 = (**(code **)(pcVar11 + 0x83e84))()" (identifier "iVar8") (= "=") (call_expression "(**(code **)(pcVar11 + 0x83e84))()" (parenthesized_expression "(**(code **)(pcVar11 + 0x83e84))" (( "(") (pointer_expression "**(code **)(pcVar11 + 0x83e84)" (* "*") (pointer_expression "*(code **)(pcVar11 + 0x83e84)" (* "*") (cast_expression "(code **)(pcVar11 + 0x83e84)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar11 + 0x83e84)" (( "(") (binary_expression "pcVar11 + 0x83e84" (identifier "pcVar11") (+ "+") (number_literal "0x83e84")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar8 == 0) {\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar8 = (int)*(char *)(iVar5 + 5);\n    if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }\n  }" ({ "{") (expression_statement "iVar8 = (int)*(char *)(iVar5 + 5);" (assignment_expression "iVar8 = (int)*(char *)(iVar5 + 5)" (identifier "iVar8") (= "=") (cast_expression "(int)*(char *)(iVar5 + 5)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)(iVar5 + 5)" (* "*") (cast_expression "(char *)(iVar5 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 5)" (( "(") (binary_expression "iVar5 + 5" (identifier "iVar5") (+ "+") (number_literal "5")) () ")")))))) (; ";")) (if_statement "if (iVar8 != 0) {\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }\n      return iVar8;\n    }" ({ "{") (if_statement "if (iVar8 - 0x61U < 0x1a) {\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }" (if "if") (parenthesized_expression "(iVar8 - 0x61U < 0x1a)" (( "(") (binary_expression "iVar8 - 0x61U < 0x1a" (binary_expression "iVar8 - 0x61U" (identifier "iVar8") (- "-") (number_literal "0x61U")) (< "<") (number_literal "0x1a")) () ")")) (compound_statement "{\n        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);\n      }" ({ "{") (expression_statement "iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);" (assignment_expression "iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20)" (identifier "iVar8") (= "=") (cast_expression "(int)(char)(*(char *)(iVar5 + 5) + -0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(*(char *)(iVar5 + 5) + -0x20)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(*(char *)(iVar5 + 5) + -0x20)" (( "(") (binary_expression "*(char *)(iVar5 + 5) + -0x20" (pointer_expression "*(char *)(iVar5 + 5)" (* "*") (cast_expression "(char *)(iVar5 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 5)" (( "(") (binary_expression "iVar5 + 5" (identifier "iVar5") (+ "+") (number_literal "5")) () ")")))) (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (} "}"))) (return_statement "return iVar8;" (return "return") (identifier "iVar8") (; ";")) (} "}"))) (} "}"))) (return_statement "return 0x49;" (return "return") (number_literal "0x49") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (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))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) 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 (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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))) (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 (identifier))))) alternative: (else_clause (compound_statement (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (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 (identifier) (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: (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 (number_literal) (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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 (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (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))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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 (identifier)))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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 (identifier))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))) (return_statement (identifier)))))) (return_statement (number_literal)))))

int MASKED(undefined *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)

{
  undefined *puVar1;
  char *pcVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined4 uVar6;
  int *piVar7;
  int iVar8;
  int *piVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined8 uVar12;
  char *pcStack_60;
  int iStack_5c;
  int iStack_58;
  undefined *puStack_54;
  undefined *puStack_50;
  undefined4 *puStack_4c;
  char *local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_000afc3c;
  local_1c = *(int *)PTR___stack_chk_guard_000afc3c;
  uVar3 = FUN_00029120(PTR_s_hallenge__000af46c + -0x1500,0);
  puVar4 = (undefined8 *)(*(code *)PTR_strlen_000afc68)(uVar3);
  iVar5 = fd_write(param_1,uVar3);
  if (iVar5 < 0) {
    iVar5 = 0x2c;
    (*(code *)PTR_free_000afd08)(uVar3);
  }
  else {
    (*(code *)PTR_free_000afd08)();
    iVar5 = ftp_response(param_1,&local_20);
    puVar10 = PTR_s_hallenge__000af46c;
    if (iVar5 == 7) {
      param_1 = PTR_s_hallenge__000af46c;
      if (*local_20 != '5') {
        (*(code *)PTR_strtok_000afba8)(local_20,PTR_s_hallenge__000af46c + -0x3d0);
        param_1 = (undefined *)(*(code *)PTR_strtok_000afba8)(0,puVar10 + -0x3d0);
        if (param_1 != (undefined *)0x0) {
          (*(code *)PTR_free_000afd08)(*param_2);
          puVar10 = PTR_xstrdup_000af48c;
          *param_2 = 0;
          uVar3 = (*(code *)puVar10)(param_1);
          puVar10 = PTR_free_000afd08;
          *param_2 = uVar3;
          (*(code *)puVar10)(local_20);
          goto LAB_0002bae8;
        }
      }
      iVar5 = 0xf;
      (*(code *)PTR_free_000afd08)(local_20);
    }
  }
LAB_0002bae8:
  if (local_1c == *(int *)puVar1) {
    return iVar5;
  }
  iVar8 = local_1c;
  puVar10 = PTR___stack_chk_fail_000afbd4;
  (*(code *)PTR___stack_chk_fail_000afbd4)();
  puStack_54 = puVar1;
  piVar9 = *(int **)(puVar10 + 0x840f4);
  iStack_5c = *piVar9;
  iStack_58 = iVar5;
  puStack_50 = param_1;
  puStack_4c = param_2;
  uVar3 = FUN_00029120(*(int *)(puVar10 + 0x83924) + -0x14fc);
  uVar6 = (**(code **)(puVar10 + 0x84120))(uVar3);
  iVar5 = fd_write(iVar8,uVar3,uVar6,param_4,*(undefined8 *)(*(int *)(puVar10 + 0x83920) + 0x40b8));
  if (iVar5 < 0) {
    iVar5 = 0x2c;
    (**(code **)(puVar10 + 0x841c0))(uVar3);
    *(undefined4 *)((int)puVar4 + 4) = 0;
    *(undefined4 *)puVar4 = 0;
  }
  else {
    (**(code **)(puVar10 + 0x841c0))();
    iVar5 = ftp_response(iVar8,&pcStack_60);
    pcVar2 = pcStack_60;
    if (iVar5 == 7) {
      if (*pcStack_60 == '5') {
        pcVar11 = *(code **)(puVar10 + 0x841c0);
      }
      else {
        piVar7 = (int *)(**(code **)(puVar10 + 0x84348))();
        *piVar7 = 0;
        uVar12 = (**(code **)(puVar10 + 0x841f4))(pcVar2 + 4,0,10);
        iVar8 = *piVar7;
        *puVar4 = uVar12;
        pcVar11 = *(code **)(puVar10 + 0x841c0);
        if (iVar8 == 0) {
          (*pcVar11)(pcStack_60);
          goto LAB_0002bc24;
        }
      }
      (*pcVar11)(pcStack_60);
    }
    *(undefined4 *)((int)puVar4 + 4) = 0;
    *(undefined4 *)puVar4 = 0;
  }
LAB_0002bc24:
  if (iStack_5c == *piVar9) {
    return iVar5;
  }
  pcVar11 = *(code **)(puVar10 + 0x8408c);
  iVar5 = iStack_5c;
  (*pcVar11)();
  if (iVar5 == 0) {
    return 0x49;
  }
  iVar8 = (**(code **)(pcVar11 + 0x83e84))();
  if (iVar8 == 0) {
    iVar8 = (int)*(char *)(iVar5 + 5);
    if (iVar8 != 0) {
      if (iVar8 - 0x61U < 0x1a) {
        iVar8 = (int)(char)(*(char *)(iVar5 + 5) + -0x20);
      }
      return iVar8;
    }
  }
  return 0x49;
}

