
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void ssh2_msg_channel_data(Ssh_conflict ssh,Packet *pktin)

{
  undefined *puVar1;
  Ssh_conflict psVar2;
  Packet *pPVar3;
  int iVar4;
  Ssh_conflict ssh_00;
  uint is_stderr;
  Ssh_conflict c;
  int **p;
  int *length_00;
  Ssh_conflict unaff_s0;
  int *piVar5;
  undefined *puVar6;
  code *pcVar7;
  int *piStack_64;
  int iStack_60;
  int iStack_5c;
  Ssh_conflict psStack_54;
  undefined *puStack_50;
  Packet *pPStack_4c;
  Ssh_conflict psStack_48;
  code *pcStack_44;
  char *data;
  int length;
  char *pcStack_1c;
  
  puVar1 = PTR___stack_chk_guard_000b2f04;
  pcStack_1c = *(char **)PTR___stack_chk_guard_000b2f04;
  ssh_00 = ssh;
  c = (Ssh_conflict)pktin;
  psVar2 = (Ssh_conflict)ssh_channel_msg(ssh,pktin);
  pPVar3 = pktin;
  if (psVar2 != (Ssh_conflict)0x0) {
    unaff_s0 = psVar2;
    if (pktin->type == 0x5f) {
      pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);
      c = (Ssh_conflict)&data;
      ssh_pkt_getstring(pktin,(char **)c,&length);
      ssh_00 = (Ssh_conflict)pktin;
      if (data == (char *)0x0) goto LAB_0004adf4;
      iVar4 = psVar2->v1_compressing;
      is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);
      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length
      ;
      psVar2->v1_compressing = iVar4 - length;
      if ((Packet *)&DAT_00000001 < pPVar3) {
        length = 0;
      }
    }
    else {
      c = (Ssh_conflict)&data;
      ssh_00 = (Ssh_conflict)pktin;
      ssh_pkt_getstring(pktin,(char **)c,&length);
      if (data == (char *)0x0) goto LAB_0004adf4;
      is_stderr = 0;
      iVar4 = psVar2->v1_compressing;
      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length
      ;
      psVar2->v1_compressing = iVar4 - length;
    }
    ssh_00 = psVar2;
    pPVar3 = (Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length);
    if (psVar2->v1_compressing < 1) {
      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);
      if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {
        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;
        FUN_0004ae60();
        return;
      }
    }
    else {
      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);
    }
    if ((int)pPVar3 < iVar4) {
      ssh_00 = psVar2;
      ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);
      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);
    }
    c = (Ssh_conflict)(uint)(iVar4 < (int)pPVar3);
    if (((c != (Ssh_conflict)0x0) ||
        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&
       (*(int *)psVar2->session_key == 0)) {
      c = (Ssh_conflict)&DAT_00000001;
      *(int *)psVar2->session_key = 1;
      ssh_00 = ssh;
      ssh_throttle_conn(ssh,1);
    }
  }
LAB_0004adf4:
  if (pcStack_1c == *(char **)puVar1) {
    return;
  }
  pcVar7 = ssh1_msg_channel_data;
  puVar6 = PTR___stack_chk_fail_000b2ed8;
  (*(code *)PTR___stack_chk_fail_000b2ed8)();
  puStack_50 = puVar1;
  piVar5 = *(int **)(puVar6 + 0x67f78);
  iStack_5c = *piVar5;
  psStack_54 = unaff_s0;
  pPStack_4c = pPVar3;
  psStack_48 = ssh;
  pcStack_44 = pcVar7;
  psVar2 = (Ssh_conflict)ssh_channel_msg(ssh_00,(Packet *)c);
  length_00 = &iStack_60;
  p = &piStack_64;
  ssh_pkt_getstring((Packet *)c,(char **)p,length_00);
  if (psVar2 != (Ssh_conflict)0x0) {
    p = (int **)0x0;
    c = psVar2;
    iVar4 = ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60);
    length_00 = piStack_64;
    if ((*(int *)psVar2->session_key == 0) && (0x8000 < iVar4)) {
      p = (int **)&DAT_00000001;
      *(int *)psVar2->session_key = 1;
      ssh_throttle_conn(ssh_00,1);
      c = ssh_00;
      length_00 = piStack_64;
    }
  }
  if (iStack_5c != *piVar5) {
    pcVar7 = *(code **)(puVar6 + 0x67f4c);
    (*pcVar7)();
    ssh_agentf_got_response((ssh_channel *)c,p,(int)length_00);
    (**(code **)(pcVar7 + 0x67344))(p);
    ssh_agentf_try_forward((ssh_channel *)c);
    return;
  }
  return;
}



void FUN_0004ad6c(int *param_1,int *param_2)

{
  undefined *puVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  int *piVar5;
  bool bVar8;
  int *piVar6;
  undefined4 *puVar7;
  int *unaff_s0;
  undefined *puVar9;
  code *pcVar10;
  undefined4 uVar11;
  undefined4 local_64;
  undefined4 local_60;
  int local_5c;
  int *local_54;
  undefined *local_50;
  int *local_4c;
  int *local_48;
  undefined4 local_44;
  int local_24;
  int local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_000b2f04;
  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;
  piVar5 = param_1;
  piVar6 = param_2;
  piVar2 = (int *)FUN_00047b40();
  piVar3 = param_2;
  if (piVar2 != (int *)0x0) {
    unaff_s0 = piVar2;
    if (param_2[2] == 0x5f) {
      piVar3 = (int *)FUN_00036be8(param_2);
      piVar6 = &local_24;
      FUN_00037704();
      piVar5 = param_2;
      if (local_24 == 0) goto LAB_0004adf4;
      bVar8 = piVar3 == (int *)0x1;
      piVar2[0xd] = piVar2[0xd] - local_20;
      piVar2[0xf] = piVar2[0xf] - local_20;
      if ((int *)0x1 < piVar3) {
        local_20 = 0;
      }
    }
    else {
      piVar6 = &local_24;
      piVar5 = param_2;
      FUN_00037704(param_2,piVar6,&local_20);
      if (local_24 == 0) goto LAB_0004adf4;
      bVar8 = false;
      piVar2[0xd] = piVar2[0xd] - local_20;
      piVar2[0xf] = piVar2[0xf] - local_20;
    }
    piVar5 = piVar2;
    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);
    if (piVar2[0xf] < 1) {
      iVar4 = piVar2[0xe];
      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {
        iVar4 = iVar4 + 0x4000;
        piVar2[0xe] = iVar4;
      }
    }
    else {
      iVar4 = piVar2[0xe];
    }
    if ((int)piVar3 < iVar4) {
      piVar5 = piVar2;
      FUN_00046aec(piVar2,iVar4 - (int)piVar3);
      iVar4 = piVar2[0xe];
    }
    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);
    if (((piVar6 != (int *)0x0) ||
        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&
       (piVar2[7] == 0)) {
      piVar6 = (int *)0x1;
      piVar2[7] = 1;
      piVar5 = param_1;
      FUN_0003ac44(param_1,1);
    }
  }
LAB_0004adf4:
  if (local_1c == *(int *)puVar1) {
    return;
  }
  uVar11 = 0x4af8c;
  puVar9 = PTR___stack_chk_fail_000b2ed8;
  (*(code *)PTR___stack_chk_fail_000b2ed8)();
  local_50 = puVar1;
  piVar2 = *(int **)(puVar9 + 0x67f78);
  local_5c = *piVar2;
  local_54 = unaff_s0;
  local_4c = piVar3;
  local_48 = param_1;
  local_44 = uVar11;
  piVar3 = (int *)FUN_00047b40();
  puVar7 = &local_64;
  FUN_00037704(piVar6,puVar7,&local_60);
  if (piVar3 != (int *)0x0) {
    puVar7 = (undefined4 *)0x0;
    piVar6 = piVar3;
    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);
    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {
      puVar7 = (undefined4 *)0x1;
      piVar3[7] = 1;
      FUN_0003ac44(piVar5,1);
      piVar6 = piVar5;
    }
  }
  if (local_5c != *piVar2) {
    pcVar10 = *(code **)(puVar9 + 0x67f4c);
    (*pcVar10)();
    FUN_00048fe0();
    (**(code **)(pcVar10 + 0x67344))(puVar7);
    FUN_00049060(piVar6);
    return;
  }
  return;
}


lui gp,0x7
addiu gp,gp,-0x9fc
addu gp,gp,t9
addiu sp,sp,-0x40
lw t9,-0x7adc(gp)
sw s1,0x30(sp)
addiu t9,t9,0x7b40
lw s1,-0x746c(gp)
sw gp,0x10(sp)
sw s3,0x38(sp)
or s3,a0,zero
sw s2,0x34(sp)
or s2,a1,zero
sw ra,0x3c(sp)
sw s0,0x2c(sp)
lw v0,0x0(s1)
sw v0,0x24(sp)
bal 0x00047b40
_nop
beq v0,zero,0x0004adf4
_lw gp,0x10(sp)
lw v1,0x8(s2)
or s0,v0,zero
li v0,0x5f
beq v1,v0,0x0004af10
_lw t9,-0x7c10(gp)
addiu a2,sp,0x20
addiu a1,sp,0x1c
addiu t9,t9,0x7704
bal 0x00037704
_or a0,s2,zero
lw a2,0x1c(sp)
bne a2,zero,0x0004ae1c
_lw gp,0x10(sp)
lw v1,0x24(sp)
lw v0,0x0(s1)
bne v1,v0,0x0004af80
_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
lw a3,0x20(sp)
or a1,zero,zero
lw v1,0x34(s0)
lw v0,0x3c(s0)
subu v1,v1,a3
subu v0,v0,a3
sw v1,0x34(s0)
sw v0,0x3c(s0)
lw t9,-0x7a78(gp)
addiu t9,t9,-0x53bc
bal 0x0004ac44
_or a0,s0,zero
lw v1,0x3c(s0)
or s2,v0,zero
blez v1,0x0004aea4
_lw gp,0x10(sp)
lw a1,0x38(s0)
slt v0,s2,a1
bne v0,zero,0x0004aef4
_lw t9,-0x7adc(gp)
slt a1,a1,s2
beq a1,zero,0x0004aed0
_lw t9,-0x7c10(gp)
lw v0,0x1c(s0)
bne v0,zero,0x0004adf4
_lw t9,-0x7adc(gp)
li v0,0x1
li a1,0x1
sw v0,0x1c(s0)
addiu t9,t9,-0x53bc
bal 0x0003ac44
_or a0,s3,zero
b 0x0004adf4
_lw gp,0x10(sp)
lw v1,0x48(s0)
li v0,0x2
bne v1,v0,0x0004ae60
_lw a1,0x38(s0)
lui v0,0x4000
slt v0,a1,v0
beq v0,zero,0x0004ae64
_slt v0,s2,a1
addiu a1,a1,0x4000
b 0x0004ae60
_sw a1,0x38(s0)
addiu t9,t9,0x769c
bal 0x0003769c
_or a0,s3,zero
beq v0,zero,0x0004adf4
_lw gp,0x10(sp)
bgtz s2,0x0004ae78
_nop
b 0x0004adf4
_nop
subu a1,a1,s2
addiu t9,t9,0x6aec
bal 0x00046aec
_or a0,s0,zero
lw gp,0x10(sp)
b 0x0004ae6c
_lw a1,0x38(s0)
lw t9,-0x7c10(gp)
addiu t9,t9,0x6be8
bal 0x00036be8
_or a0,s2,zero
addiu a2,sp,0x20
lw gp,0x10(sp)
addiu a1,sp,0x1c
lw t9,-0x7c10(gp)
addiu t9,t9,0x7704
bal 0x00037704
_or s2,v0,zero
lw a2,0x1c(sp)
beq a2,zero,0x0004adf4
_lw gp,0x10(sp)
lw a3,0x20(sp)
xori a1,s2,0x1
lw v1,0x34(s0)
sltiu s2,s2,0x2
lw v0,0x3c(s0)
sltiu a1,a1,0x1
subu v1,v1,a3
subu v0,v0,a3
sw v1,0x34(s0)
bne s2,zero,0x0004ae3c
_sw v0,0x3c(s0)
or a3,zero,zero
b 0x0004ae3c
_sw zero,0x20(sp)
lw t9,-0x7498(gp)
jalr t9
_nop
lui gp,0x7
addiu gp,gp,-0xc1c
addu gp,gp,t9
addiu sp,sp,-0x40
lw t9,-0x7adc(gp)
sw s1,0x30(sp)
addiu t9,t9,0x7b40
lw s1,-0x746c(gp)
sw gp,0x10(sp)
sw ra,0x3c(sp)
sw s3,0x38(sp)
or s3,a1,zero
sw s2,0x34(sp)
or s2,a0,zero
sw s0,0x2c(sp)
lw v0,0x0(s1)
sw v0,0x24(sp)
bal 0x00047b40
_nop
addiu a2,sp,0x20
lw gp,0x10(sp)
addiu a1,sp,0x1c
or s0,v0,zero
lw t9,-0x7c10(gp)
addiu t9,t9,0x7704
bal 0x00037704
_or a0,s3,zero
beq s0,zero,0x0004b028
_lw gp,0x10(sp)
lw t9,-0x7a78(gp)
or a1,zero,zero
lw a3,0x20(sp)
or a0,s0,zero
addiu t9,t9,-0x53bc
bal 0x0004ac44
_lw a2,0x1c(sp)
lw v1,0x1c(s0)
beq v1,zero,0x0004b050
_lw gp,0x10(sp)
lw v1,0x24(sp)
lw v0,0x0(s1)
bne v1,v0,0x0004b080
_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
ori v1,zero,0x8001
slt v0,v0,v1
bne v0,zero,0x0004b028
_lw t9,-0x7adc(gp)
li v0,0x1
li a1,0x1
sw v0,0x1c(s0)
addiu t9,t9,-0x53bc
bal 0x0003ac44
_or a0,s2,zero
b 0x0004b028
_lw gp,0x10(sp)
lw t9,-0x7498(gp)
jalr t9
_nop
lui gp,0x7
addiu gp,gp,-0xd1c
addu gp,gp,t9
lw t9,-0x7a78(gp)
addiu sp,sp,-0x28
addiu t9,t9,-0x7020
sw ra,0x24(sp)
sw s1,0x20(sp)
or s1,a1,zero
sw s0,0x1c(sp)
sw gp,0x10(sp)
bal 0x00048fe0
_or s0,a0,zero
lw gp,0x10(sp)
lw t9,-0x7fa0(gp)
jalr t9
_or a0,s1,zero
or a0,s0,zero
lw gp,0x10(sp)
lw ra,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
lw t9,-0x7a78(gp)
addiu t9,t9,-0x6fa0
b 0x00049060
_addiu sp,sp,0x28
(translation_unit "void FUN_0004ad6c(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int *piVar2;\n  int *piVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar8;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *unaff_s0;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined4 uVar11;\n  undefined4 local_64;\n  undefined4 local_60;\n  int local_5c;\n  int *local_54;\n  undefined *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined4 local_44;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;\n  piVar5 = param_1;\n  piVar6 = param_2;\n  piVar2 = (int *)FUN_00047b40();\n  piVar3 = param_2;\n  if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }\nLAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }\n  uVar11 = 0x4af8c;\n  puVar9 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  local_50 = puVar1;\n  piVar2 = *(int **)(puVar9 + 0x67f78);\n  local_5c = *piVar2;\n  local_54 = unaff_s0;\n  local_4c = piVar3;\n  local_48 = param_1;\n  local_44 = uVar11;\n  piVar3 = (int *)FUN_00047b40();\n  puVar7 = &local_64;\n  FUN_00037704(piVar6,puVar7,&local_60);\n  if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }\n  if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0004ad6c(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int *piVar2;\n  int *piVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar8;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *unaff_s0;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined4 uVar11;\n  undefined4 local_64;\n  undefined4 local_60;\n  int local_5c;\n  int *local_54;\n  undefined *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined4 local_44;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;\n  piVar5 = param_1;\n  piVar6 = param_2;\n  piVar2 = (int *)FUN_00047b40();\n  piVar3 = param_2;\n  if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }\nLAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }\n  uVar11 = 0x4af8c;\n  puVar9 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  local_50 = puVar1;\n  piVar2 = *(int **)(puVar9 + 0x67f78);\n  local_5c = *piVar2;\n  local_54 = unaff_s0;\n  local_4c = piVar3;\n  local_48 = param_1;\n  local_44 = uVar11;\n  piVar3 = (int *)FUN_00047b40();\n  puVar7 = &local_64;\n  FUN_00037704(piVar6,puVar7,&local_60);\n  if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }\n  if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0004ad6c(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int *piVar2;\n  int *piVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar8;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *unaff_s0;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined4 uVar11;\n  undefined4 local_64;\n  undefined4 local_60;\n  int local_5c;\n  int *local_54;\n  undefined *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined4 local_44;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;\n  piVar5 = param_1;\n  piVar6 = param_2;\n  piVar2 = (int *)FUN_00047b40();\n  piVar3 = param_2;\n  if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }\nLAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }\n  uVar11 = 0x4af8c;\n  puVar9 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  local_50 = puVar1;\n  piVar2 = *(int **)(puVar9 + 0x67f78);\n  local_5c = *piVar2;\n  local_54 = unaff_s0;\n  local_4c = piVar3;\n  local_48 = param_1;\n  local_44 = uVar11;\n  piVar3 = (int *)FUN_00047b40();\n  puVar7 = &local_64;\n  FUN_00037704(piVar6,puVar7,&local_60);\n  if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }\n  if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *unaff_s0;" primitive_type (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int *local_54;" primitive_type (pointer_declarator "*local_54" * identifier) ;) (declaration "undefined *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "int *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000b2f04;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000b2f04" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000b2f04;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000b2f04" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000b2f04" * (cast_expression "(int *)PTR___stack_chk_guard_000b2f04" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" identifier = identifier) ;) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" identifier = identifier) ;) (expression_statement "piVar2 = (int *)FUN_00047b40();" (assignment_expression "piVar2 = (int *)FUN_00047b40()" identifier = (cast_expression "(int *)FUN_00047b40()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00047b40()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar3 = param_2;" (assignment_expression "piVar3 = param_2" identifier = identifier) ;) (if_statement "if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }" { (expression_statement "unaff_s0 = piVar2;" (assignment_expression "unaff_s0 = piVar2" identifier = identifier) ;) (if_statement "if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" if (parenthesized_expression "(param_2[2] == 0x5f)" ( (binary_expression "param_2[2] == 0x5f" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }" { (expression_statement "piVar3 = (int *)FUN_00036be8(param_2);" (assignment_expression "piVar3 = (int *)FUN_00036be8(param_2)" identifier = (cast_expression "(int *)FUN_00036be8(param_2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036be8(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "piVar6 = &local_24;" (assignment_expression "piVar6 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;) (expression_statement "FUN_00037704();" (call_expression "FUN_00037704()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (if_statement "if (local_24 == 0) goto LAB_0004adf4;" if (parenthesized_expression "(local_24 == 0)" ( (binary_expression "local_24 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004adf4;" goto statement_identifier ;)) (expression_statement "bVar8 = piVar3 == (int *)0x1;" (assignment_expression "bVar8 = piVar3 == (int *)0x1" identifier = (binary_expression "piVar3 == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "piVar2[0xd] = piVar2[0xd] - local_20;" (assignment_expression "piVar2[0xd] = piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) = (binary_expression "piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "piVar2[0xf] = piVar2[0xf] - local_20;" (assignment_expression "piVar2[0xf] = piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) = (binary_expression "piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) - identifier)) ;) (if_statement "if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }" if (parenthesized_expression "((int *)0x1 < piVar3)" ( (binary_expression "(int *)0x1 < piVar3" (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n        local_20 = 0;\n      }" { (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) })) }) (else_clause "else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" else (compound_statement "{\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" { (expression_statement "piVar6 = &local_24;" (assignment_expression "piVar6 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (expression_statement "FUN_00037704(param_2,piVar6,&local_20);" (call_expression "FUN_00037704(param_2,piVar6,&local_20)" identifier (argument_list "(param_2,piVar6,&local_20)" ( identifier , identifier , (pointer_expression "&local_20" & identifier) ))) ;) (if_statement "if (local_24 == 0) goto LAB_0004adf4;" if (parenthesized_expression "(local_24 == 0)" ( (binary_expression "local_24 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004adf4;" goto statement_identifier ;)) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "piVar2[0xd] = piVar2[0xd] - local_20;" (assignment_expression "piVar2[0xd] = piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) = (binary_expression "piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "piVar2[0xf] = piVar2[0xf] - local_20;" (assignment_expression "piVar2[0xf] = piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) = (binary_expression "piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) - identifier)) ;) }))) (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" identifier = identifier) ;) (expression_statement "piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);" (assignment_expression "piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20)" identifier = (cast_expression "(int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0004ac44(piVar2,bVar8,local_24,local_20)" identifier (argument_list "(piVar2,bVar8,local_24,local_20)" ( identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }" if (parenthesized_expression "(piVar2[0xf] < 1)" ( (binary_expression "piVar2[0xf] < 1" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }" { (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" identifier = (subscript_expression "piVar2[0xe]" identifier [ number_literal ])) ;) (if_statement "if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }" if (parenthesized_expression "((piVar2[0x12] == 2) && (iVar4 < 0x40000000))" ( (binary_expression "(piVar2[0x12] == 2) && (iVar4 < 0x40000000)" (parenthesized_expression "(piVar2[0x12] == 2)" ( (binary_expression "piVar2[0x12] == 2" (subscript_expression "piVar2[0x12]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(iVar4 < 0x40000000)" ( (binary_expression "iVar4 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }" { (expression_statement "iVar4 = iVar4 + 0x4000;" (assignment_expression "iVar4 = iVar4 + 0x4000" identifier = (binary_expression "iVar4 + 0x4000" identifier + number_literal)) ;) (expression_statement "piVar2[0xe] = iVar4;" (assignment_expression "piVar2[0xe] = iVar4" (subscript_expression "piVar2[0xe]" identifier [ number_literal ]) = identifier) ;) })) }) (else_clause "else {\n      iVar4 = piVar2[0xe];\n    }" else (compound_statement "{\n      iVar4 = piVar2[0xe];\n    }" { (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" identifier = (subscript_expression "piVar2[0xe]" identifier [ number_literal ])) ;) }))) (if_statement "if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }" if (parenthesized_expression "((int)piVar3 < iVar4)" ( (binary_expression "(int)piVar3 < iVar4" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }" { (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" identifier = identifier) ;) (expression_statement "FUN_00046aec(piVar2,iVar4 - (int)piVar3);" (call_expression "FUN_00046aec(piVar2,iVar4 - (int)piVar3)" identifier (argument_list "(piVar2,iVar4 - (int)piVar3)" ( identifier , (binary_expression "iVar4 - (int)piVar3" identifier - (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" identifier = (subscript_expression "piVar2[0xe]" identifier [ number_literal ])) ;) })) (expression_statement "piVar6 = (int *)(uint)(iVar4 < (int)piVar3);" (assignment_expression "piVar6 = (int *)(uint)(iVar4 < (int)piVar3)" identifier = (cast_expression "(int *)(uint)(iVar4 < (int)piVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar4 < (int)piVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 < (int)piVar3)" ( (binary_expression "iVar4 < (int)piVar3" identifier < (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }" if (parenthesized_expression "(((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0))" ( (binary_expression "((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)" (parenthesized_expression "((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3))))" ( (binary_expression "(piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))" (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))" ( (parenthesized_expression "(piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3))" ( (comma_expression "piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)" (assignment_expression "piVar5 = param_1" identifier = identifier) , (comma_expression "iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)" (assignment_expression "iVar4 = FUN_0003769c(param_1)" identifier = (call_expression "FUN_0003769c(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar4 != 0 && (0 < (int)piVar3)" (binary_expression "iVar4 != 0" identifier != number_literal) && (parenthesized_expression "(0 < (int)piVar3)" ( (binary_expression "0 < (int)piVar3" number_literal < (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) )) ))) )) && (parenthesized_expression "(piVar2[7] == 0)" ( (binary_expression "piVar2[7] == 0" (subscript_expression "piVar2[7]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }" { (expression_statement "piVar6 = (int *)0x1;" (assignment_expression "piVar6 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar2[7] = 1;" (assignment_expression "piVar2[7] = 1" (subscript_expression "piVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" identifier = identifier) ;) (expression_statement "FUN_0003ac44(param_1,1);" (call_expression "FUN_0003ac44(param_1,1)" identifier (argument_list "(param_1,1)" ( identifier , number_literal ))) ;) })) })) (labeled_statement "LAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return;\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;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "uVar11 = 0x4af8c;" (assignment_expression "uVar11 = 0x4af8c" identifier = number_literal) ;) (expression_statement "puVar9 = PTR___stack_chk_fail_000b2ed8;" (assignment_expression "puVar9 = PTR___stack_chk_fail_000b2ed8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000b2ed8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b2ed8" * (cast_expression "(code *)PTR___stack_chk_fail_000b2ed8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "local_50 = puVar1;" (assignment_expression "local_50 = puVar1" identifier = identifier) ;) (expression_statement "piVar2 = *(int **)(puVar9 + 0x67f78);" (assignment_expression "piVar2 = *(int **)(puVar9 + 0x67f78)" identifier = (pointer_expression "*(int **)(puVar9 + 0x67f78)" * (cast_expression "(int **)(puVar9 + 0x67f78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x67f78)" ( (binary_expression "puVar9 + 0x67f78" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar2;" (assignment_expression "local_5c = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "local_54 = unaff_s0;" (assignment_expression "local_54 = unaff_s0" identifier = identifier) ;) (expression_statement "local_4c = piVar3;" (assignment_expression "local_4c = piVar3" identifier = identifier) ;) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" identifier = identifier) ;) (expression_statement "local_44 = uVar11;" (assignment_expression "local_44 = uVar11" identifier = identifier) ;) (expression_statement "piVar3 = (int *)FUN_00047b40();" (assignment_expression "piVar3 = (int *)FUN_00047b40()" identifier = (cast_expression "(int *)FUN_00047b40()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00047b40()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar7 = &local_64;" (assignment_expression "puVar7 = &local_64" identifier = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "FUN_00037704(piVar6,puVar7,&local_60);" (call_expression "FUN_00037704(piVar6,puVar7,&local_60)" identifier (argument_list "(piVar6,puVar7,&local_60)" ( identifier , identifier , (pointer_expression "&local_60" & identifier) ))) ;) (if_statement "if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }" if (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }" { (expression_statement "puVar7 = (undefined4 *)0x0;" (assignment_expression "puVar7 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar6 = piVar3;" (assignment_expression "piVar6 = piVar3" identifier = identifier) ;) (expression_statement "iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);" (assignment_expression "iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60)" identifier = (call_expression "FUN_0004ac44(piVar3,0,local_64,local_60)" identifier (argument_list "(piVar3,0,local_64,local_60)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }" if (parenthesized_expression "((piVar3[7] == 0) && (0x8000 < iVar4))" ( (binary_expression "(piVar3[7] == 0) && (0x8000 < iVar4)" (parenthesized_expression "(piVar3[7] == 0)" ( (binary_expression "piVar3[7] == 0" (subscript_expression "piVar3[7]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(0x8000 < iVar4)" ( (binary_expression "0x8000 < iVar4" number_literal < identifier) ))) )) (compound_statement "{\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }" { (expression_statement "puVar7 = (undefined4 *)0x1;" (assignment_expression "puVar7 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar3[7] = 1;" (assignment_expression "piVar3[7] = 1" (subscript_expression "piVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0003ac44(piVar5,1);" (call_expression "FUN_0003ac44(piVar5,1)" identifier (argument_list "(piVar5,1)" ( identifier , number_literal ))) ;) (expression_statement "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" identifier = identifier) ;) })) })) (if_statement "if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }" if (parenthesized_expression "(local_5c != *piVar2)" ( (binary_expression "local_5c != *piVar2" identifier != (pointer_expression "*piVar2" * identifier)) )) (compound_statement "{\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }" { (expression_statement "pcVar10 = *(code **)(puVar9 + 0x67f4c);" (assignment_expression "pcVar10 = *(code **)(puVar9 + 0x67f4c)" identifier = (pointer_expression "*(code **)(puVar9 + 0x67f4c)" * (cast_expression "(code **)(puVar9 + 0x67f4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x67f4c)" ( (binary_expression "puVar9 + 0x67f4c" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_00048fe0();" (call_expression "FUN_00048fe0()" identifier (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar10 + 0x67344))(puVar7);" (call_expression "(**(code **)(pcVar10 + 0x67344))(puVar7)" (parenthesized_expression "(**(code **)(pcVar10 + 0x67344))" ( (pointer_expression "**(code **)(pcVar10 + 0x67344)" * (pointer_expression "*(code **)(pcVar10 + 0x67344)" * (cast_expression "(code **)(pcVar10 + 0x67344)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x67344)" ( (binary_expression "pcVar10 + 0x67344" identifier + number_literal) ))))) )) (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_00049060(piVar6);" (call_expression "FUN_00049060(piVar6)" identifier (argument_list "(piVar6)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid ssh2_msg_channel_data(Ssh_conflict ssh,Packet *pktin)\n\n{\n  undefined *puVar1;\n  Ssh_conflict psVar2;\n  Packet *pPVar3;\n  int iVar4;\n  Ssh_conflict ssh_00;\n  uint is_stderr;\n  Ssh_conflict c;\n  int **p;\n  int *length_00;\n  Ssh_conflict unaff_s0;\n  int *piVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  int *piStack_64;\n  int iStack_60;\n  int iStack_5c;\n  Ssh_conflict psStack_54;\n  undefined *puStack_50;\n  Packet *pPStack_4c;\n  Ssh_conflict psStack_48;\n  code *pcStack_44;\n  char *data;\n  int length;\n  char *pcStack_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  pcStack_1c = *(char **)PTR___stack_chk_guard_000b2f04;\n  ssh_00 = ssh;\n  c = (Ssh_conflict)pktin;\n  psVar2 = (Ssh_conflict)ssh_channel_msg(ssh,pktin);\n  pPVar3 = pktin;\n  if (psVar2 != (Ssh_conflict)0x0) {\n    unaff_s0 = psVar2;\n    if (pktin->type == 0x5f) {\n      pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);\n      c = (Ssh_conflict)&data;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      ssh_00 = (Ssh_conflict)pktin;\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      iVar4 = psVar2->v1_compressing;\n      is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n      if ((Packet *)&DAT_00000001 < pPVar3) {\n        length = 0;\n      }\n    }\n    else {\n      c = (Ssh_conflict)&data;\n      ssh_00 = (Ssh_conflict)pktin;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      is_stderr = 0;\n      iVar4 = psVar2->v1_compressing;\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n    }\n    ssh_00 = psVar2;\n    pPVar3 = (Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length);\n    if (psVar2->v1_compressing < 1) {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n      if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }\n    }\n    else {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    if ((int)pPVar3 < iVar4) {\n      ssh_00 = psVar2;\n      ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    c = (Ssh_conflict)(uint)(iVar4 < (int)pPVar3);\n    if (((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&\n       (*(int *)psVar2->session_key == 0)) {\n      c = (Ssh_conflict)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_00 = ssh;\n      ssh_throttle_conn(ssh,1);\n    }\n  }\nLAB_0004adf4:\n  if (pcStack_1c == *(char **)puVar1) {\n    return;\n  }\n  pcVar7 = ssh1_msg_channel_data;\n  puVar6 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  puStack_50 = puVar1;\n  piVar5 = *(int **)(puVar6 + 0x67f78);\n  iStack_5c = *piVar5;\n  psStack_54 = unaff_s0;\n  pPStack_4c = pPVar3;\n  psStack_48 = ssh;\n  pcStack_44 = pcVar7;\n  psVar2 = (Ssh_conflict)ssh_channel_msg(ssh_00,(Packet *)c);\n  length_00 = &iStack_60;\n  p = &piStack_64;\n  ssh_pkt_getstring((Packet *)c,(char **)p,length_00);\n  if (psVar2 != (Ssh_conflict)0x0) {\n    p = (int **)0x0;\n    c = psVar2;\n    iVar4 = ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60);\n    length_00 = piStack_64;\n    if ((*(int *)psVar2->session_key == 0) && (0x8000 < iVar4)) {\n      p = (int **)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_throttle_conn(ssh_00,1);\n      c = ssh_00;\n      length_00 = piStack_64;\n    }\n  }\n  if (iStack_5c != *piVar5) {\n    pcVar7 = *(code **)(puVar6 + 0x67f4c);\n    (*pcVar7)();\n    ssh_agentf_got_response((ssh_channel *)c,p,(int)length_00);\n    (**(code **)(pcVar7 + 0x67344))(p);\n    ssh_agentf_try_forward((ssh_channel *)c);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void ssh2_msg_channel_data(Ssh_conflict ssh,Packet *pktin)\n\n{\n  undefined *puVar1;\n  Ssh_conflict psVar2;\n  Packet *pPVar3;\n  int iVar4;\n  Ssh_conflict ssh_00;\n  uint is_stderr;\n  Ssh_conflict c;\n  int **p;\n  int *length_00;\n  Ssh_conflict unaff_s0;\n  int *piVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  int *piStack_64;\n  int iStack_60;\n  int iStack_5c;\n  Ssh_conflict psStack_54;\n  undefined *puStack_50;\n  Packet *pPStack_4c;\n  Ssh_conflict psStack_48;\n  code *pcStack_44;\n  char *data;\n  int length;\n  char *pcStack_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  pcStack_1c = *(char **)PTR___stack_chk_guard_000b2f04;\n  ssh_00 = ssh;\n  c = (Ssh_conflict)pktin;\n  psVar2 = (Ssh_conflict)ssh_channel_msg(ssh,pktin);\n  pPVar3 = pktin;\n  if (psVar2 != (Ssh_conflict)0x0) {\n    unaff_s0 = psVar2;\n    if (pktin->type == 0x5f) {\n      pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);\n      c = (Ssh_conflict)&data;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      ssh_00 = (Ssh_conflict)pktin;\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      iVar4 = psVar2->v1_compressing;\n      is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n      if ((Packet *)&DAT_00000001 < pPVar3) {\n        length = 0;\n      }\n    }\n    else {\n      c = (Ssh_conflict)&data;\n      ssh_00 = (Ssh_conflict)pktin;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      is_stderr = 0;\n      iVar4 = psVar2->v1_compressing;\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n    }\n    ssh_00 = psVar2;\n    pPVar3 = (Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length);\n    if (psVar2->v1_compressing < 1) {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n      if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }\n    }\n    else {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    if ((int)pPVar3 < iVar4) {\n      ssh_00 = psVar2;\n      ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    c = (Ssh_conflict)(uint)(iVar4 < (int)pPVar3);\n    if (((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&\n       (*(int *)psVar2->session_key == 0)) {\n      c = (Ssh_conflict)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_00 = ssh;\n      ssh_throttle_conn(ssh,1);\n    }\n  }\nLAB_0004adf4:\n  if (pcStack_1c == *(char **)puVar1) {\n    return;\n  }\n  pcVar7 = ssh1_msg_channel_data;\n  puVar6 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  puStack_50 = puVar1;\n  piVar5 = *(int **)(puVar6 + 0x67f78);\n  iStack_5c = *piVar5;\n  psStack_54 = unaff_s0;\n  pPStack_4c = pPVar3;\n  psStack_48 = ssh;\n  pcStack_44 = pcVar7;\n  psVar2 = (Ssh_conflict)ssh_channel_msg(ssh_00,(Packet *)c);\n  length_00 = &iStack_60;\n  p = &piStack_64;\n  ssh_pkt_getstring((Packet *)c,(char **)p,length_00);\n  if (psVar2 != (Ssh_conflict)0x0) {\n    p = (int **)0x0;\n    c = psVar2;\n    iVar4 = ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60);\n    length_00 = piStack_64;\n    if ((*(int *)psVar2->session_key == 0) && (0x8000 < iVar4)) {\n      p = (int **)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_throttle_conn(ssh_00,1);\n      c = ssh_00;\n      length_00 = piStack_64;\n    }\n  }\n  if (iStack_5c != *piVar5) {\n    pcVar7 = *(code **)(puVar6 + 0x67f4c);\n    (*pcVar7)();\n    ssh_agentf_got_response((ssh_channel *)c,p,(int)length_00);\n    (**(code **)(pcVar7 + 0x67344))(p);\n    ssh_agentf_try_forward((ssh_channel *)c);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "ssh2_msg_channel_data(Ssh_conflict ssh,Packet *pktin)" identifier (parameter_list "(Ssh_conflict ssh,Packet *pktin)" ( (parameter_declaration "Ssh_conflict ssh" type_identifier identifier) , (parameter_declaration "Packet *pktin" type_identifier (pointer_declarator "*pktin" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  Ssh_conflict psVar2;\n  Packet *pPVar3;\n  int iVar4;\n  Ssh_conflict ssh_00;\n  uint is_stderr;\n  Ssh_conflict c;\n  int **p;\n  int *length_00;\n  Ssh_conflict unaff_s0;\n  int *piVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  int *piStack_64;\n  int iStack_60;\n  int iStack_5c;\n  Ssh_conflict psStack_54;\n  undefined *puStack_50;\n  Packet *pPStack_4c;\n  Ssh_conflict psStack_48;\n  code *pcStack_44;\n  char *data;\n  int length;\n  char *pcStack_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  pcStack_1c = *(char **)PTR___stack_chk_guard_000b2f04;\n  ssh_00 = ssh;\n  c = (Ssh_conflict)pktin;\n  psVar2 = (Ssh_conflict)ssh_channel_msg(ssh,pktin);\n  pPVar3 = pktin;\n  if (psVar2 != (Ssh_conflict)0x0) {\n    unaff_s0 = psVar2;\n    if (pktin->type == 0x5f) {\n      pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);\n      c = (Ssh_conflict)&data;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      ssh_00 = (Ssh_conflict)pktin;\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      iVar4 = psVar2->v1_compressing;\n      is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n      if ((Packet *)&DAT_00000001 < pPVar3) {\n        length = 0;\n      }\n    }\n    else {\n      c = (Ssh_conflict)&data;\n      ssh_00 = (Ssh_conflict)pktin;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      is_stderr = 0;\n      iVar4 = psVar2->v1_compressing;\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n    }\n    ssh_00 = psVar2;\n    pPVar3 = (Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length);\n    if (psVar2->v1_compressing < 1) {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n      if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }\n    }\n    else {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    if ((int)pPVar3 < iVar4) {\n      ssh_00 = psVar2;\n      ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    c = (Ssh_conflict)(uint)(iVar4 < (int)pPVar3);\n    if (((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&\n       (*(int *)psVar2->session_key == 0)) {\n      c = (Ssh_conflict)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_00 = ssh;\n      ssh_throttle_conn(ssh,1);\n    }\n  }\nLAB_0004adf4:\n  if (pcStack_1c == *(char **)puVar1) {\n    return;\n  }\n  pcVar7 = ssh1_msg_channel_data;\n  puVar6 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  puStack_50 = puVar1;\n  piVar5 = *(int **)(puVar6 + 0x67f78);\n  iStack_5c = *piVar5;\n  psStack_54 = unaff_s0;\n  pPStack_4c = pPVar3;\n  psStack_48 = ssh;\n  pcStack_44 = pcVar7;\n  psVar2 = (Ssh_conflict)ssh_channel_msg(ssh_00,(Packet *)c);\n  length_00 = &iStack_60;\n  p = &piStack_64;\n  ssh_pkt_getstring((Packet *)c,(char **)p,length_00);\n  if (psVar2 != (Ssh_conflict)0x0) {\n    p = (int **)0x0;\n    c = psVar2;\n    iVar4 = ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60);\n    length_00 = piStack_64;\n    if ((*(int *)psVar2->session_key == 0) && (0x8000 < iVar4)) {\n      p = (int **)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_throttle_conn(ssh_00,1);\n      c = ssh_00;\n      length_00 = piStack_64;\n    }\n  }\n  if (iStack_5c != *piVar5) {\n    pcVar7 = *(code **)(puVar6 + 0x67f4c);\n    (*pcVar7)();\n    ssh_agentf_got_response((ssh_channel *)c,p,(int)length_00);\n    (**(code **)(pcVar7 + 0x67344))(p);\n    ssh_agentf_try_forward((ssh_channel *)c);\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "Ssh_conflict psVar2;" type_identifier identifier ;) (declaration "Packet *pPVar3;" type_identifier (pointer_declarator "*pPVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Ssh_conflict ssh_00;" type_identifier identifier ;) (declaration "uint is_stderr;" type_identifier identifier ;) (declaration "Ssh_conflict c;" type_identifier identifier ;) (declaration "int **p;" primitive_type (pointer_declarator "**p" * (pointer_declarator "*p" * identifier)) ;) (declaration "int *length_00;" primitive_type (pointer_declarator "*length_00" * identifier) ;) (declaration "Ssh_conflict unaff_s0;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int *piStack_64;" primitive_type (pointer_declarator "*piStack_64" * identifier) ;) (declaration "int iStack_60;" primitive_type identifier ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "Ssh_conflict psStack_54;" type_identifier identifier ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "Packet *pPStack_4c;" type_identifier (pointer_declarator "*pPStack_4c" * identifier) ;) (declaration "Ssh_conflict psStack_48;" type_identifier identifier ;) (declaration "code *pcStack_44;" type_identifier (pointer_declarator "*pcStack_44" * identifier) ;) (declaration "char *data;" primitive_type (pointer_declarator "*data" * identifier) ;) (declaration "int length;" primitive_type identifier ;) (declaration "char *pcStack_1c;" primitive_type (pointer_declarator "*pcStack_1c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000b2f04;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000b2f04" identifier = identifier) ;) (expression_statement "pcStack_1c = *(char **)PTR___stack_chk_guard_000b2f04;" (assignment_expression "pcStack_1c = *(char **)PTR___stack_chk_guard_000b2f04" identifier = (pointer_expression "*(char **)PTR___stack_chk_guard_000b2f04" * (cast_expression "(char **)PTR___stack_chk_guard_000b2f04" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "ssh_00 = ssh;" (assignment_expression "ssh_00 = ssh" identifier = identifier) ;) (expression_statement "c = (Ssh_conflict)pktin;" (assignment_expression "c = (Ssh_conflict)pktin" identifier = (cast_expression "(Ssh_conflict)pktin" ( (type_descriptor "Ssh_conflict" type_identifier) ) identifier)) ;) (expression_statement "psVar2 = (Ssh_conflict)ssh_channel_msg(ssh,pktin);" (assignment_expression "psVar2 = (Ssh_conflict)ssh_channel_msg(ssh,pktin)" identifier = (cast_expression "(Ssh_conflict)ssh_channel_msg(ssh,pktin)" ( (type_descriptor "Ssh_conflict" type_identifier) ) (call_expression "ssh_channel_msg(ssh,pktin)" identifier (argument_list "(ssh,pktin)" ( identifier , identifier ))))) ;) (expression_statement "pPVar3 = pktin;" (assignment_expression "pPVar3 = pktin" identifier = identifier) ;) (if_statement "if (psVar2 != (Ssh_conflict)0x0) {\n    unaff_s0 = psVar2;\n    if (pktin->type == 0x5f) {\n      pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);\n      c = (Ssh_conflict)&data;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      ssh_00 = (Ssh_conflict)pktin;\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      iVar4 = psVar2->v1_compressing;\n      is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n      if ((Packet *)&DAT_00000001 < pPVar3) {\n        length = 0;\n      }\n    }\n    else {\n      c = (Ssh_conflict)&data;\n      ssh_00 = (Ssh_conflict)pktin;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      is_stderr = 0;\n      iVar4 = psVar2->v1_compressing;\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n    }\n    ssh_00 = psVar2;\n    pPVar3 = (Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length);\n    if (psVar2->v1_compressing < 1) {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n      if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }\n    }\n    else {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    if ((int)pPVar3 < iVar4) {\n      ssh_00 = psVar2;\n      ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    c = (Ssh_conflict)(uint)(iVar4 < (int)pPVar3);\n    if (((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&\n       (*(int *)psVar2->session_key == 0)) {\n      c = (Ssh_conflict)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_00 = ssh;\n      ssh_throttle_conn(ssh,1);\n    }\n  }" if (parenthesized_expression "(psVar2 != (Ssh_conflict)0x0)" ( (binary_expression "psVar2 != (Ssh_conflict)0x0" identifier != (cast_expression "(Ssh_conflict)0x0" ( (type_descriptor "Ssh_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n    unaff_s0 = psVar2;\n    if (pktin->type == 0x5f) {\n      pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);\n      c = (Ssh_conflict)&data;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      ssh_00 = (Ssh_conflict)pktin;\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      iVar4 = psVar2->v1_compressing;\n      is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n      if ((Packet *)&DAT_00000001 < pPVar3) {\n        length = 0;\n      }\n    }\n    else {\n      c = (Ssh_conflict)&data;\n      ssh_00 = (Ssh_conflict)pktin;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      is_stderr = 0;\n      iVar4 = psVar2->v1_compressing;\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n    }\n    ssh_00 = psVar2;\n    pPVar3 = (Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length);\n    if (psVar2->v1_compressing < 1) {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n      if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }\n    }\n    else {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    if ((int)pPVar3 < iVar4) {\n      ssh_00 = psVar2;\n      ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }\n    c = (Ssh_conflict)(uint)(iVar4 < (int)pPVar3);\n    if (((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&\n       (*(int *)psVar2->session_key == 0)) {\n      c = (Ssh_conflict)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_00 = ssh;\n      ssh_throttle_conn(ssh,1);\n    }\n  }" { (expression_statement "unaff_s0 = psVar2;" (assignment_expression "unaff_s0 = psVar2" identifier = identifier) ;) (if_statement "if (pktin->type == 0x5f) {\n      pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);\n      c = (Ssh_conflict)&data;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      ssh_00 = (Ssh_conflict)pktin;\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      iVar4 = psVar2->v1_compressing;\n      is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n      if ((Packet *)&DAT_00000001 < pPVar3) {\n        length = 0;\n      }\n    }\n    else {\n      c = (Ssh_conflict)&data;\n      ssh_00 = (Ssh_conflict)pktin;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      is_stderr = 0;\n      iVar4 = psVar2->v1_compressing;\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n    }" if (parenthesized_expression "(pktin->type == 0x5f)" ( (binary_expression "pktin->type == 0x5f" (field_expression "pktin->type" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);\n      c = (Ssh_conflict)&data;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      ssh_00 = (Ssh_conflict)pktin;\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      iVar4 = psVar2->v1_compressing;\n      is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n      if ((Packet *)&DAT_00000001 < pPVar3) {\n        length = 0;\n      }\n    }" { (expression_statement "pPVar3 = (Packet *)ssh_pkt_getuint32(pktin);" (assignment_expression "pPVar3 = (Packet *)ssh_pkt_getuint32(pktin)" identifier = (cast_expression "(Packet *)ssh_pkt_getuint32(pktin)" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ssh_pkt_getuint32(pktin)" identifier (argument_list "(pktin)" ( identifier ))))) ;) (expression_statement "c = (Ssh_conflict)&data;" (assignment_expression "c = (Ssh_conflict)&data" identifier = (binary_expression "(Ssh_conflict)&data" (parenthesized_expression "(Ssh_conflict)" ( identifier )) & identifier)) ;) (expression_statement "ssh_pkt_getstring(pktin,(char **)c,&length);" (call_expression "ssh_pkt_getstring(pktin,(char **)c,&length)" identifier (argument_list "(pktin,(char **)c,&length)" ( identifier , (cast_expression "(char **)c" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , (pointer_expression "&length" & identifier) ))) ;) (expression_statement "ssh_00 = (Ssh_conflict)pktin;" (assignment_expression "ssh_00 = (Ssh_conflict)pktin" identifier = (cast_expression "(Ssh_conflict)pktin" ( (type_descriptor "Ssh_conflict" type_identifier) ) identifier)) ;) (if_statement "if (data == (char *)0x0) goto LAB_0004adf4;" if (parenthesized_expression "(data == (char *)0x0)" ( (binary_expression "data == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004adf4;" goto statement_identifier ;)) (expression_statement "iVar4 = psVar2->v1_compressing;" (assignment_expression "iVar4 = psVar2->v1_compressing" identifier = (field_expression "psVar2->v1_compressing" identifier -> field_identifier)) ;) (expression_statement "is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001);" (assignment_expression "is_stderr = (uint)(pPVar3 == (Packet *)&DAT_00000001)" identifier = (call_expression "(uint)(pPVar3 == (Packet *)&DAT_00000001)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pPVar3 == (Packet *)&DAT_00000001)" ( (binary_expression "pPVar3 == (Packet *)&DAT_00000001" identifier == (cast_expression "(Packet *)&DAT_00000001" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) )))) ;) (expression_statement "*(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;" (assignment_expression "*(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length" (pointer_expression "*(int *)((int)psVar2->session_key + 0x18)" * (cast_expression "(int *)((int)psVar2->session_key + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2->session_key + 0x18)" ( (binary_expression "(int)psVar2->session_key + 0x18" (cast_expression "(int)psVar2->session_key" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar2->session_key" identifier -> field_identifier)) + number_literal) )))) = (binary_expression "*(int *)((int)psVar2->session_key + 0x18) - length" (pointer_expression "*(int *)((int)psVar2->session_key + 0x18)" * (cast_expression "(int *)((int)psVar2->session_key + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2->session_key + 0x18)" ( (binary_expression "(int)psVar2->session_key + 0x18" (cast_expression "(int)psVar2->session_key" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar2->session_key" identifier -> field_identifier)) + number_literal) )))) - identifier)) ;) (expression_statement "psVar2->v1_compressing = iVar4 - length;" (assignment_expression "psVar2->v1_compressing = iVar4 - length" (field_expression "psVar2->v1_compressing" identifier -> field_identifier) = (binary_expression "iVar4 - length" identifier - identifier)) ;) (if_statement "if ((Packet *)&DAT_00000001 < pPVar3) {\n        length = 0;\n      }" if (parenthesized_expression "((Packet *)&DAT_00000001 < pPVar3)" ( (binary_expression "(Packet *)&DAT_00000001 < pPVar3" (cast_expression "(Packet *)&DAT_00000001" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier)) < identifier) )) (compound_statement "{\n        length = 0;\n      }" { (expression_statement "length = 0;" (assignment_expression "length = 0" identifier = number_literal) ;) })) }) (else_clause "else {\n      c = (Ssh_conflict)&data;\n      ssh_00 = (Ssh_conflict)pktin;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      is_stderr = 0;\n      iVar4 = psVar2->v1_compressing;\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n    }" else (compound_statement "{\n      c = (Ssh_conflict)&data;\n      ssh_00 = (Ssh_conflict)pktin;\n      ssh_pkt_getstring(pktin,(char **)c,&length);\n      if (data == (char *)0x0) goto LAB_0004adf4;\n      is_stderr = 0;\n      iVar4 = psVar2->v1_compressing;\n      *(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;\n      psVar2->v1_compressing = iVar4 - length;\n    }" { (expression_statement "c = (Ssh_conflict)&data;" (assignment_expression "c = (Ssh_conflict)&data" identifier = (binary_expression "(Ssh_conflict)&data" (parenthesized_expression "(Ssh_conflict)" ( identifier )) & identifier)) ;) (expression_statement "ssh_00 = (Ssh_conflict)pktin;" (assignment_expression "ssh_00 = (Ssh_conflict)pktin" identifier = (cast_expression "(Ssh_conflict)pktin" ( (type_descriptor "Ssh_conflict" type_identifier) ) identifier)) ;) (expression_statement "ssh_pkt_getstring(pktin,(char **)c,&length);" (call_expression "ssh_pkt_getstring(pktin,(char **)c,&length)" identifier (argument_list "(pktin,(char **)c,&length)" ( identifier , (cast_expression "(char **)c" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , (pointer_expression "&length" & identifier) ))) ;) (if_statement "if (data == (char *)0x0) goto LAB_0004adf4;" if (parenthesized_expression "(data == (char *)0x0)" ( (binary_expression "data == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004adf4;" goto statement_identifier ;)) (expression_statement "is_stderr = 0;" (assignment_expression "is_stderr = 0" identifier = number_literal) ;) (expression_statement "iVar4 = psVar2->v1_compressing;" (assignment_expression "iVar4 = psVar2->v1_compressing" identifier = (field_expression "psVar2->v1_compressing" identifier -> field_identifier)) ;) (expression_statement "*(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length\n      ;" (assignment_expression "*(int *)((int)psVar2->session_key + 0x18) = *(int *)((int)psVar2->session_key + 0x18) - length" (pointer_expression "*(int *)((int)psVar2->session_key + 0x18)" * (cast_expression "(int *)((int)psVar2->session_key + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2->session_key + 0x18)" ( (binary_expression "(int)psVar2->session_key + 0x18" (cast_expression "(int)psVar2->session_key" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar2->session_key" identifier -> field_identifier)) + number_literal) )))) = (binary_expression "*(int *)((int)psVar2->session_key + 0x18) - length" (pointer_expression "*(int *)((int)psVar2->session_key + 0x18)" * (cast_expression "(int *)((int)psVar2->session_key + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2->session_key + 0x18)" ( (binary_expression "(int)psVar2->session_key + 0x18" (cast_expression "(int)psVar2->session_key" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar2->session_key" identifier -> field_identifier)) + number_literal) )))) - identifier)) ;) (expression_statement "psVar2->v1_compressing = iVar4 - length;" (assignment_expression "psVar2->v1_compressing = iVar4 - length" (field_expression "psVar2->v1_compressing" identifier -> field_identifier) = (binary_expression "iVar4 - length" identifier - identifier)) ;) }))) (expression_statement "ssh_00 = psVar2;" (assignment_expression "ssh_00 = psVar2" identifier = identifier) ;) (expression_statement "pPVar3 = (Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length);" (assignment_expression "pPVar3 = (Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length)" identifier = (cast_expression "(Packet *)ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length)" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ssh_channel_data((ssh_channel *)psVar2,is_stderr,data,length)" identifier (argument_list "((ssh_channel *)psVar2,is_stderr,data,length)" ( (cast_expression "(ssh_channel *)psVar2" ( (type_descriptor "ssh_channel *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier ))))) ;) (if_statement "if (psVar2->v1_compressing < 1) {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n      if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }\n    }\n    else {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }" if (parenthesized_expression "(psVar2->v1_compressing < 1)" ( (binary_expression "psVar2->v1_compressing < 1" (field_expression "psVar2->v1_compressing" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n      if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }\n    }" { (expression_statement "iVar4 = *(int *)((int)psVar2->session_key + 0x1c);" (assignment_expression "iVar4 = *(int *)((int)psVar2->session_key + 0x1c)" identifier = (pointer_expression "*(int *)((int)psVar2->session_key + 0x1c)" * (cast_expression "(int *)((int)psVar2->session_key + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2->session_key + 0x1c)" ( (binary_expression "(int)psVar2->session_key + 0x1c" (cast_expression "(int)psVar2->session_key" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar2->session_key" identifier -> field_identifier)) + number_literal) ))))) ;) (if_statement "if ((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)) {\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }" if (parenthesized_expression "((psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000))" ( (binary_expression "(psVar2->agentfwd_enabled == 2) && (iVar4 < 0x40000000)" (parenthesized_expression "(psVar2->agentfwd_enabled == 2)" ( (binary_expression "psVar2->agentfwd_enabled == 2" (field_expression "psVar2->agentfwd_enabled" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(iVar4 < 0x40000000)" ( (binary_expression "iVar4 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n        *(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;\n        FUN_0004ae60();\n        return;\n      }" { (expression_statement "*(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000;" (assignment_expression "*(int *)((int)psVar2->session_key + 0x1c) = iVar4 + 0x4000" (pointer_expression "*(int *)((int)psVar2->session_key + 0x1c)" * (cast_expression "(int *)((int)psVar2->session_key + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2->session_key + 0x1c)" ( (binary_expression "(int)psVar2->session_key + 0x1c" (cast_expression "(int)psVar2->session_key" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar2->session_key" identifier -> field_identifier)) + number_literal) )))) = (binary_expression "iVar4 + 0x4000" identifier + number_literal)) ;) (expression_statement "FUN_0004ae60();" (call_expression "FUN_0004ae60()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }" else (compound_statement "{\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }" { (expression_statement "iVar4 = *(int *)((int)psVar2->session_key + 0x1c);" (assignment_expression "iVar4 = *(int *)((int)psVar2->session_key + 0x1c)" identifier = (pointer_expression "*(int *)((int)psVar2->session_key + 0x1c)" * (cast_expression "(int *)((int)psVar2->session_key + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2->session_key + 0x1c)" ( (binary_expression "(int)psVar2->session_key + 0x1c" (cast_expression "(int)psVar2->session_key" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar2->session_key" identifier -> field_identifier)) + number_literal) ))))) ;) }))) (if_statement "if ((int)pPVar3 < iVar4) {\n      ssh_00 = psVar2;\n      ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }" if (parenthesized_expression "((int)pPVar3 < iVar4)" ( (binary_expression "(int)pPVar3 < iVar4" (cast_expression "(int)pPVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n      ssh_00 = psVar2;\n      ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);\n      iVar4 = *(int *)((int)psVar2->session_key + 0x1c);\n    }" { (expression_statement "ssh_00 = psVar2;" (assignment_expression "ssh_00 = psVar2" identifier = identifier) ;) (expression_statement "ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3);" (call_expression "ssh2_set_window((ssh_channel *)psVar2,iVar4 - (int)pPVar3)" identifier (argument_list "((ssh_channel *)psVar2,iVar4 - (int)pPVar3)" ( (cast_expression "(ssh_channel *)psVar2" ( (type_descriptor "ssh_channel *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "iVar4 - (int)pPVar3" identifier - (cast_expression "(int)pPVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "iVar4 = *(int *)((int)psVar2->session_key + 0x1c);" (assignment_expression "iVar4 = *(int *)((int)psVar2->session_key + 0x1c)" identifier = (pointer_expression "*(int *)((int)psVar2->session_key + 0x1c)" * (cast_expression "(int *)((int)psVar2->session_key + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2->session_key + 0x1c)" ( (binary_expression "(int)psVar2->session_key + 0x1c" (cast_expression "(int)psVar2->session_key" ( (type_descriptor "int" primitive_type) ) (field_expression "psVar2->session_key" identifier -> field_identifier)) + number_literal) ))))) ;) })) (expression_statement "c = (Ssh_conflict)(uint)(iVar4 < (int)pPVar3);" (assignment_expression "c = (Ssh_conflict)(uint)(iVar4 < (int)pPVar3)" identifier = (call_expression "(Ssh_conflict)(uint)(iVar4 < (int)pPVar3)" (call_expression "(Ssh_conflict)(uint)" (parenthesized_expression "(Ssh_conflict)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar4 < (int)pPVar3)" ( (binary_expression "iVar4 < (int)pPVar3" identifier < (cast_expression "(int)pPVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&\n       (*(int *)psVar2->session_key == 0)) {\n      c = (Ssh_conflict)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_00 = ssh;\n      ssh_throttle_conn(ssh,1);\n    }" if (parenthesized_expression "(((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&\n       (*(int *)psVar2->session_key == 0))" ( (binary_expression "((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))) &&\n       (*(int *)psVar2->session_key == 0)" (parenthesized_expression "((c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3))))" ( (binary_expression "(c != (Ssh_conflict)0x0) ||\n        ((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))" (parenthesized_expression "(c != (Ssh_conflict)0x0)" ( (binary_expression "c != (Ssh_conflict)0x0" identifier != (cast_expression "(Ssh_conflict)0x0" ( (type_descriptor "Ssh_conflict" type_identifier) ) number_literal)) )) || (parenthesized_expression "((ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)))" ( (parenthesized_expression "(ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3))" ( (comma_expression "ssh_00 = ssh, iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)" (assignment_expression "ssh_00 = ssh" identifier = identifier) , (comma_expression "iVar4 = ssh_is_simple(ssh), iVar4 != 0 && (0 < (int)pPVar3)" (assignment_expression "iVar4 = ssh_is_simple(ssh)" identifier = (call_expression "ssh_is_simple(ssh)" identifier (argument_list "(ssh)" ( identifier )))) , (binary_expression "iVar4 != 0 && (0 < (int)pPVar3)" (binary_expression "iVar4 != 0" identifier != number_literal) && (parenthesized_expression "(0 < (int)pPVar3)" ( (binary_expression "0 < (int)pPVar3" number_literal < (cast_expression "(int)pPVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) )) ))) )) && (parenthesized_expression "(*(int *)psVar2->session_key == 0)" ( (binary_expression "*(int *)psVar2->session_key == 0" (pointer_expression "*(int *)psVar2->session_key" * (cast_expression "(int *)psVar2->session_key" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "psVar2->session_key" identifier -> field_identifier))) == number_literal) ))) )) (compound_statement "{\n      c = (Ssh_conflict)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_00 = ssh;\n      ssh_throttle_conn(ssh,1);\n    }" { (expression_statement "c = (Ssh_conflict)&DAT_00000001;" (assignment_expression "c = (Ssh_conflict)&DAT_00000001" identifier = (binary_expression "(Ssh_conflict)&DAT_00000001" (parenthesized_expression "(Ssh_conflict)" ( identifier )) & identifier)) ;) (expression_statement "*(int *)psVar2->session_key = 1;" (assignment_expression "*(int *)psVar2->session_key = 1" (pointer_expression "*(int *)psVar2->session_key" * (cast_expression "(int *)psVar2->session_key" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "psVar2->session_key" identifier -> field_identifier))) = number_literal) ;) (expression_statement "ssh_00 = ssh;" (assignment_expression "ssh_00 = ssh" identifier = identifier) ;) (expression_statement "ssh_throttle_conn(ssh,1);" (call_expression "ssh_throttle_conn(ssh,1)" identifier (argument_list "(ssh,1)" ( identifier , number_literal ))) ;) })) })) (labeled_statement "LAB_0004adf4:\n  if (pcStack_1c == *(char **)puVar1) {\n    return;\n  }" statement_identifier : (if_statement "if (pcStack_1c == *(char **)puVar1) {\n    return;\n  }" if (parenthesized_expression "(pcStack_1c == *(char **)puVar1)" ( (binary_expression "pcStack_1c == *(char **)puVar1" identifier == (pointer_expression "*(char **)puVar1" * (cast_expression "(char **)puVar1" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar7 = ssh1_msg_channel_data;" (assignment_expression "pcVar7 = ssh1_msg_channel_data" identifier = identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_fail_000b2ed8;" (assignment_expression "puVar6 = PTR___stack_chk_fail_000b2ed8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000b2ed8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b2ed8" * (cast_expression "(code *)PTR___stack_chk_fail_000b2ed8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_50 = puVar1;" (assignment_expression "puStack_50 = puVar1" identifier = identifier) ;) (expression_statement "piVar5 = *(int **)(puVar6 + 0x67f78);" (assignment_expression "piVar5 = *(int **)(puVar6 + 0x67f78)" identifier = (pointer_expression "*(int **)(puVar6 + 0x67f78)" * (cast_expression "(int **)(puVar6 + 0x67f78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x67f78)" ( (binary_expression "puVar6 + 0x67f78" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar5;" (assignment_expression "iStack_5c = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "psStack_54 = unaff_s0;" (assignment_expression "psStack_54 = unaff_s0" identifier = identifier) ;) (expression_statement "pPStack_4c = pPVar3;" (assignment_expression "pPStack_4c = pPVar3" identifier = identifier) ;) (expression_statement "psStack_48 = ssh;" (assignment_expression "psStack_48 = ssh" identifier = identifier) ;) (expression_statement "pcStack_44 = pcVar7;" (assignment_expression "pcStack_44 = pcVar7" identifier = identifier) ;) (expression_statement "psVar2 = (Ssh_conflict)ssh_channel_msg(ssh_00,(Packet *)c);" (assignment_expression "psVar2 = (Ssh_conflict)ssh_channel_msg(ssh_00,(Packet *)c)" identifier = (cast_expression "(Ssh_conflict)ssh_channel_msg(ssh_00,(Packet *)c)" ( (type_descriptor "Ssh_conflict" type_identifier) ) (call_expression "ssh_channel_msg(ssh_00,(Packet *)c)" identifier (argument_list "(ssh_00,(Packet *)c)" ( identifier , (cast_expression "(Packet *)c" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (expression_statement "length_00 = &iStack_60;" (assignment_expression "length_00 = &iStack_60" identifier = (pointer_expression "&iStack_60" & identifier)) ;) (expression_statement "p = &piStack_64;" (assignment_expression "p = &piStack_64" identifier = (pointer_expression "&piStack_64" & identifier)) ;) (expression_statement "ssh_pkt_getstring((Packet *)c,(char **)p,length_00);" (call_expression "ssh_pkt_getstring((Packet *)c,(char **)p,length_00)" identifier (argument_list "((Packet *)c,(char **)p,length_00)" ( (cast_expression "(Packet *)c" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char **)p" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier ))) ;) (if_statement "if (psVar2 != (Ssh_conflict)0x0) {\n    p = (int **)0x0;\n    c = psVar2;\n    iVar4 = ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60);\n    length_00 = piStack_64;\n    if ((*(int *)psVar2->session_key == 0) && (0x8000 < iVar4)) {\n      p = (int **)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_throttle_conn(ssh_00,1);\n      c = ssh_00;\n      length_00 = piStack_64;\n    }\n  }" if (parenthesized_expression "(psVar2 != (Ssh_conflict)0x0)" ( (binary_expression "psVar2 != (Ssh_conflict)0x0" identifier != (cast_expression "(Ssh_conflict)0x0" ( (type_descriptor "Ssh_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n    p = (int **)0x0;\n    c = psVar2;\n    iVar4 = ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60);\n    length_00 = piStack_64;\n    if ((*(int *)psVar2->session_key == 0) && (0x8000 < iVar4)) {\n      p = (int **)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_throttle_conn(ssh_00,1);\n      c = ssh_00;\n      length_00 = piStack_64;\n    }\n  }" { (expression_statement "p = (int **)0x0;" (assignment_expression "p = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "c = psVar2;" (assignment_expression "c = psVar2" identifier = identifier) ;) (expression_statement "iVar4 = ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60);" (assignment_expression "iVar4 = ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60)" identifier = (call_expression "ssh_channel_data((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60)" identifier (argument_list "((ssh_channel *)psVar2,0,(char *)piStack_64,iStack_60)" ( (cast_expression "(ssh_channel *)psVar2" ( (type_descriptor "ssh_channel *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , (cast_expression "(char *)piStack_64" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "length_00 = piStack_64;" (assignment_expression "length_00 = piStack_64" identifier = identifier) ;) (if_statement "if ((*(int *)psVar2->session_key == 0) && (0x8000 < iVar4)) {\n      p = (int **)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_throttle_conn(ssh_00,1);\n      c = ssh_00;\n      length_00 = piStack_64;\n    }" if (parenthesized_expression "((*(int *)psVar2->session_key == 0) && (0x8000 < iVar4))" ( (binary_expression "(*(int *)psVar2->session_key == 0) && (0x8000 < iVar4)" (parenthesized_expression "(*(int *)psVar2->session_key == 0)" ( (binary_expression "*(int *)psVar2->session_key == 0" (pointer_expression "*(int *)psVar2->session_key" * (cast_expression "(int *)psVar2->session_key" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "psVar2->session_key" identifier -> field_identifier))) == number_literal) )) && (parenthesized_expression "(0x8000 < iVar4)" ( (binary_expression "0x8000 < iVar4" number_literal < identifier) ))) )) (compound_statement "{\n      p = (int **)&DAT_00000001;\n      *(int *)psVar2->session_key = 1;\n      ssh_throttle_conn(ssh_00,1);\n      c = ssh_00;\n      length_00 = piStack_64;\n    }" { (expression_statement "p = (int **)&DAT_00000001;" (assignment_expression "p = (int **)&DAT_00000001" identifier = (cast_expression "(int **)&DAT_00000001" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "*(int *)psVar2->session_key = 1;" (assignment_expression "*(int *)psVar2->session_key = 1" (pointer_expression "*(int *)psVar2->session_key" * (cast_expression "(int *)psVar2->session_key" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "psVar2->session_key" identifier -> field_identifier))) = number_literal) ;) (expression_statement "ssh_throttle_conn(ssh_00,1);" (call_expression "ssh_throttle_conn(ssh_00,1)" identifier (argument_list "(ssh_00,1)" ( identifier , number_literal ))) ;) (expression_statement "c = ssh_00;" (assignment_expression "c = ssh_00" identifier = identifier) ;) (expression_statement "length_00 = piStack_64;" (assignment_expression "length_00 = piStack_64" identifier = identifier) ;) })) })) (if_statement "if (iStack_5c != *piVar5) {\n    pcVar7 = *(code **)(puVar6 + 0x67f4c);\n    (*pcVar7)();\n    ssh_agentf_got_response((ssh_channel *)c,p,(int)length_00);\n    (**(code **)(pcVar7 + 0x67344))(p);\n    ssh_agentf_try_forward((ssh_channel *)c);\n    return;\n  }" if (parenthesized_expression "(iStack_5c != *piVar5)" ( (binary_expression "iStack_5c != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    pcVar7 = *(code **)(puVar6 + 0x67f4c);\n    (*pcVar7)();\n    ssh_agentf_got_response((ssh_channel *)c,p,(int)length_00);\n    (**(code **)(pcVar7 + 0x67344))(p);\n    ssh_agentf_try_forward((ssh_channel *)c);\n    return;\n  }" { (expression_statement "pcVar7 = *(code **)(puVar6 + 0x67f4c);" (assignment_expression "pcVar7 = *(code **)(puVar6 + 0x67f4c)" identifier = (pointer_expression "*(code **)(puVar6 + 0x67f4c)" * (cast_expression "(code **)(puVar6 + 0x67f4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x67f4c)" ( (binary_expression "puVar6 + 0x67f4c" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar7)();" (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "ssh_agentf_got_response((ssh_channel *)c,p,(int)length_00);" (call_expression "ssh_agentf_got_response((ssh_channel *)c,p,(int)length_00)" identifier (argument_list "((ssh_channel *)c,p,(int)length_00)" ( (cast_expression "(ssh_channel *)c" ( (type_descriptor "ssh_channel *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(int)length_00" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "(**(code **)(pcVar7 + 0x67344))(p);" (call_expression "(**(code **)(pcVar7 + 0x67344))(p)" (parenthesized_expression "(**(code **)(pcVar7 + 0x67344))" ( (pointer_expression "**(code **)(pcVar7 + 0x67344)" * (pointer_expression "*(code **)(pcVar7 + 0x67344)" * (cast_expression "(code **)(pcVar7 + 0x67344)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x67344)" ( (binary_expression "pcVar7 + 0x67344" identifier + number_literal) ))))) )) (argument_list "(p)" ( identifier ))) ;) (expression_statement "ssh_agentf_try_forward((ssh_channel *)c);" (call_expression "ssh_agentf_try_forward((ssh_channel *)c)" identifier (argument_list "((ssh_channel *)c)" ( (cast_expression "(ssh_channel *)c" ( (type_descriptor "ssh_channel *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0004ad6c(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int *piVar2;\n  int *piVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar8;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *unaff_s0;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined4 uVar11;\n  undefined4 local_64;\n  undefined4 local_60;\n  int local_5c;\n  int *local_54;\n  undefined *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined4 local_44;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;\n  piVar5 = param_1;\n  piVar6 = param_2;\n  piVar2 = (int *)FUN_00047b40();\n  piVar3 = param_2;\n  if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }\nLAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }\n  uVar11 = 0x4af8c;\n  puVar9 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  local_50 = puVar1;\n  piVar2 = *(int **)(puVar9 + 0x67f78);\n  local_5c = *piVar2;\n  local_54 = unaff_s0;\n  local_4c = piVar3;\n  local_48 = param_1;\n  local_44 = uVar11;\n  piVar3 = (int *)FUN_00047b40();\n  puVar7 = &local_64;\n  FUN_00037704(piVar6,puVar7,&local_60);\n  if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }\n  if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0004ad6c(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int *piVar2;\n  int *piVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar8;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *unaff_s0;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined4 uVar11;\n  undefined4 local_64;\n  undefined4 local_60;\n  int local_5c;\n  int *local_54;\n  undefined *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined4 local_44;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;\n  piVar5 = param_1;\n  piVar6 = param_2;\n  piVar2 = (int *)FUN_00047b40();\n  piVar3 = param_2;\n  if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }\nLAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }\n  uVar11 = 0x4af8c;\n  puVar9 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  local_50 = puVar1;\n  piVar2 = *(int **)(puVar9 + 0x67f78);\n  local_5c = *piVar2;\n  local_54 = unaff_s0;\n  local_4c = piVar3;\n  local_48 = param_1;\n  local_44 = uVar11;\n  piVar3 = (int *)FUN_00047b40();\n  puVar7 = &local_64;\n  FUN_00037704(piVar6,puVar7,&local_60);\n  if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }\n  if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0004ad6c(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int *piVar2;\n  int *piVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar8;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *unaff_s0;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined4 uVar11;\n  undefined4 local_64;\n  undefined4 local_60;\n  int local_5c;\n  int *local_54;\n  undefined *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined4 local_44;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;\n  piVar5 = param_1;\n  piVar6 = param_2;\n  piVar2 = (int *)FUN_00047b40();\n  piVar3 = param_2;\n  if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }\nLAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }\n  uVar11 = 0x4af8c;\n  puVar9 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  local_50 = puVar1;\n  piVar2 = *(int **)(puVar9 + 0x67f78);\n  local_5c = *piVar2;\n  local_54 = unaff_s0;\n  local_4c = piVar3;\n  local_48 = param_1;\n  local_44 = uVar11;\n  piVar3 = (int *)FUN_00047b40();\n  puVar7 = &local_64;\n  FUN_00037704(piVar6,puVar7,&local_60);\n  if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }\n  if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *unaff_s0;" primitive_type (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int *local_54;" primitive_type (pointer_declarator "*local_54" * identifier) ;) (declaration "undefined *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "int *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000b2f04;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000b2f04" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000b2f04;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000b2f04" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000b2f04" * (cast_expression "(int *)PTR___stack_chk_guard_000b2f04" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" identifier = identifier) ;) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" identifier = identifier) ;) (expression_statement "piVar2 = (int *)FUN_00047b40();" (assignment_expression "piVar2 = (int *)FUN_00047b40()" identifier = (cast_expression "(int *)FUN_00047b40()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00047b40()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar3 = param_2;" (assignment_expression "piVar3 = param_2" identifier = identifier) ;) (if_statement "if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }" { (expression_statement "unaff_s0 = piVar2;" (assignment_expression "unaff_s0 = piVar2" identifier = identifier) ;) (if_statement "if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" if (parenthesized_expression "(param_2[2] == 0x5f)" ( (binary_expression "param_2[2] == 0x5f" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }" { (expression_statement "piVar3 = (int *)FUN_00036be8(param_2);" (assignment_expression "piVar3 = (int *)FUN_00036be8(param_2)" identifier = (cast_expression "(int *)FUN_00036be8(param_2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036be8(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "piVar6 = &local_24;" (assignment_expression "piVar6 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;) (expression_statement "FUN_00037704();" (call_expression "FUN_00037704()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (if_statement "if (local_24 == 0) goto LAB_0004adf4;" if (parenthesized_expression "(local_24 == 0)" ( (binary_expression "local_24 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004adf4;" goto statement_identifier ;)) (expression_statement "bVar8 = piVar3 == (int *)0x1;" (assignment_expression "bVar8 = piVar3 == (int *)0x1" identifier = (binary_expression "piVar3 == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "piVar2[0xd] = piVar2[0xd] - local_20;" (assignment_expression "piVar2[0xd] = piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) = (binary_expression "piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "piVar2[0xf] = piVar2[0xf] - local_20;" (assignment_expression "piVar2[0xf] = piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) = (binary_expression "piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) - identifier)) ;) (if_statement "if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }" if (parenthesized_expression "((int *)0x1 < piVar3)" ( (binary_expression "(int *)0x1 < piVar3" (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n        local_20 = 0;\n      }" { (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) })) }) (else_clause "else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" else (compound_statement "{\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" { (expression_statement "piVar6 = &local_24;" (assignment_expression "piVar6 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (expression_statement "FUN_00037704(param_2,piVar6,&local_20);" (call_expression "FUN_00037704(param_2,piVar6,&local_20)" identifier (argument_list "(param_2,piVar6,&local_20)" ( identifier , identifier , (pointer_expression "&local_20" & identifier) ))) ;) (if_statement "if (local_24 == 0) goto LAB_0004adf4;" if (parenthesized_expression "(local_24 == 0)" ( (binary_expression "local_24 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004adf4;" goto statement_identifier ;)) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "piVar2[0xd] = piVar2[0xd] - local_20;" (assignment_expression "piVar2[0xd] = piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) = (binary_expression "piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "piVar2[0xf] = piVar2[0xf] - local_20;" (assignment_expression "piVar2[0xf] = piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) = (binary_expression "piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) - identifier)) ;) }))) (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" identifier = identifier) ;) (expression_statement "piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);" (assignment_expression "piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20)" identifier = (cast_expression "(int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0004ac44(piVar2,bVar8,local_24,local_20)" identifier (argument_list "(piVar2,bVar8,local_24,local_20)" ( identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }" if (parenthesized_expression "(piVar2[0xf] < 1)" ( (binary_expression "piVar2[0xf] < 1" (subscript_expression "piVar2[0xf]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }" { (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" identifier = (subscript_expression "piVar2[0xe]" identifier [ number_literal ])) ;) (if_statement "if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }" if (parenthesized_expression "((piVar2[0x12] == 2) && (iVar4 < 0x40000000))" ( (binary_expression "(piVar2[0x12] == 2) && (iVar4 < 0x40000000)" (parenthesized_expression "(piVar2[0x12] == 2)" ( (binary_expression "piVar2[0x12] == 2" (subscript_expression "piVar2[0x12]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(iVar4 < 0x40000000)" ( (binary_expression "iVar4 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }" { (expression_statement "iVar4 = iVar4 + 0x4000;" (assignment_expression "iVar4 = iVar4 + 0x4000" identifier = (binary_expression "iVar4 + 0x4000" identifier + number_literal)) ;) (expression_statement "piVar2[0xe] = iVar4;" (assignment_expression "piVar2[0xe] = iVar4" (subscript_expression "piVar2[0xe]" identifier [ number_literal ]) = identifier) ;) })) }) (else_clause "else {\n      iVar4 = piVar2[0xe];\n    }" else (compound_statement "{\n      iVar4 = piVar2[0xe];\n    }" { (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" identifier = (subscript_expression "piVar2[0xe]" identifier [ number_literal ])) ;) }))) (if_statement "if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }" if (parenthesized_expression "((int)piVar3 < iVar4)" ( (binary_expression "(int)piVar3 < iVar4" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }" { (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" identifier = identifier) ;) (expression_statement "FUN_00046aec(piVar2,iVar4 - (int)piVar3);" (call_expression "FUN_00046aec(piVar2,iVar4 - (int)piVar3)" identifier (argument_list "(piVar2,iVar4 - (int)piVar3)" ( identifier , (binary_expression "iVar4 - (int)piVar3" identifier - (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" identifier = (subscript_expression "piVar2[0xe]" identifier [ number_literal ])) ;) })) (expression_statement "piVar6 = (int *)(uint)(iVar4 < (int)piVar3);" (assignment_expression "piVar6 = (int *)(uint)(iVar4 < (int)piVar3)" identifier = (cast_expression "(int *)(uint)(iVar4 < (int)piVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar4 < (int)piVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 < (int)piVar3)" ( (binary_expression "iVar4 < (int)piVar3" identifier < (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }" if (parenthesized_expression "(((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0))" ( (binary_expression "((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)" (parenthesized_expression "((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3))))" ( (binary_expression "(piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))" (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))" ( (parenthesized_expression "(piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3))" ( (comma_expression "piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)" (assignment_expression "piVar5 = param_1" identifier = identifier) , (comma_expression "iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)" (assignment_expression "iVar4 = FUN_0003769c(param_1)" identifier = (call_expression "FUN_0003769c(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar4 != 0 && (0 < (int)piVar3)" (binary_expression "iVar4 != 0" identifier != number_literal) && (parenthesized_expression "(0 < (int)piVar3)" ( (binary_expression "0 < (int)piVar3" number_literal < (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) )) ))) )) && (parenthesized_expression "(piVar2[7] == 0)" ( (binary_expression "piVar2[7] == 0" (subscript_expression "piVar2[7]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }" { (expression_statement "piVar6 = (int *)0x1;" (assignment_expression "piVar6 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar2[7] = 1;" (assignment_expression "piVar2[7] = 1" (subscript_expression "piVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" identifier = identifier) ;) (expression_statement "FUN_0003ac44(param_1,1);" (call_expression "FUN_0003ac44(param_1,1)" identifier (argument_list "(param_1,1)" ( identifier , number_literal ))) ;) })) })) (labeled_statement "LAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return;\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;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "uVar11 = 0x4af8c;" (assignment_expression "uVar11 = 0x4af8c" identifier = number_literal) ;) (expression_statement "puVar9 = PTR___stack_chk_fail_000b2ed8;" (assignment_expression "puVar9 = PTR___stack_chk_fail_000b2ed8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000b2ed8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b2ed8" * (cast_expression "(code *)PTR___stack_chk_fail_000b2ed8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "local_50 = puVar1;" (assignment_expression "local_50 = puVar1" identifier = identifier) ;) (expression_statement "piVar2 = *(int **)(puVar9 + 0x67f78);" (assignment_expression "piVar2 = *(int **)(puVar9 + 0x67f78)" identifier = (pointer_expression "*(int **)(puVar9 + 0x67f78)" * (cast_expression "(int **)(puVar9 + 0x67f78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x67f78)" ( (binary_expression "puVar9 + 0x67f78" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar2;" (assignment_expression "local_5c = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "local_54 = unaff_s0;" (assignment_expression "local_54 = unaff_s0" identifier = identifier) ;) (expression_statement "local_4c = piVar3;" (assignment_expression "local_4c = piVar3" identifier = identifier) ;) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" identifier = identifier) ;) (expression_statement "local_44 = uVar11;" (assignment_expression "local_44 = uVar11" identifier = identifier) ;) (expression_statement "piVar3 = (int *)FUN_00047b40();" (assignment_expression "piVar3 = (int *)FUN_00047b40()" identifier = (cast_expression "(int *)FUN_00047b40()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00047b40()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar7 = &local_64;" (assignment_expression "puVar7 = &local_64" identifier = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "FUN_00037704(piVar6,puVar7,&local_60);" (call_expression "FUN_00037704(piVar6,puVar7,&local_60)" identifier (argument_list "(piVar6,puVar7,&local_60)" ( identifier , identifier , (pointer_expression "&local_60" & identifier) ))) ;) (if_statement "if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }" if (parenthesized_expression "(piVar3 != (int *)0x0)" ( (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }" { (expression_statement "puVar7 = (undefined4 *)0x0;" (assignment_expression "puVar7 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar6 = piVar3;" (assignment_expression "piVar6 = piVar3" identifier = identifier) ;) (expression_statement "iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);" (assignment_expression "iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60)" identifier = (call_expression "FUN_0004ac44(piVar3,0,local_64,local_60)" identifier (argument_list "(piVar3,0,local_64,local_60)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }" if (parenthesized_expression "((piVar3[7] == 0) && (0x8000 < iVar4))" ( (binary_expression "(piVar3[7] == 0) && (0x8000 < iVar4)" (parenthesized_expression "(piVar3[7] == 0)" ( (binary_expression "piVar3[7] == 0" (subscript_expression "piVar3[7]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(0x8000 < iVar4)" ( (binary_expression "0x8000 < iVar4" number_literal < identifier) ))) )) (compound_statement "{\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }" { (expression_statement "puVar7 = (undefined4 *)0x1;" (assignment_expression "puVar7 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar3[7] = 1;" (assignment_expression "piVar3[7] = 1" (subscript_expression "piVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0003ac44(piVar5,1);" (call_expression "FUN_0003ac44(piVar5,1)" identifier (argument_list "(piVar5,1)" ( identifier , number_literal ))) ;) (expression_statement "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" identifier = identifier) ;) })) })) (if_statement "if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }" if (parenthesized_expression "(local_5c != *piVar2)" ( (binary_expression "local_5c != *piVar2" identifier != (pointer_expression "*piVar2" * identifier)) )) (compound_statement "{\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }" { (expression_statement "pcVar10 = *(code **)(puVar9 + 0x67f4c);" (assignment_expression "pcVar10 = *(code **)(puVar9 + 0x67f4c)" identifier = (pointer_expression "*(code **)(puVar9 + 0x67f4c)" * (cast_expression "(code **)(puVar9 + 0x67f4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x67f4c)" ( (binary_expression "puVar9 + 0x67f4c" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "FUN_00048fe0();" (call_expression "FUN_00048fe0()" identifier (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar10 + 0x67344))(puVar7);" (call_expression "(**(code **)(pcVar10 + 0x67344))(puVar7)" (parenthesized_expression "(**(code **)(pcVar10 + 0x67344))" ( (pointer_expression "**(code **)(pcVar10 + 0x67344)" * (pointer_expression "*(code **)(pcVar10 + 0x67344)" * (cast_expression "(code **)(pcVar10 + 0x67344)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x67344)" ( (binary_expression "pcVar10 + 0x67344" identifier + number_literal) ))))) )) (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_00049060(piVar6);" (call_expression "FUN_00049060(piVar6)" identifier (argument_list "(piVar6)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) )) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (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) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_0004ad6c(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int *piVar2;\n  int *piVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar8;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *unaff_s0;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined4 uVar11;\n  undefined4 local_64;\n  undefined4 local_60;\n  int local_5c;\n  int *local_54;\n  undefined *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined4 local_44;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;\n  piVar5 = param_1;\n  piVar6 = param_2;\n  piVar2 = (int *)FUN_00047b40();\n  piVar3 = param_2;\n  if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }\nLAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }\n  uVar11 = 0x4af8c;\n  puVar9 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  local_50 = puVar1;\n  piVar2 = *(int **)(puVar9 + 0x67f78);\n  local_5c = *piVar2;\n  local_54 = unaff_s0;\n  local_4c = piVar3;\n  local_48 = param_1;\n  local_44 = uVar11;\n  piVar3 = (int *)FUN_00047b40();\n  puVar7 = &local_64;\n  FUN_00037704(piVar6,puVar7,&local_60);\n  if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }\n  if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0004ad6c(int *param_1,int *param_2)" (identifier "FUN_0004ad6c") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int *piVar2;\n  int *piVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar8;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *unaff_s0;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined4 uVar11;\n  undefined4 local_64;\n  undefined4 local_60;\n  int local_5c;\n  int *local_54;\n  undefined *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined4 local_44;\n  int local_24;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;\n  piVar5 = param_1;\n  piVar6 = param_2;\n  piVar2 = (int *)FUN_00047b40();\n  piVar3 = param_2;\n  if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }\nLAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }\n  uVar11 = 0x4af8c;\n  puVar9 = PTR___stack_chk_fail_000b2ed8;\n  (*(code *)PTR___stack_chk_fail_000b2ed8)();\n  local_50 = puVar1;\n  piVar2 = *(int **)(puVar9 + 0x67f78);\n  local_5c = *piVar2;\n  local_54 = unaff_s0;\n  local_4c = piVar3;\n  local_48 = param_1;\n  local_44 = uVar11;\n  piVar3 = (int *)FUN_00047b40();\n  puVar7 = &local_64;\n  FUN_00037704(piVar6,puVar7,&local_60);\n  if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }\n  if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int *unaff_s0;" (primitive_type "int") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "code *pcVar10;" (type_identifier "code") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int *local_54;" (primitive_type "int") (pointer_declarator "*local_54" (* "*") (identifier "local_54")) (; ";")) (declaration "undefined *local_50;" (type_identifier "undefined") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "int *local_4c;" (primitive_type "int") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "int *local_48;" (primitive_type "int") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_000b2f04;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000b2f04" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_000b2f04")) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000b2f04;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000b2f04" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000b2f04" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000b2f04" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000b2f04")))) (; ";")) (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" (identifier "piVar5") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar6 = param_2;" (assignment_expression "piVar6 = param_2" (identifier "piVar6") (= "=") (identifier "param_2")) (; ";")) (expression_statement "piVar2 = (int *)FUN_00047b40();" (assignment_expression "piVar2 = (int *)FUN_00047b40()" (identifier "piVar2") (= "=") (cast_expression "(int *)FUN_00047b40()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00047b40()" (identifier "FUN_00047b40") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar3 = param_2;" (assignment_expression "piVar3 = param_2" (identifier "piVar3") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (piVar2 != (int *)0x0) {\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }" (if "if") (parenthesized_expression "(piVar2 != (int *)0x0)" (( "(") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    unaff_s0 = piVar2;\n    if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }\n    piVar5 = piVar2;\n    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);\n    if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }\n    if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }\n    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);\n    if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }\n  }" ({ "{") (expression_statement "unaff_s0 = piVar2;" (assignment_expression "unaff_s0 = piVar2" (identifier "unaff_s0") (= "=") (identifier "piVar2")) (; ";")) (if_statement "if (param_2[2] == 0x5f) {\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }\n    else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" (if "if") (parenthesized_expression "(param_2[2] == 0x5f)" (( "(") (binary_expression "param_2[2] == 0x5f" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x5f")) () ")")) (compound_statement "{\n      piVar3 = (int *)FUN_00036be8(param_2);\n      piVar6 = &local_24;\n      FUN_00037704();\n      piVar5 = param_2;\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = piVar3 == (int *)0x1;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n      if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }\n    }" ({ "{") (expression_statement "piVar3 = (int *)FUN_00036be8(param_2);" (assignment_expression "piVar3 = (int *)FUN_00036be8(param_2)" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_00036be8(param_2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00036be8(param_2)" (identifier "FUN_00036be8") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (expression_statement "piVar6 = &local_24;" (assignment_expression "piVar6 = &local_24" (identifier "piVar6") (= "=") (pointer_expression "&local_24" (& "&") (identifier "local_24"))) (; ";")) (expression_statement "FUN_00037704();" (call_expression "FUN_00037704()" (identifier "FUN_00037704") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" (identifier "piVar5") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (local_24 == 0) goto LAB_0004adf4;" (if "if") (parenthesized_expression "(local_24 == 0)" (( "(") (binary_expression "local_24 == 0" (identifier "local_24") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004adf4;" (goto "goto") (statement_identifier "LAB_0004adf4") (; ";"))) (expression_statement "bVar8 = piVar3 == (int *)0x1;" (assignment_expression "bVar8 = piVar3 == (int *)0x1" (identifier "bVar8") (= "=") (binary_expression "piVar3 == (int *)0x1" (identifier "piVar3") (== "==") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1")))) (; ";")) (expression_statement "piVar2[0xd] = piVar2[0xd] - local_20;" (assignment_expression "piVar2[0xd] = piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" (identifier "piVar2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (binary_expression "piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" (identifier "piVar2") ([ "[") (number_literal "0xd") (] "]")) (- "-") (identifier "local_20"))) (; ";")) (expression_statement "piVar2[0xf] = piVar2[0xf] - local_20;" (assignment_expression "piVar2[0xf] = piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" (identifier "piVar2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (binary_expression "piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" (identifier "piVar2") ([ "[") (number_literal "0xf") (] "]")) (- "-") (identifier "local_20"))) (; ";")) (if_statement "if ((int *)0x1 < piVar3) {\n        local_20 = 0;\n      }" (if "if") (parenthesized_expression "((int *)0x1 < piVar3)" (( "(") (binary_expression "(int *)0x1 < piVar3" (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1")) (< "<") (identifier "piVar3")) () ")")) (compound_statement "{\n        local_20 = 0;\n      }" ({ "{") (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" (else "else") (compound_statement "{\n      piVar6 = &local_24;\n      piVar5 = param_2;\n      FUN_00037704(param_2,piVar6,&local_20);\n      if (local_24 == 0) goto LAB_0004adf4;\n      bVar8 = false;\n      piVar2[0xd] = piVar2[0xd] - local_20;\n      piVar2[0xf] = piVar2[0xf] - local_20;\n    }" ({ "{") (expression_statement "piVar6 = &local_24;" (assignment_expression "piVar6 = &local_24" (identifier "piVar6") (= "=") (pointer_expression "&local_24" (& "&") (identifier "local_24"))) (; ";")) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" (identifier "piVar5") (= "=") (identifier "param_2")) (; ";")) (expression_statement "FUN_00037704(param_2,piVar6,&local_20);" (call_expression "FUN_00037704(param_2,piVar6,&local_20)" (identifier "FUN_00037704") (argument_list "(param_2,piVar6,&local_20)" (( "(") (identifier "param_2") (, ",") (identifier "piVar6") (, ",") (pointer_expression "&local_20" (& "&") (identifier "local_20")) () ")"))) (; ";")) (if_statement "if (local_24 == 0) goto LAB_0004adf4;" (if "if") (parenthesized_expression "(local_24 == 0)" (( "(") (binary_expression "local_24 == 0" (identifier "local_24") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004adf4;" (goto "goto") (statement_identifier "LAB_0004adf4") (; ";"))) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" (identifier "bVar8") (= "=") (false "false")) (; ";")) (expression_statement "piVar2[0xd] = piVar2[0xd] - local_20;" (assignment_expression "piVar2[0xd] = piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" (identifier "piVar2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (binary_expression "piVar2[0xd] - local_20" (subscript_expression "piVar2[0xd]" (identifier "piVar2") ([ "[") (number_literal "0xd") (] "]")) (- "-") (identifier "local_20"))) (; ";")) (expression_statement "piVar2[0xf] = piVar2[0xf] - local_20;" (assignment_expression "piVar2[0xf] = piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" (identifier "piVar2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (binary_expression "piVar2[0xf] - local_20" (subscript_expression "piVar2[0xf]" (identifier "piVar2") ([ "[") (number_literal "0xf") (] "]")) (- "-") (identifier "local_20"))) (; ";")) (} "}")))) (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" (identifier "piVar5") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);" (assignment_expression "piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20)" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0004ac44(piVar2,bVar8,local_24,local_20)" (identifier "FUN_0004ac44") (argument_list "(piVar2,bVar8,local_24,local_20)" (( "(") (identifier "piVar2") (, ",") (identifier "bVar8") (, ",") (identifier "local_24") (, ",") (identifier "local_20") () ")"))))) (; ";")) (if_statement "if (piVar2[0xf] < 1) {\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }\n    else {\n      iVar4 = piVar2[0xe];\n    }" (if "if") (parenthesized_expression "(piVar2[0xf] < 1)" (( "(") (binary_expression "piVar2[0xf] < 1" (subscript_expression "piVar2[0xf]" (identifier "piVar2") ([ "[") (number_literal "0xf") (] "]")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      iVar4 = piVar2[0xe];\n      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }\n    }" ({ "{") (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" (identifier "iVar4") (= "=") (subscript_expression "piVar2[0xe]" (identifier "piVar2") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (if_statement "if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }" (if "if") (parenthesized_expression "((piVar2[0x12] == 2) && (iVar4 < 0x40000000))" (( "(") (binary_expression "(piVar2[0x12] == 2) && (iVar4 < 0x40000000)" (parenthesized_expression "(piVar2[0x12] == 2)" (( "(") (binary_expression "piVar2[0x12] == 2" (subscript_expression "piVar2[0x12]" (identifier "piVar2") ([ "[") (number_literal "0x12") (] "]")) (== "==") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 < 0x40000000)" (( "(") (binary_expression "iVar4 < 0x40000000" (identifier "iVar4") (< "<") (number_literal "0x40000000")) () ")"))) () ")")) (compound_statement "{\n        iVar4 = iVar4 + 0x4000;\n        piVar2[0xe] = iVar4;\n      }" ({ "{") (expression_statement "iVar4 = iVar4 + 0x4000;" (assignment_expression "iVar4 = iVar4 + 0x4000" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 0x4000" (identifier "iVar4") (+ "+") (number_literal "0x4000"))) (; ";")) (expression_statement "piVar2[0xe] = iVar4;" (assignment_expression "piVar2[0xe] = iVar4" (subscript_expression "piVar2[0xe]" (identifier "piVar2") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      iVar4 = piVar2[0xe];\n    }" (else "else") (compound_statement "{\n      iVar4 = piVar2[0xe];\n    }" ({ "{") (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" (identifier "iVar4") (= "=") (subscript_expression "piVar2[0xe]" (identifier "piVar2") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (} "}")))) (if_statement "if ((int)piVar3 < iVar4) {\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }" (if "if") (parenthesized_expression "((int)piVar3 < iVar4)" (( "(") (binary_expression "(int)piVar3 < iVar4" (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3")) (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n      piVar5 = piVar2;\n      FUN_00046aec(piVar2,iVar4 - (int)piVar3);\n      iVar4 = piVar2[0xe];\n    }" ({ "{") (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" (identifier "piVar5") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "FUN_00046aec(piVar2,iVar4 - (int)piVar3);" (call_expression "FUN_00046aec(piVar2,iVar4 - (int)piVar3)" (identifier "FUN_00046aec") (argument_list "(piVar2,iVar4 - (int)piVar3)" (( "(") (identifier "piVar2") (, ",") (binary_expression "iVar4 - (int)piVar3" (identifier "iVar4") (- "-") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) () ")"))) (; ";")) (expression_statement "iVar4 = piVar2[0xe];" (assignment_expression "iVar4 = piVar2[0xe]" (identifier "iVar4") (= "=") (subscript_expression "piVar2[0xe]" (identifier "piVar2") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (} "}"))) (expression_statement "piVar6 = (int *)(uint)(iVar4 < (int)piVar3);" (assignment_expression "piVar6 = (int *)(uint)(iVar4 < (int)piVar3)" (identifier "piVar6") (= "=") (cast_expression "(int *)(uint)(iVar4 < (int)piVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar4 < (int)piVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar4 < (int)piVar3)" (( "(") (binary_expression "iVar4 < (int)piVar3" (identifier "iVar4") (< "<") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) () ")"))))) (; ";")) (if_statement "if (((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)) {\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }" (if "if") (parenthesized_expression "(((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0))" (( "(") (binary_expression "((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&\n       (piVar2[7] == 0)" (parenthesized_expression "((piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3))))" (( "(") (binary_expression "(piVar6 != (int *)0x0) ||\n        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))" (parenthesized_expression "(piVar6 != (int *)0x0)" (( "(") (binary_expression "piVar6 != (int *)0x0" (identifier "piVar6") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))" (( "(") (parenthesized_expression "(piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3))" (( "(") (comma_expression "piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)" (assignment_expression "piVar5 = param_1" (identifier "piVar5") (= "=") (identifier "param_1")) (, ",") (comma_expression "iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)" (assignment_expression "iVar4 = FUN_0003769c(param_1)" (identifier "iVar4") (= "=") (call_expression "FUN_0003769c(param_1)" (identifier "FUN_0003769c") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar4 != 0 && (0 < (int)piVar3)" (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(0 < (int)piVar3)" (( "(") (binary_expression "0 < (int)piVar3" (number_literal "0") (< "<") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) () ")"))))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(piVar2[7] == 0)" (( "(") (binary_expression "piVar2[7] == 0" (subscript_expression "piVar2[7]" (identifier "piVar2") ([ "[") (number_literal "7") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      piVar6 = (int *)0x1;\n      piVar2[7] = 1;\n      piVar5 = param_1;\n      FUN_0003ac44(param_1,1);\n    }" ({ "{") (expression_statement "piVar6 = (int *)0x1;" (assignment_expression "piVar6 = (int *)0x1" (identifier "piVar6") (= "=") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "piVar2[7] = 1;" (assignment_expression "piVar2[7] = 1" (subscript_expression "piVar2[7]" (identifier "piVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" (identifier "piVar5") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_0003ac44(param_1,1);" (call_expression "FUN_0003ac44(param_1,1)" (identifier "FUN_0003ac44") (argument_list "(param_1,1)" (( "(") (identifier "param_1") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0004adf4:\n  if (local_1c == *(int *)puVar1) {\n    return;\n  }" (statement_identifier "LAB_0004adf4") (: ":") (if_statement "if (local_1c == *(int *)puVar1) {\n    return;\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;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "uVar11 = 0x4af8c;" (assignment_expression "uVar11 = 0x4af8c" (identifier "uVar11") (= "=") (number_literal "0x4af8c")) (; ";")) (expression_statement "puVar9 = PTR___stack_chk_fail_000b2ed8;" (assignment_expression "puVar9 = PTR___stack_chk_fail_000b2ed8" (identifier "puVar9") (= "=") (identifier "PTR___stack_chk_fail_000b2ed8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000b2ed8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000b2ed8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000b2ed8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000b2ed8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_50 = puVar1;" (assignment_expression "local_50 = puVar1" (identifier "local_50") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "piVar2 = *(int **)(puVar9 + 0x67f78);" (assignment_expression "piVar2 = *(int **)(puVar9 + 0x67f78)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(puVar9 + 0x67f78)" (* "*") (cast_expression "(int **)(puVar9 + 0x67f78)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 0x67f78)" (( "(") (binary_expression "puVar9 + 0x67f78" (identifier "puVar9") (+ "+") (number_literal "0x67f78")) () ")"))))) (; ";")) (expression_statement "local_5c = *piVar2;" (assignment_expression "local_5c = *piVar2" (identifier "local_5c") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "local_54 = unaff_s0;" (assignment_expression "local_54 = unaff_s0" (identifier "local_54") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "local_4c = piVar3;" (assignment_expression "local_4c = piVar3" (identifier "local_4c") (= "=") (identifier "piVar3")) (; ";")) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" (identifier "local_48") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_44 = uVar11;" (assignment_expression "local_44 = uVar11" (identifier "local_44") (= "=") (identifier "uVar11")) (; ";")) (expression_statement "piVar3 = (int *)FUN_00047b40();" (assignment_expression "piVar3 = (int *)FUN_00047b40()" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_00047b40()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00047b40()" (identifier "FUN_00047b40") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar7 = &local_64;" (assignment_expression "puVar7 = &local_64" (identifier "puVar7") (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (expression_statement "FUN_00037704(piVar6,puVar7,&local_60);" (call_expression "FUN_00037704(piVar6,puVar7,&local_60)" (identifier "FUN_00037704") (argument_list "(piVar6,puVar7,&local_60)" (( "(") (identifier "piVar6") (, ",") (identifier "puVar7") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")"))) (; ";")) (if_statement "if (piVar3 != (int *)0x0) {\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }" (if "if") (parenthesized_expression "(piVar3 != (int *)0x0)" (( "(") (binary_expression "piVar3 != (int *)0x0" (identifier "piVar3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar7 = (undefined4 *)0x0;\n    piVar6 = piVar3;\n    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);\n    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }\n  }" ({ "{") (expression_statement "puVar7 = (undefined4 *)0x0;" (assignment_expression "puVar7 = (undefined4 *)0x0" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar6 = piVar3;" (assignment_expression "piVar6 = piVar3" (identifier "piVar6") (= "=") (identifier "piVar3")) (; ";")) (expression_statement "iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);" (assignment_expression "iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60)" (identifier "iVar4") (= "=") (call_expression "FUN_0004ac44(piVar3,0,local_64,local_60)" (identifier "FUN_0004ac44") (argument_list "(piVar3,0,local_64,local_60)" (( "(") (identifier "piVar3") (, ",") (number_literal "0") (, ",") (identifier "local_64") (, ",") (identifier "local_60") () ")")))) (; ";")) (if_statement "if ((piVar3[7] == 0) && (0x8000 < iVar4)) {\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }" (if "if") (parenthesized_expression "((piVar3[7] == 0) && (0x8000 < iVar4))" (( "(") (binary_expression "(piVar3[7] == 0) && (0x8000 < iVar4)" (parenthesized_expression "(piVar3[7] == 0)" (( "(") (binary_expression "piVar3[7] == 0" (subscript_expression "piVar3[7]" (identifier "piVar3") ([ "[") (number_literal "7") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(0x8000 < iVar4)" (( "(") (binary_expression "0x8000 < iVar4" (number_literal "0x8000") (< "<") (identifier "iVar4")) () ")"))) () ")")) (compound_statement "{\n      puVar7 = (undefined4 *)0x1;\n      piVar3[7] = 1;\n      FUN_0003ac44(piVar5,1);\n      piVar6 = piVar5;\n    }" ({ "{") (expression_statement "puVar7 = (undefined4 *)0x1;" (assignment_expression "puVar7 = (undefined4 *)0x1" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "piVar3[7] = 1;" (assignment_expression "piVar3[7] = 1" (subscript_expression "piVar3[7]" (identifier "piVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_0003ac44(piVar5,1);" (call_expression "FUN_0003ac44(piVar5,1)" (identifier "FUN_0003ac44") (argument_list "(piVar5,1)" (( "(") (identifier "piVar5") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" (identifier "piVar6") (= "=") (identifier "piVar5")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_5c != *piVar2) {\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }" (if "if") (parenthesized_expression "(local_5c != *piVar2)" (( "(") (binary_expression "local_5c != *piVar2" (identifier "local_5c") (!= "!=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) () ")")) (compound_statement "{\n    pcVar10 = *(code **)(puVar9 + 0x67f4c);\n    (*pcVar10)();\n    FUN_00048fe0();\n    (**(code **)(pcVar10 + 0x67344))(puVar7);\n    FUN_00049060(piVar6);\n    return;\n  }" ({ "{") (expression_statement "pcVar10 = *(code **)(puVar9 + 0x67f4c);" (assignment_expression "pcVar10 = *(code **)(puVar9 + 0x67f4c)" (identifier "pcVar10") (= "=") (pointer_expression "*(code **)(puVar9 + 0x67f4c)" (* "*") (cast_expression "(code **)(puVar9 + 0x67f4c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 0x67f4c)" (( "(") (binary_expression "puVar9 + 0x67f4c" (identifier "puVar9") (+ "+") (number_literal "0x67f4c")) () ")"))))) (; ";")) (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" (( "(") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00048fe0();" (call_expression "FUN_00048fe0()" (identifier "FUN_00048fe0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(pcVar10 + 0x67344))(puVar7);" (call_expression "(**(code **)(pcVar10 + 0x67344))(puVar7)" (parenthesized_expression "(**(code **)(pcVar10 + 0x67344))" (( "(") (pointer_expression "**(code **)(pcVar10 + 0x67344)" (* "*") (pointer_expression "*(code **)(pcVar10 + 0x67344)" (* "*") (cast_expression "(code **)(pcVar10 + 0x67344)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar10 + 0x67344)" (( "(") (binary_expression "pcVar10 + 0x67344" (identifier "pcVar10") (+ "+") (number_literal "0x67344")) () ")"))))) () ")")) (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "FUN_00049060(piVar6);" (call_expression "FUN_00049060(piVar6)" (identifier "FUN_00049060") (argument_list "(piVar6)" (( "(") (identifier "piVar6") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void function_1(type_1 ssh,type_2 *pktin)

{
  type_3 *puVar1;
  type_1 var_2;
  type_2 *var_6;
  int var_8;
  type_1 ssh_00;
  type_4 is_stderr;
  type_1 var_12;
  int **p;
  int *length_00;
  type_1 unaff_s0;
  int *piVar5;
  type_3 *var_17;
  type_5 *var_20;
  int *piStack_64;
  int iStack_60;
  int var_18;
  type_1 psStack_54;
  type_3 *puStack_50;
  type_2 *pPStack_4c;
  type_1 psStack_48;
  type_5 *pcStack_44;
  char *var_4;
  int var_7;
  char *var_16;
  
  puVar1 = PTR___stack_chk_guard_000b2f04;
  var_16 = *(char **)PTR___stack_chk_guard_000b2f04;
  ssh_00 = ssh;
  var_12 = (type_1)pktin;
  var_2 = (type_1)var_1(ssh,pktin);
  var_6 = pktin;
  if (var_2 != (type_1)0x0) {
    unaff_s0 = var_2;
    if (pktin->type == 0x5f) {
      var_6 = (type_2 *)var_3(pktin);
      var_12 = (type_1)&var_4;
      var_5(pktin,(char **)var_12,&var_7);
      ssh_00 = (type_1)pktin;
      if (var_4 == (char *)0x0) goto LAB_0004adf4;
      var_8 = var_2->v1_compressing;
      is_stderr = (type_4)(var_6 == (type_2 *)&var_14);
      *(int *)((int)var_2->session_key + 0x18) = *(int *)((int)var_2->session_key + 0x18) - var_7
      ;
      var_2->v1_compressing = var_8 - var_7;
      if ((type_2 *)&var_14 < var_6) {
        var_7 = 0;
      }
    }
    else {
      var_12 = (type_1)&var_4;
      ssh_00 = (type_1)pktin;
      var_5(pktin,(char **)var_12,&var_7);
      if (var_4 == (char *)0x0) goto LAB_0004adf4;
      is_stderr = 0;
      var_8 = var_2->v1_compressing;
      *(int *)((int)var_2->session_key + 0x18) = *(int *)((int)var_2->session_key + 0x18) - var_7
      ;
      var_2->v1_compressing = var_8 - var_7;
    }
    ssh_00 = var_2;
    var_6 = (type_2 *)var_9((type_6 *)var_2,is_stderr,var_4,var_7);
    if (var_2->v1_compressing < 1) {
      var_8 = *(int *)((int)var_2->session_key + 0x1c);
      if ((var_2->agentfwd_enabled == 2) && (var_8 < 0x40000000)) {
        *(int *)((int)var_2->session_key + 0x1c) = var_8 + 0x4000;
        var_10();
        return;
      }
    }
    else {
      var_8 = *(int *)((int)var_2->session_key + 0x1c);
    }
    if ((int)var_6 < var_8) {
      ssh_00 = var_2;
      var_11((type_6 *)var_2,var_8 - (int)var_6);
      var_8 = *(int *)((int)var_2->session_key + 0x1c);
    }
    var_12 = (type_1)(type_4)(var_8 < (int)var_6);
    if (((var_12 != (type_1)0x0) ||
        ((ssh_00 = ssh, var_8 = var_13(ssh), var_8 != 0 && (0 < (int)var_6)))) &&
       (*(int *)var_2->session_key == 0)) {
      var_12 = (type_1)&var_14;
      *(int *)var_2->session_key = 1;
      ssh_00 = ssh;
      var_15(ssh,1);
    }
  }
LAB_0004adf4:
  if (var_16 == *(char **)puVar1) {
    return;
  }
  var_20 = ssh1_msg_channel_data;
  var_17 = PTR___stack_chk_fail_000b2ed8;
  (*(type_5 *)PTR___stack_chk_fail_000b2ed8)();
  puStack_50 = puVar1;
  piVar5 = *(int **)(var_17 + 0x67f78);
  var_18 = *piVar5;
  psStack_54 = unaff_s0;
  pPStack_4c = var_6;
  psStack_48 = ssh;
  pcStack_44 = var_20;
  var_2 = (type_1)var_1(ssh_00,(type_2 *)var_12);
  length_00 = &iStack_60;
  p = &piStack_64;
  var_5((type_2 *)var_12,(char **)p,length_00);
  if (var_2 != (type_1)0x0) {
    p = (int **)0x0;
    var_12 = var_2;
    var_8 = var_9((type_6 *)var_2,0,(char *)piStack_64,iStack_60);
    length_00 = piStack_64;
    if ((*(int *)var_2->session_key == 0) && (0x8000 < var_8)) {
      p = (int **)&var_14;
      *(int *)var_2->session_key = 1;
      var_15(ssh_00,1);
      var_12 = ssh_00;
      length_00 = piStack_64;
    }
  }
  if (var_18 != *piVar5) {
    var_20 = *(type_5 **)(var_17 + 0x67f4c);
    (*var_20)();
    var_19((type_6 *)var_12,p,(int)length_00);
    (**(type_5 **)(var_20 + 0x67344))(p);
    var_21((type_6 *)var_12);
    return;
  }
  return;
}


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

void MASKED(int *param_1,int *param_2)

{
  undefined *puVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  int *piVar5;
  bool bVar8;
  int *piVar6;
  undefined4 *puVar7;
  int *unaff_s0;
  undefined *puVar9;
  code *pcVar10;
  undefined4 uVar11;
  undefined4 local_64;
  undefined4 local_60;
  int local_5c;
  int *local_54;
  undefined *local_50;
  int *local_4c;
  int *local_48;
  undefined4 local_44;
  int local_24;
  int local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_000b2f04;
  local_1c = *(int *)PTR___stack_chk_guard_000b2f04;
  piVar5 = param_1;
  piVar6 = param_2;
  piVar2 = (int *)FUN_00047b40();
  piVar3 = param_2;
  if (piVar2 != (int *)0x0) {
    unaff_s0 = piVar2;
    if (param_2[2] == 0x5f) {
      piVar3 = (int *)FUN_00036be8(param_2);
      piVar6 = &local_24;
      FUN_00037704();
      piVar5 = param_2;
      if (local_24 == 0) goto LAB_0004adf4;
      bVar8 = piVar3 == (int *)0x1;
      piVar2[0xd] = piVar2[0xd] - local_20;
      piVar2[0xf] = piVar2[0xf] - local_20;
      if ((int *)0x1 < piVar3) {
        local_20 = 0;
      }
    }
    else {
      piVar6 = &local_24;
      piVar5 = param_2;
      FUN_00037704(param_2,piVar6,&local_20);
      if (local_24 == 0) goto LAB_0004adf4;
      bVar8 = false;
      piVar2[0xd] = piVar2[0xd] - local_20;
      piVar2[0xf] = piVar2[0xf] - local_20;
    }
    piVar5 = piVar2;
    piVar3 = (int *)FUN_0004ac44(piVar2,bVar8,local_24,local_20);
    if (piVar2[0xf] < 1) {
      iVar4 = piVar2[0xe];
      if ((piVar2[0x12] == 2) && (iVar4 < 0x40000000)) {
        iVar4 = iVar4 + 0x4000;
        piVar2[0xe] = iVar4;
      }
    }
    else {
      iVar4 = piVar2[0xe];
    }
    if ((int)piVar3 < iVar4) {
      piVar5 = piVar2;
      FUN_00046aec(piVar2,iVar4 - (int)piVar3);
      iVar4 = piVar2[0xe];
    }
    piVar6 = (int *)(uint)(iVar4 < (int)piVar3);
    if (((piVar6 != (int *)0x0) ||
        ((piVar5 = param_1, iVar4 = FUN_0003769c(param_1), iVar4 != 0 && (0 < (int)piVar3)))) &&
       (piVar2[7] == 0)) {
      piVar6 = (int *)0x1;
      piVar2[7] = 1;
      piVar5 = param_1;
      FUN_0003ac44(param_1,1);
    }
  }
LAB_0004adf4:
  if (local_1c == *(int *)puVar1) {
    return;
  }
  uVar11 = 0x4af8c;
  puVar9 = PTR___stack_chk_fail_000b2ed8;
  (*(code *)PTR___stack_chk_fail_000b2ed8)();
  local_50 = puVar1;
  piVar2 = *(int **)(puVar9 + 0x67f78);
  local_5c = *piVar2;
  local_54 = unaff_s0;
  local_4c = piVar3;
  local_48 = param_1;
  local_44 = uVar11;
  piVar3 = (int *)FUN_00047b40();
  puVar7 = &local_64;
  FUN_00037704(piVar6,puVar7,&local_60);
  if (piVar3 != (int *)0x0) {
    puVar7 = (undefined4 *)0x0;
    piVar6 = piVar3;
    iVar4 = FUN_0004ac44(piVar3,0,local_64,local_60);
    if ((piVar3[7] == 0) && (0x8000 < iVar4)) {
      puVar7 = (undefined4 *)0x1;
      piVar3[7] = 1;
      FUN_0003ac44(piVar5,1);
      piVar6 = piVar5;
    }
  }
  if (local_5c != *piVar2) {
    pcVar10 = *(code **)(puVar9 + 0x67f4c);
    (*pcVar10)();
    FUN_00048fe0();
    (**(code **)(pcVar10 + 0x67344))(puVar7);
    FUN_00049060(piVar6);
    return;
  }
  return;
}

