
void wait_for_async(SSL *s)

{
  undefined *puVar1;
  int iVar2;
  SSL *pSVar3;
  __fd_mask *p_Var4;
  int iVar5;
  byte *pbVar6;
  uint uVar7;
  SSL *pSVar8;
  uint uVar9;
  size_t numfds;
  fd_set asyncfds;
  int local_2c;
  
  puVar1 = PTR___stack_chk_guard_000c008c;
  local_2c = *(int *)PTR___stack_chk_guard_000c008c;
  pSVar3 = s;
  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,0,&numfds);
  if ((iVar2 != 0) && (pSVar3 = (SSL *)numfds, numfds != 0)) {
    pSVar3 = (SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);
    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds);
    if (iVar2 == 0) {
      (*(code *)PTR_CRYPTO_free_000c04dc)
                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);
    }
    else {
      p_Var4 = asyncfds.__fds_bits;
      do {
        *p_Var4 = 0;
        p_Var4 = p_Var4 + 1;
      } while (p_Var4 != &local_2c);
      iVar2 = 0;
      if (numfds != 0) {
        uVar9 = 0;
        pSVar8 = pSVar3;
        do {
          if (iVar2 <= (int)*(uint *)pSVar8) {
            iVar2 = *(uint *)pSVar8 + 1;
          }
          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();
          uVar7 = *(uint *)pSVar8;
          uVar9 = uVar9 + 1;
          pSVar8 = pSVar8 + 4;
          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];
        } while (uVar9 < numfds);
      }
      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);
      (*(code *)PTR_CRYPTO_free_000c04dc)
                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);
    }
  }
  if (local_2c == *(int *)puVar1) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_000bfdf8)();
  pbVar6 = (byte *)(*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1));
  *pbVar6 = *pbVar6 ^ 1;
  return;
}



void wait_for_async(uint *param_1)

{
  undefined *puVar1;
  int iVar2;
  uint *puVar3;
  uint *puVar4;
  int iVar5;
  byte *pbVar6;
  uint uVar7;
  uint *puVar8;
  uint *local_b0;
  uint local_ac [32];
  uint local_2c;
  
  puVar1 = PTR___stack_chk_guard_000c008c;
  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;
  puVar3 = param_1;
  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);
  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {
    puVar3 = (uint *)app_malloc((int)local_b0 << 2,
                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);
    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);
    if (iVar2 == 0) {
      (*(code *)PTR_CRYPTO_free_000c04dc)
                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);
    }
    else {
      puVar4 = local_ac;
      do {
        *puVar4 = 0;
        puVar4 = puVar4 + 1;
      } while (puVar4 != &local_2c);
      iVar2 = 0;
      if (local_b0 != (uint *)0x0) {
        puVar8 = (uint *)0x0;
        puVar4 = puVar3;
        do {
          if (iVar2 <= (int)*puVar4) {
            iVar2 = *puVar4 + 1;
          }
          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();
          uVar7 = *puVar4;
          puVar8 = (uint *)((int)puVar8 + 1);
          puVar4 = puVar4 + 1;
          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];
        } while (puVar8 < local_b0);
      }
      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);
      (*(code *)PTR_CRYPTO_free_000c04dc)
                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);
    }
  }
  if (local_2c == *(uint *)puVar1) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_000bfdf8)();
  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));
  *pbVar6 = *pbVar6 ^ 1;
  return;
}


lui gp,0x5
addiu gp,gp,-0x6af4
addu gp,gp,t9
addiu sp,sp,-0xd0
lw t9,-0x74f0(gp)
or a1,zero,zero
sw s1,0xac(sp)
lw s1,-0x72d4(gp)
sw s0,0xa8(sp)
addiu s0,sp,0x20
sw gp,0x18(sp)
sw s2,0xb0(sp)
or a2,s0,zero
sw ra,0xcc(sp)
or s2,a0,zero
sw s8,0xc8(sp)
sw s7,0xc4(sp)
sw s6,0xc0(sp)
sw s5,0xbc(sp)
sw s4,0xb8(sp)
sw s3,0xb4(sp)
lw v0,0x0(s1)
sw v0,0xa4(sp)
jalr t9
_nop
beq v0,zero,0x0007decc
_lw gp,0x18(sp)
lw a0,0x20(sp)
bne a0,zero,0x0007df08
_lw a1,-0x7fb4(gp)
lw v1,0xa4(sp)
lw v0,0x0(s1)
bne v1,v0,0x0007e04c
_lw ra,0xcc(sp)
lw s8,0xc8(sp)
lw s7,0xc4(sp)
lw s6,0xc0(sp)
lw s5,0xbc(sp)
lw s4,0xb8(sp)
lw s3,0xb4(sp)
lw s2,0xb0(sp)
lw s1,0xac(sp)
lw s0,0xa8(sp)
jr ra
_addiu sp,sp,0xd0
sll a0,a0,0x2
lw t9,-0x7f68(gp)
bal 0x00078bc0
_addiu a1,a1,-0x3ac
or a2,s0,zero
lw gp,0x18(sp)
or a1,v0,zero
or a0,s2,zero
lw t9,-0x74f0(gp)
jalr t9
_or s4,v0,zero
beq v0,zero,0x0007e02c
_lw gp,0x18(sp)
addiu s5,sp,0x24
addiu v1,sp,0xa4
or v0,s5,zero
sw zero,0x0(v0)
addiu v0,v0,0x4
bne v0,v1,0x0007df48
_nop
lw v0,0x20(sp)
beq v0,zero,0x0007dfec
_or s0,zero,zero
lui s2,0x8000
or s8,zero,zero
addiu s2,s2,0x1f
li s6,-0x20
li s3,0x1
or s7,s4,zero
lw a0,0x0(s7)
slt v0,a0,s0
bne v0,zero,0x0007df90
_lw t9,-0x7bdc(gp)
addiu s0,a0,0x1
jalr t9
_nop
addiu a0,sp,0xa8
lw v1,0x0(s7)
sll v0,v0,0x2
lw gp,0x18(sp)
and v1,v1,s2
bgez v1,0x0007dfc0
_addu a0,a0,v0
addiu v1,v1,-0x1
or v1,v1,s6
addiu v1,v1,0x1
addiu a1,sp,0xa8
sllv v1,s3,v1
addu v0,a1,v0
addiu s8,s8,0x1
addiu s7,s7,0x4
lw a1,-0x84(v0)
lw v0,0x20(sp)
or v1,v1,a1
sltu v0,s8,v0
bne v0,zero,0x0007df7c
_sw v1,-0x84(a0)
lw t9,-0x73f8(gp)
or a3,zero,zero
or a2,zero,zero
sw zero,0x10(sp)
or a1,s5,zero
jalr t9
_or a0,s0,zero
li a2,0xa86
lw gp,0x18(sp)
or a0,s4,zero
lw a1,-0x7fb4(gp)
lw t9,-0x6e84(gp)
jalr t9
_addiu a1,a1,-0xd04
b 0x0007decc
_lw gp,0x18(sp)
lw a1,-0x7fb4(gp)
li a2,0xa7b
lw t9,-0x6e84(gp)
or a0,s4,zero
jalr t9
_addiu a1,a1,-0xd04
b 0x0007decc
_lw gp,0x18(sp)
lw t9,-0x7568(gp)
jalr t9
_nop
(translation_unit "void wait_for_async(uint *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *local_b0;\n  uint local_ac [32];\n  uint local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;\n  puVar3 = param_1;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);\n  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(uint *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}\n\n" (function_definition "void wait_for_async(uint *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *local_b0;\n  uint local_ac [32];\n  uint local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;\n  puVar3 = param_1;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);\n  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(uint *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}" primitive_type (function_declarator "wait_for_async(uint *param_1)" identifier (parameter_list "(uint *param_1)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *local_b0;\n  uint local_ac [32];\n  uint local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;\n  puVar3 = param_1;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);\n  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(uint *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "uint local_ac [32];" type_identifier (array_declarator "local_ac [32]" identifier [ number_literal ]) ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000c008c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000c008c" identifier = identifier) ;) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_000c008c;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_000c008c" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_000c008c" * (cast_expression "(uint *)PTR___stack_chk_guard_000c008c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar3 = param_1;" (assignment_expression "puVar3 = param_1" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);" (assignment_expression "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0)" identifier = (call_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0)" (parenthesized_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)" ( (pointer_expression "*(code *)PTR_SSL_get_all_async_fds_000bfe70" * (cast_expression "(code *)PTR_SSL_get_all_async_fds_000bfe70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,0,&local_b0)" ( identifier , number_literal , (pointer_expression "&local_b0" & identifier) )))) ;) (if_statement "if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }" if (parenthesized_expression "((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0))" ( (binary_expression "(iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(puVar3 = local_b0, local_b0 != (uint *)0x0)" ( (comma_expression "puVar3 = local_b0, local_b0 != (uint *)0x0" (assignment_expression "puVar3 = local_b0" identifier = identifier) , (binary_expression "local_b0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }" { (expression_statement "puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);" (assignment_expression "puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" identifier = (cast_expression "(uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" identifier (argument_list "((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" ( (binary_expression "(int)local_b0 << 2" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);" (assignment_expression "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0)" identifier = (call_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0)" (parenthesized_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)" ( (pointer_expression "*(code *)PTR_SSL_get_all_async_fds_000bfe70" * (cast_expression "(code *)PTR_SSL_get_all_async_fds_000bfe70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,puVar3,&local_b0)" ( identifier , identifier , (pointer_expression "&local_b0" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }" { (expression_statement "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);" (call_expression "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b)" (parenthesized_expression "(*(code *)PTR_CRYPTO_free_000c04dc)" ( (pointer_expression "*(code *)PTR_CRYPTO_free_000c04dc" * (cast_expression "(code *)PTR_CRYPTO_free_000c04dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b)" ( identifier , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" else (compound_statement "{\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" { (expression_statement "puVar4 = local_ac;" (assignment_expression "puVar4 = local_ac" identifier = identifier) ;) (do_statement "do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);" do (compound_statement "{\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != &local_2c)" ( (binary_expression "puVar4 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }" if (parenthesized_expression "(local_b0 != (uint *)0x0)" ( (binary_expression "local_b0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }" { (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) (do_statement "do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);" do (compound_statement "{\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        }" { (if_statement "if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }" if (parenthesized_expression "(iVar2 <= (int)*puVar4)" ( (binary_expression "iVar2 <= (int)*puVar4" identifier <= (cast_expression "(int)*puVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar4" * identifier))) )) (compound_statement "{\n            iVar2 = *puVar4 + 1;\n          }" { (expression_statement "iVar2 = *puVar4 + 1;" (assignment_expression "iVar2 = *puVar4 + 1" identifier = (binary_expression "*puVar4 + 1" (pointer_expression "*puVar4" * identifier) + number_literal)) ;) })) (expression_statement "iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();" (assignment_expression "iVar5 = (*(code *)PTR___fdelt_chk_000bf784)()" identifier = (call_expression "(*(code *)PTR___fdelt_chk_000bf784)()" (parenthesized_expression "(*(code *)PTR___fdelt_chk_000bf784)" ( (pointer_expression "*(code *)PTR___fdelt_chk_000bf784" * (cast_expression "(code *)PTR___fdelt_chk_000bf784" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "uVar7 = *puVar4;" (assignment_expression "uVar7 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 + 1);" (assignment_expression "puVar8 = (uint *)((int)puVar8 + 1)" identifier = (cast_expression "(uint *)((int)puVar8 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 1)" ( (binary_expression "(int)puVar8 + 1" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];" (assignment_expression "local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5]" (subscript_expression "local_ac[iVar5]" identifier [ identifier ]) = (binary_expression "1 << (uVar7 & 0x1f) | local_ac[iVar5]" (binary_expression "1 << (uVar7 & 0x1f)" number_literal << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (subscript_expression "local_ac[iVar5]" identifier [ identifier ]))) ;) }) while (parenthesized_expression "(puVar8 < local_b0)" ( (binary_expression "puVar8 < local_b0" identifier < identifier) )) ;) })) (expression_statement "(*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);" (call_expression "(*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0)" (parenthesized_expression "(*(code *)PTR_select_000bff68)" ( (pointer_expression "*(code *)PTR_select_000bff68" * (cast_expression "(code *)PTR_select_000bff68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,local_ac,0,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);" (call_expression "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86)" (parenthesized_expression "(*(code *)PTR_CRYPTO_free_000c04dc)" ( (pointer_expression "*(code *)PTR_CRYPTO_free_000c04dc" * (cast_expression "(code *)PTR_CRYPTO_free_000c04dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86)" ( identifier , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04" identifier + number_literal) , number_literal ))) ;) }))) })) (if_statement "if (local_2c == *(uint *)puVar1) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(uint *)puVar1)" ( (binary_expression "local_2c == *(uint *)puVar1" identifier == (pointer_expression "*(uint *)puVar1" * (cast_expression "(uint *)puVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_000bfdf8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bfdf8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bfdf8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bfdf8" * (cast_expression "(code *)PTR___stack_chk_fail_000bfdf8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));" (assignment_expression "pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1))" identifier = (cast_expression "(byte *)(puVar3[2] + (*puVar3 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3[2] + (*puVar3 - 1))" ( (binary_expression "puVar3[2] + (*puVar3 - 1)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + (parenthesized_expression "(*puVar3 - 1)" ( (binary_expression "*puVar3 - 1" (pointer_expression "*puVar3" * identifier) - number_literal) ))) )))) ;) (expression_statement "*pbVar6 = *pbVar6 ^ 1;" (assignment_expression "*pbVar6 = *pbVar6 ^ 1" (pointer_expression "*pbVar6" * identifier) = (binary_expression "*pbVar6 ^ 1" (pointer_expression "*pbVar6" * identifier) ^ number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void wait_for_async(SSL *s)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  SSL *pSVar3;\n  __fd_mask *p_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  SSL *pSVar8;\n  uint uVar9;\n  size_t numfds;\n  fd_set asyncfds;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(int *)PTR___stack_chk_guard_000c008c;\n  pSVar3 = s;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,0,&numfds);\n  if ((iVar2 != 0) && (pSVar3 = (SSL *)numfds, numfds != 0)) {\n    pSVar3 = (SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      p_Var4 = asyncfds.__fds_bits;\n      do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);\n      iVar2 = 0;\n      if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}\n\n" (function_definition "void wait_for_async(SSL *s)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  SSL *pSVar3;\n  __fd_mask *p_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  SSL *pSVar8;\n  uint uVar9;\n  size_t numfds;\n  fd_set asyncfds;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(int *)PTR___stack_chk_guard_000c008c;\n  pSVar3 = s;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,0,&numfds);\n  if ((iVar2 != 0) && (pSVar3 = (SSL *)numfds, numfds != 0)) {\n    pSVar3 = (SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      p_Var4 = asyncfds.__fds_bits;\n      do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);\n      iVar2 = 0;\n      if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}" primitive_type (function_declarator "wait_for_async(SSL *s)" identifier (parameter_list "(SSL *s)" ( (parameter_declaration "SSL *s" type_identifier (pointer_declarator "*s" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  SSL *pSVar3;\n  __fd_mask *p_Var4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  SSL *pSVar8;\n  uint uVar9;\n  size_t numfds;\n  fd_set asyncfds;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(int *)PTR___stack_chk_guard_000c008c;\n  pSVar3 = s;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,0,&numfds);\n  if ((iVar2 != 0) && (pSVar3 = (SSL *)numfds, numfds != 0)) {\n    pSVar3 = (SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      p_Var4 = asyncfds.__fds_bits;\n      do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);\n      iVar2 = 0;\n      if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "SSL *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "__fd_mask *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "SSL *pSVar8;" type_identifier (pointer_declarator "*pSVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "size_t numfds;" primitive_type identifier ;) (declaration "fd_set asyncfds;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000c008c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000c008c" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000c008c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000c008c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000c008c" * (cast_expression "(int *)PTR___stack_chk_guard_000c008c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pSVar3 = s;" (assignment_expression "pSVar3 = s" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,0,&numfds);" (assignment_expression "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,0,&numfds)" identifier = (call_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,0,&numfds)" (parenthesized_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)" ( (pointer_expression "*(code *)PTR_SSL_get_all_async_fds_000bfe70" * (cast_expression "(code *)PTR_SSL_get_all_async_fds_000bfe70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(s,0,&numfds)" ( identifier , number_literal , (pointer_expression "&numfds" & identifier) )))) ;) (if_statement "if ((iVar2 != 0) && (pSVar3 = (SSL *)numfds, numfds != 0)) {\n    pSVar3 = (SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      p_Var4 = asyncfds.__fds_bits;\n      do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);\n      iVar2 = 0;\n      if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }" if (parenthesized_expression "((iVar2 != 0) && (pSVar3 = (SSL *)numfds, numfds != 0))" ( (binary_expression "(iVar2 != 0) && (pSVar3 = (SSL *)numfds, numfds != 0)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(pSVar3 = (SSL *)numfds, numfds != 0)" ( (comma_expression "pSVar3 = (SSL *)numfds, numfds != 0" (assignment_expression "pSVar3 = (SSL *)numfds" identifier = (cast_expression "(SSL *)numfds" ( (type_descriptor "SSL *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "numfds != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    pSVar3 = (SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      p_Var4 = asyncfds.__fds_bits;\n      do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);\n      iVar2 = 0;\n      if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }" { (expression_statement "pSVar3 = (SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);" (assignment_expression "pSVar3 = (SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" identifier = (cast_expression "(SSL *)app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" ( (type_descriptor "SSL *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "app_malloc(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" identifier (argument_list "(numfds << 2,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" ( (binary_expression "numfds << 2" identifier << number_literal) , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds);" (assignment_expression "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds)" identifier = (call_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)(s,pSVar3,&numfds)" (parenthesized_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)" ( (pointer_expression "*(code *)PTR_SSL_get_all_async_fds_000bfe70" * (cast_expression "(code *)PTR_SSL_get_all_async_fds_000bfe70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(s,pSVar3,&numfds)" ( identifier , identifier , (pointer_expression "&numfds" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      p_Var4 = asyncfds.__fds_bits;\n      do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);\n      iVar2 = 0;\n      if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }" { (expression_statement "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);" (call_expression "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b)" (parenthesized_expression "(*(code *)PTR_CRYPTO_free_000c04dc)" ( (pointer_expression "*(code *)PTR_CRYPTO_free_000c04dc" * (cast_expression "(code *)PTR_CRYPTO_free_000c04dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b)" ( identifier , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else {\n      p_Var4 = asyncfds.__fds_bits;\n      do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);\n      iVar2 = 0;\n      if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" else (compound_statement "{\n      p_Var4 = asyncfds.__fds_bits;\n      do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);\n      iVar2 = 0;\n      if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" { (expression_statement "p_Var4 = asyncfds.__fds_bits;" (assignment_expression "p_Var4 = asyncfds.__fds_bits" identifier = (field_expression "asyncfds.__fds_bits" identifier . field_identifier)) ;) (do_statement "do {\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      } while (p_Var4 != &local_2c);" do (compound_statement "{\n        *p_Var4 = 0;\n        p_Var4 = p_Var4 + 1;\n      }" { (expression_statement "*p_Var4 = 0;" (assignment_expression "*p_Var4 = 0" (pointer_expression "*p_Var4" * identifier) = number_literal) ;) (expression_statement "p_Var4 = p_Var4 + 1;" (assignment_expression "p_Var4 = p_Var4 + 1" identifier = (binary_expression "p_Var4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(p_Var4 != &local_2c)" ( (binary_expression "p_Var4 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (numfds != 0) {\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }" if (parenthesized_expression "(numfds != 0)" ( (binary_expression "numfds != 0" identifier != number_literal) )) (compound_statement "{\n        uVar9 = 0;\n        pSVar8 = pSVar3;\n        do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);\n      }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "pSVar8 = pSVar3;" (assignment_expression "pSVar8 = pSVar3" identifier = identifier) ;) (do_statement "do {\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        } while (uVar9 < numfds);" do (compound_statement "{\n          if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *(uint *)pSVar8;\n          uVar9 = uVar9 + 1;\n          pSVar8 = pSVar8 + 4;\n          asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];\n        }" { (if_statement "if (iVar2 <= (int)*(uint *)pSVar8) {\n            iVar2 = *(uint *)pSVar8 + 1;\n          }" if (parenthesized_expression "(iVar2 <= (int)*(uint *)pSVar8)" ( (binary_expression "iVar2 <= (int)*(uint *)pSVar8" identifier <= (cast_expression "(int)*(uint *)pSVar8" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(uint *)pSVar8" * (cast_expression "(uint *)pSVar8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) )) (compound_statement "{\n            iVar2 = *(uint *)pSVar8 + 1;\n          }" { (expression_statement "iVar2 = *(uint *)pSVar8 + 1;" (assignment_expression "iVar2 = *(uint *)pSVar8 + 1" identifier = (binary_expression "*(uint *)pSVar8 + 1" (pointer_expression "*(uint *)pSVar8" * (cast_expression "(uint *)pSVar8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) })) (expression_statement "iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();" (assignment_expression "iVar5 = (*(code *)PTR___fdelt_chk_000bf784)()" identifier = (call_expression "(*(code *)PTR___fdelt_chk_000bf784)()" (parenthesized_expression "(*(code *)PTR___fdelt_chk_000bf784)" ( (pointer_expression "*(code *)PTR___fdelt_chk_000bf784" * (cast_expression "(code *)PTR___fdelt_chk_000bf784" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "uVar7 = *(uint *)pSVar8;" (assignment_expression "uVar7 = *(uint *)pSVar8" identifier = (pointer_expression "*(uint *)pSVar8" * (cast_expression "(uint *)pSVar8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "pSVar8 = pSVar8 + 4;" (assignment_expression "pSVar8 = pSVar8 + 4" identifier = (binary_expression "pSVar8 + 4" identifier + number_literal)) ;) (expression_statement "asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5];" (assignment_expression "asyncfds.__fds_bits[iVar5] = 1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5]" (subscript_expression "asyncfds.__fds_bits[iVar5]" (field_expression "asyncfds.__fds_bits" identifier . field_identifier) [ identifier ]) = (binary_expression "1 << (uVar7 & 0x1f) | asyncfds.__fds_bits[iVar5]" (binary_expression "1 << (uVar7 & 0x1f)" number_literal << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (subscript_expression "asyncfds.__fds_bits[iVar5]" (field_expression "asyncfds.__fds_bits" identifier . field_identifier) [ identifier ]))) ;) }) while (parenthesized_expression "(uVar9 < numfds)" ( (binary_expression "uVar9 < numfds" identifier < identifier) )) ;) })) (expression_statement "(*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0);" (call_expression "(*(code *)PTR_select_000bff68)(iVar2,&asyncfds,0,0,0)" (parenthesized_expression "(*(code *)PTR_select_000bff68)" ( (pointer_expression "*(code *)PTR_select_000bff68" * (cast_expression "(code *)PTR_select_000bff68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,&asyncfds,0,0,0)" ( identifier , (pointer_expression "&asyncfds" & identifier) , number_literal , number_literal , number_literal ))) ;) (expression_statement "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);" (call_expression "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86)" (parenthesized_expression "(*(code *)PTR_CRYPTO_free_000c04dc)" ( (pointer_expression "*(code *)PTR_CRYPTO_free_000c04dc" * (cast_expression "(code *)PTR_CRYPTO_free_000c04dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pSVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86)" ( identifier , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04" identifier + number_literal) , number_literal ))) ;) }))) })) (if_statement "if (local_2c == *(int *)puVar1) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar1)" ( (binary_expression "local_2c == *(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 "(*(code *)PTR___stack_chk_fail_000bfdf8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bfdf8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bfdf8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bfdf8" * (cast_expression "(code *)PTR___stack_chk_fail_000bfdf8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar6 = (byte *)(*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1));" (assignment_expression "pbVar6 = (byte *)(*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1))" identifier = (cast_expression "(byte *)(*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1))" ( (binary_expression "*(uint *)(pSVar3 + 8) + (*(uint *)pSVar3 - 1)" (pointer_expression "*(uint *)(pSVar3 + 8)" * (cast_expression "(uint *)(pSVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pSVar3 + 8)" ( (binary_expression "pSVar3 + 8" identifier + number_literal) )))) + (parenthesized_expression "(*(uint *)pSVar3 - 1)" ( (binary_expression "*(uint *)pSVar3 - 1" (pointer_expression "*(uint *)pSVar3" * (cast_expression "(uint *)pSVar3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) - number_literal) ))) )))) ;) (expression_statement "*pbVar6 = *pbVar6 ^ 1;" (assignment_expression "*pbVar6 = *pbVar6 ^ 1" (pointer_expression "*pbVar6" * identifier) = (binary_expression "*pbVar6 ^ 1" (pointer_expression "*pbVar6" * identifier) ^ number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void wait_for_async(uint *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *local_b0;\n  uint local_ac [32];\n  uint local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;\n  puVar3 = param_1;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);\n  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(uint *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}\n\n" (function_definition "void wait_for_async(uint *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *local_b0;\n  uint local_ac [32];\n  uint local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;\n  puVar3 = param_1;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);\n  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(uint *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}" primitive_type (function_declarator "wait_for_async(uint *param_1)" identifier (parameter_list "(uint *param_1)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *local_b0;\n  uint local_ac [32];\n  uint local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;\n  puVar3 = param_1;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);\n  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(uint *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "uint local_ac [32];" type_identifier (array_declarator "local_ac [32]" identifier [ number_literal ]) ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000c008c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000c008c" identifier = identifier) ;) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_000c008c;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_000c008c" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_000c008c" * (cast_expression "(uint *)PTR___stack_chk_guard_000c008c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar3 = param_1;" (assignment_expression "puVar3 = param_1" identifier = identifier) ;) (expression_statement "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);" (assignment_expression "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0)" identifier = (call_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0)" (parenthesized_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)" ( (pointer_expression "*(code *)PTR_SSL_get_all_async_fds_000bfe70" * (cast_expression "(code *)PTR_SSL_get_all_async_fds_000bfe70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,0,&local_b0)" ( identifier , number_literal , (pointer_expression "&local_b0" & identifier) )))) ;) (if_statement "if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }" if (parenthesized_expression "((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0))" ( (binary_expression "(iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(puVar3 = local_b0, local_b0 != (uint *)0x0)" ( (comma_expression "puVar3 = local_b0, local_b0 != (uint *)0x0" (assignment_expression "puVar3 = local_b0" identifier = identifier) , (binary_expression "local_b0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }" { (expression_statement "puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);" (assignment_expression "puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" identifier = (cast_expression "(uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" identifier (argument_list "((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" ( (binary_expression "(int)local_b0 << 2" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);" (assignment_expression "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0)" identifier = (call_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0)" (parenthesized_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)" ( (pointer_expression "*(code *)PTR_SSL_get_all_async_fds_000bfe70" * (cast_expression "(code *)PTR_SSL_get_all_async_fds_000bfe70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,puVar3,&local_b0)" ( identifier , identifier , (pointer_expression "&local_b0" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }" { (expression_statement "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);" (call_expression "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b)" (parenthesized_expression "(*(code *)PTR_CRYPTO_free_000c04dc)" ( (pointer_expression "*(code *)PTR_CRYPTO_free_000c04dc" * (cast_expression "(code *)PTR_CRYPTO_free_000c04dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b)" ( identifier , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" else (compound_statement "{\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" { (expression_statement "puVar4 = local_ac;" (assignment_expression "puVar4 = local_ac" identifier = identifier) ;) (do_statement "do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);" do (compound_statement "{\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != &local_2c)" ( (binary_expression "puVar4 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }" if (parenthesized_expression "(local_b0 != (uint *)0x0)" ( (binary_expression "local_b0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }" { (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) (do_statement "do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);" do (compound_statement "{\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        }" { (if_statement "if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }" if (parenthesized_expression "(iVar2 <= (int)*puVar4)" ( (binary_expression "iVar2 <= (int)*puVar4" identifier <= (cast_expression "(int)*puVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar4" * identifier))) )) (compound_statement "{\n            iVar2 = *puVar4 + 1;\n          }" { (expression_statement "iVar2 = *puVar4 + 1;" (assignment_expression "iVar2 = *puVar4 + 1" identifier = (binary_expression "*puVar4 + 1" (pointer_expression "*puVar4" * identifier) + number_literal)) ;) })) (expression_statement "iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();" (assignment_expression "iVar5 = (*(code *)PTR___fdelt_chk_000bf784)()" identifier = (call_expression "(*(code *)PTR___fdelt_chk_000bf784)()" (parenthesized_expression "(*(code *)PTR___fdelt_chk_000bf784)" ( (pointer_expression "*(code *)PTR___fdelt_chk_000bf784" * (cast_expression "(code *)PTR___fdelt_chk_000bf784" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "uVar7 = *puVar4;" (assignment_expression "uVar7 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar8 = (uint *)((int)puVar8 + 1);" (assignment_expression "puVar8 = (uint *)((int)puVar8 + 1)" identifier = (cast_expression "(uint *)((int)puVar8 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 1)" ( (binary_expression "(int)puVar8 + 1" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];" (assignment_expression "local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5]" (subscript_expression "local_ac[iVar5]" identifier [ identifier ]) = (binary_expression "1 << (uVar7 & 0x1f) | local_ac[iVar5]" (binary_expression "1 << (uVar7 & 0x1f)" number_literal << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (subscript_expression "local_ac[iVar5]" identifier [ identifier ]))) ;) }) while (parenthesized_expression "(puVar8 < local_b0)" ( (binary_expression "puVar8 < local_b0" identifier < identifier) )) ;) })) (expression_statement "(*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);" (call_expression "(*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0)" (parenthesized_expression "(*(code *)PTR_select_000bff68)" ( (pointer_expression "*(code *)PTR_select_000bff68" * (cast_expression "(code *)PTR_select_000bff68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,local_ac,0,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);" (call_expression "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86)" (parenthesized_expression "(*(code *)PTR_CRYPTO_free_000c04dc)" ( (pointer_expression "*(code *)PTR_CRYPTO_free_000c04dc" * (cast_expression "(code *)PTR_CRYPTO_free_000c04dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86)" ( identifier , (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04" identifier + number_literal) , number_literal ))) ;) }))) })) (if_statement "if (local_2c == *(uint *)puVar1) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(uint *)puVar1)" ( (binary_expression "local_2c == *(uint *)puVar1" identifier == (pointer_expression "*(uint *)puVar1" * (cast_expression "(uint *)puVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_000bfdf8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bfdf8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bfdf8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bfdf8" * (cast_expression "(code *)PTR___stack_chk_fail_000bfdf8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));" (assignment_expression "pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1))" identifier = (cast_expression "(byte *)(puVar3[2] + (*puVar3 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3[2] + (*puVar3 - 1))" ( (binary_expression "puVar3[2] + (*puVar3 - 1)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + (parenthesized_expression "(*puVar3 - 1)" ( (binary_expression "*puVar3 - 1" (pointer_expression "*puVar3" * identifier) - number_literal) ))) )))) ;) (expression_statement "*pbVar6 = *pbVar6 ^ 1;" (assignment_expression "*pbVar6 = *pbVar6 ^ 1" (pointer_expression "*pbVar6" * identifier) = (binary_expression "*pbVar6 ^ 1" (pointer_expression "*pbVar6" * identifier) ^ number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 (array_declarator IDENT [ LIT ]) ;) (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 = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) , (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (subscript_expression IDENT [ IDENT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) }))) })) (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 (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) - LIT) ))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) ^ LIT)) ;) (return_statement return ;) })))
(function_definition "void wait_for_async(uint *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *local_b0;\n  uint local_ac [32];\n  uint local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;\n  puVar3 = param_1;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);\n  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(uint *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}" (primitive_type "void") (function_declarator "wait_for_async(uint *param_1)" (identifier "wait_for_async") (parameter_list "(uint *param_1)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int iVar5;\n  byte *pbVar6;\n  uint uVar7;\n  uint *puVar8;\n  uint *local_b0;\n  uint local_ac [32];\n  uint local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000c008c;\n  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;\n  puVar3 = param_1;\n  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);\n  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }\n  if (local_2c == *(uint *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_000bfdf8)();\n  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));\n  *pbVar6 = *pbVar6 ^ 1;\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *local_b0;" (type_identifier "uint") (pointer_declarator "*local_b0" (* "*") (identifier "local_b0")) (; ";")) (declaration "uint local_ac [32];" (type_identifier "uint") (array_declarator "local_ac [32]" (identifier "local_ac") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_000c008c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000c008c" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_000c008c")) (; ";")) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_000c008c;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_000c008c" (identifier "local_2c") (= "=") (pointer_expression "*(uint *)PTR___stack_chk_guard_000c008c" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_000c008c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000c008c")))) (; ";")) (expression_statement "puVar3 = param_1;" (assignment_expression "puVar3 = param_1" (identifier "puVar3") (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);" (assignment_expression "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0)" (parenthesized_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)" (( "(") (pointer_expression "*(code *)PTR_SSL_get_all_async_fds_000bfe70" (* "*") (cast_expression "(code *)PTR_SSL_get_all_async_fds_000bfe70" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_SSL_get_all_async_fds_000bfe70"))) () ")")) (argument_list "(param_1,0,&local_b0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) () ")")))) (; ";")) (if_statement "if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }" (if "if") (parenthesized_expression "((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0))" (( "(") (binary_expression "(iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)" (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(puVar3 = local_b0, local_b0 != (uint *)0x0)" (( "(") (comma_expression "puVar3 = local_b0, local_b0 != (uint *)0x0" (assignment_expression "puVar3 = local_b0" (identifier "puVar3") (= "=") (identifier "local_b0")) (, ",") (binary_expression "local_b0 != (uint *)0x0" (identifier "local_b0") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);\n    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);\n    if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }\n  }" ({ "{") (expression_statement "puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);" (assignment_expression "puVar3 = (uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" (identifier "puVar3") (= "=") (cast_expression "(uint *)app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "app_malloc((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" (identifier "app_malloc") (argument_list "((int)local_b0 << 2,\n                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac)" (( "(") (binary_expression "(int)local_b0 << 2" (cast_expression "(int)local_b0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b0")) (<< "<<") (number_literal "2")) (, ",") (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac" (identifier "PTR_s_Can_t_parse___s__as_a_number_000bf3ac") (+ "+") (number_literal "-0x3ac")) () ")"))))) (; ";")) (expression_statement "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);" (assignment_expression "iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0)" (parenthesized_expression "(*(code *)PTR_SSL_get_all_async_fds_000bfe70)" (( "(") (pointer_expression "*(code *)PTR_SSL_get_all_async_fds_000bfe70" (* "*") (cast_expression "(code *)PTR_SSL_get_all_async_fds_000bfe70" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_SSL_get_all_async_fds_000bfe70"))) () ")")) (argument_list "(param_1,puVar3,&local_b0)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }\n    else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);\n    }" ({ "{") (expression_statement "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);" (call_expression "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b)" (parenthesized_expression "(*(code *)PTR_CRYPTO_free_000c04dc)" (( "(") (pointer_expression "*(code *)PTR_CRYPTO_free_000c04dc" (* "*") (cast_expression "(code *)PTR_CRYPTO_free_000c04dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_CRYPTO_free_000c04dc"))) () ")")) (argument_list "(puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b)" (( "(") (identifier "puVar3") (, ",") (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04" (identifier "PTR_s_Can_t_parse___s__as_a_number_000bf3ac") (+ "+") (number_literal "-0xd04")) (, ",") (number_literal "0xa7b") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" (else "else") (compound_statement "{\n      puVar4 = local_ac;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);\n      iVar2 = 0;\n      if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }\n      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);\n      (*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);\n    }" ({ "{") (expression_statement "puVar4 = local_ac;" (assignment_expression "puVar4 = local_ac" (identifier "puVar4") (= "=") (identifier "local_ac")) (; ";")) (do_statement "do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != &local_2c);" (do "do") (compound_statement "{\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      }" ({ "{") (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 != &local_2c)" (( "(") (binary_expression "puVar4 != &local_2c" (identifier "puVar4") (!= "!=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) () ")")) (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_b0 != (uint *)0x0) {\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }" (if "if") (parenthesized_expression "(local_b0 != (uint *)0x0)" (( "(") (binary_expression "local_b0 != (uint *)0x0" (identifier "local_b0") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar8 = (uint *)0x0;\n        puVar4 = puVar3;\n        do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);\n      }" ({ "{") (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" (identifier "puVar8") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" (identifier "puVar4") (= "=") (identifier "puVar3")) (; ";")) (do_statement "do {\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        } while (puVar8 < local_b0);" (do "do") (compound_statement "{\n          if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }\n          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();\n          uVar7 = *puVar4;\n          puVar8 = (uint *)((int)puVar8 + 1);\n          puVar4 = puVar4 + 1;\n          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];\n        }" ({ "{") (if_statement "if (iVar2 <= (int)*puVar4) {\n            iVar2 = *puVar4 + 1;\n          }" (if "if") (parenthesized_expression "(iVar2 <= (int)*puVar4)" (( "(") (binary_expression "iVar2 <= (int)*puVar4" (identifier "iVar2") (<= "<=") (cast_expression "(int)*puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")))) () ")")) (compound_statement "{\n            iVar2 = *puVar4 + 1;\n          }" ({ "{") (expression_statement "iVar2 = *puVar4 + 1;" (assignment_expression "iVar2 = *puVar4 + 1" (identifier "iVar2") (= "=") (binary_expression "*puVar4 + 1" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();" (assignment_expression "iVar5 = (*(code *)PTR___fdelt_chk_000bf784)()" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR___fdelt_chk_000bf784)()" (parenthesized_expression "(*(code *)PTR___fdelt_chk_000bf784)" (( "(") (pointer_expression "*(code *)PTR___fdelt_chk_000bf784" (* "*") (cast_expression "(code *)PTR___fdelt_chk_000bf784" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___fdelt_chk_000bf784"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar7 = *puVar4;" (assignment_expression "uVar7 = *puVar4" (identifier "uVar7") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar8 = (uint *)((int)puVar8 + 1);" (assignment_expression "puVar8 = (uint *)((int)puVar8 + 1)" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar8 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 1)" (( "(") (binary_expression "(int)puVar8 + 1" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];" (assignment_expression "local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5]" (subscript_expression "local_ac[iVar5]" (identifier "local_ac") ([ "[") (identifier "iVar5") (] "]")) (= "=") (binary_expression "1 << (uVar7 & 0x1f) | local_ac[iVar5]" (binary_expression "1 << (uVar7 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (subscript_expression "local_ac[iVar5]" (identifier "local_ac") ([ "[") (identifier "iVar5") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 < local_b0)" (( "(") (binary_expression "puVar8 < local_b0" (identifier "puVar8") (< "<") (identifier "local_b0")) () ")")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);" (call_expression "(*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0)" (parenthesized_expression "(*(code *)PTR_select_000bff68)" (( "(") (pointer_expression "*(code *)PTR_select_000bff68" (* "*") (cast_expression "(code *)PTR_select_000bff68" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_select_000bff68"))) () ")")) (argument_list "(iVar2,local_ac,0,0,0)" (( "(") (identifier "iVar2") (, ",") (identifier "local_ac") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);" (call_expression "(*(code *)PTR_CRYPTO_free_000c04dc)\n                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86)" (parenthesized_expression "(*(code *)PTR_CRYPTO_free_000c04dc)" (( "(") (pointer_expression "*(code *)PTR_CRYPTO_free_000c04dc" (* "*") (cast_expression "(code *)PTR_CRYPTO_free_000c04dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_CRYPTO_free_000c04dc"))) () ")")) (argument_list "(puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86)" (( "(") (identifier "puVar3") (, ",") (binary_expression "PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04" (identifier "PTR_s_Can_t_parse___s__as_a_number_000bf3ac") (+ "+") (number_literal "-0xd04")) (, ",") (number_literal "0xa86") () ")"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (local_2c == *(uint *)puVar1) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_2c == *(uint *)puVar1)" (( "(") (binary_expression "local_2c == *(uint *)puVar1" (identifier "local_2c") (== "==") (pointer_expression "*(uint *)puVar1" (* "*") (cast_expression "(uint *)puVar1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___stack_chk_fail_000bfdf8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bfdf8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bfdf8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000bfdf8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000bfdf8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000bfdf8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));" (assignment_expression "pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1))" (identifier "pbVar6") (= "=") (cast_expression "(byte *)(puVar3[2] + (*puVar3 - 1))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3[2] + (*puVar3 - 1))" (( "(") (binary_expression "puVar3[2] + (*puVar3 - 1)" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (+ "+") (parenthesized_expression "(*puVar3 - 1)" (( "(") (binary_expression "*puVar3 - 1" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (- "-") (number_literal "1")) () ")"))) () ")")))) (; ";")) (expression_statement "*pbVar6 = *pbVar6 ^ 1;" (assignment_expression "*pbVar6 = *pbVar6 ^ 1" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (= "=") (binary_expression "*pbVar6 ^ 1" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (^ "^") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (subscript_expression argument: (identifier) index: (identifier)))))) condition: (parenthesized_expression (binary_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 (identifier) (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (return_statement))))

void MASKED(uint *param_1)

{
  undefined *puVar1;
  int iVar2;
  uint *puVar3;
  uint *puVar4;
  int iVar5;
  byte *pbVar6;
  uint uVar7;
  uint *puVar8;
  uint *local_b0;
  uint local_ac [32];
  uint local_2c;
  
  puVar1 = PTR___stack_chk_guard_000c008c;
  local_2c = *(uint *)PTR___stack_chk_guard_000c008c;
  puVar3 = param_1;
  iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,0,&local_b0);
  if ((iVar2 != 0) && (puVar3 = local_b0, local_b0 != (uint *)0x0)) {
    puVar3 = (uint *)app_malloc((int)local_b0 << 2,
                                PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0x3ac);
    iVar2 = (*(code *)PTR_SSL_get_all_async_fds_000bfe70)(param_1,puVar3,&local_b0);
    if (iVar2 == 0) {
      (*(code *)PTR_CRYPTO_free_000c04dc)
                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa7b);
    }
    else {
      puVar4 = local_ac;
      do {
        *puVar4 = 0;
        puVar4 = puVar4 + 1;
      } while (puVar4 != &local_2c);
      iVar2 = 0;
      if (local_b0 != (uint *)0x0) {
        puVar8 = (uint *)0x0;
        puVar4 = puVar3;
        do {
          if (iVar2 <= (int)*puVar4) {
            iVar2 = *puVar4 + 1;
          }
          iVar5 = (*(code *)PTR___fdelt_chk_000bf784)();
          uVar7 = *puVar4;
          puVar8 = (uint *)((int)puVar8 + 1);
          puVar4 = puVar4 + 1;
          local_ac[iVar5] = 1 << (uVar7 & 0x1f) | local_ac[iVar5];
        } while (puVar8 < local_b0);
      }
      (*(code *)PTR_select_000bff68)(iVar2,local_ac,0,0,0);
      (*(code *)PTR_CRYPTO_free_000c04dc)
                (puVar3,PTR_s_Can_t_parse___s__as_a_number_000bf3ac + -0xd04,0xa86);
    }
  }
  if (local_2c == *(uint *)puVar1) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_000bfdf8)();
  pbVar6 = (byte *)(puVar3[2] + (*puVar3 - 1));
  *pbVar6 = *pbVar6 ^ 1;
  return;
}

