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

CURLcode ossl_connect_common(connectdata *conn,int sockindex,_Bool nonblocking,_Bool *done)

{
  int iVar1;
  CURLcode CVar2;
  undefined4 *puVar3;
  uint uVar4;
  curl_socket_t cVar5;
  ssl_connect_state sVar6;
  undefined3 in_register_00000018;
  int iVar7;
  curl_socket_t cVar8;
  _Bool strict;
  ssl_connect_state sVar9;
  int iVar10;
  curl_socket_t cVar11;
  Curl_easy *pCVar12;
  
  iVar7 = CONCAT31(in_register_00000018,nonblocking);
  if (conn->ssl[sockindex].state == ssl_connection_complete) {
    *done = true;
    return CURLE_OK;
  }
  pCVar12 = conn->data;
  sVar9 = conn->ssl[sockindex].connecting_state;
  cVar11 = conn->sock[sockindex];
  if (sVar9 == ssl_connect_1) {
    iVar10 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);
    if (iVar10 < 0) {
LAB_00082b9c:
      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);
      return CURLE_OPERATION_TIMEDOUT;
    }
    CVar2 = ossl_connect_step1(conn,sockindex);
    if (CVar2 != CURLE_OK) {
      return CVar2;
    }
    sVar9 = conn->ssl[sockindex].connecting_state;
  }
  uVar4 = sVar9 - ssl_connect_2;
  do {
    if (2 < uVar4) {
      if (sVar9 == ssl_connect_3) {
        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&
           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {
          strict = (conn->proxy_ssl_config).verifypeer;
          if (strict == false) {
            strict = (conn->proxy_ssl_config).verifyhost;
          }
        }
        else {
          strict = (conn->ssl_config).verifypeer;
          if (strict == false) {
            strict = (conn->ssl_config).verifyhost;
          }
        }
        CVar2 = servercert(conn,conn->ssl + sockindex,strict);
        if (CVar2 != CURLE_OK) {
          return CVar2;
        }
      }
      else if (sVar9 != ssl_connect_done) {
        *done = false;
        conn->ssl[sockindex].connecting_state = ssl_connect_1;
        return CURLE_OK;
      }
      conn->ssl[sockindex].state = ssl_connection_complete;
      conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);
      conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);
      *done = true;
      conn->ssl[sockindex].connecting_state = ssl_connect_1;
      return CURLE_OK;
    }
    iVar1 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);
    iVar10 = iVar1;
    if (iVar7 != 0) {
      iVar10 = 0;
    }
    if (iVar1 < 0) goto LAB_00082b9c;
    sVar9 = conn->ssl[sockindex].connecting_state;
    sVar6 = sVar9 ^ ssl_connect_2_writing;
    cVar5 = -1;
    if (sVar6 != ssl_connect_1) {
      cVar5 = cVar11;
    }
    cVar8 = -1;
    if (sVar6 == ssl_connect_1) {
      cVar8 = cVar11;
    }
    if (sVar9 - ssl_connect_2_reading < 2) {
      iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);
      if (iVar10 < 0) {
        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();
        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);
        return CURLE_SSL_CONNECT_ERROR;
      }
      if (iVar10 == 0) {
        if (iVar7 != 0) {
          *done = false;
          return CURLE_OK;
        }
        goto LAB_00082b9c;
      }
    }
    CVar2 = ossl_connect_step2(conn,sockindex);
    if (CVar2 != CURLE_OK) {
      return CVar2;
    }
    sVar9 = conn->ssl[sockindex].connecting_state;
    uVar4 = sVar9 - ssl_connect_2;
    if ((iVar7 != 0) && (uVar4 < 3)) {
      return CURLE_OK;
    }
  } while( true );
}



int FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)

{
  int iVar1;
  undefined4 *puVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  char cVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  
  if (param_1[param_2 * 4 + 0x70] == 2) {
    *param_4 = 1;
    return 0;
  }
  uVar9 = *param_1;
  iVar7 = param_1[param_2 * 4 + 0x71];
  uVar8 = param_1[param_2 + 0x66];
  if (iVar7 == 0) {
    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);
    if (iVar7 < 0) {
LAB_00082b9c:
      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);
      return 0x1c;
    }
    iVar7 = FUN_0007e6ac(param_1,param_2);
    if (iVar7 != 0) {
      return iVar7;
    }
    iVar7 = param_1[param_2 * 4 + 0x71];
  }
  uVar3 = iVar7 - 1;
  do {
    if (2 < uVar3) {
      if (iVar7 == 4) {
        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {
          cVar6 = *(char *)(param_1 + 0x8c);
          if (cVar6 == '\0') {
            cVar6 = *(char *)((int)param_1 + 0x231);
          }
        }
        else {
          cVar6 = *(char *)(param_1 + 0x82);
          if (cVar6 == '\0') {
            cVar6 = *(char *)((int)param_1 + 0x209);
          }
        }
        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);
        if (iVar7 != 0) {
          return iVar7;
        }
      }
      else if (iVar7 != 5) {
        *param_4 = 0;
        param_1[param_2 * 4 + 0x71] = 0;
        return 0;
      }
      param_1[param_2 * 4 + 0x70] = 2;
      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;
      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;
      *param_4 = 1;
      param_1[param_2 * 4 + 0x71] = 0;
      return 0;
    }
    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);
    iVar7 = iVar1;
    if (param_3 != 0) {
      iVar7 = 0;
    }
    if (iVar1 < 0) goto LAB_00082b9c;
    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;
    uVar4 = 0xffffffff;
    if (uVar3 != 0) {
      uVar4 = uVar8;
    }
    uVar5 = 0xffffffff;
    if (uVar3 == 0) {
      uVar5 = uVar8;
    }
    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {
      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);
      if (iVar7 < 0) {
        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();
        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);
        return 0x23;
      }
      if (iVar7 == 0) {
        if (param_3 != 0) {
          *param_4 = 0;
          return 0;
        }
        goto LAB_00082b9c;
      }
    }
    iVar7 = FUN_000802e8(param_1,param_2);
    if (iVar7 != 0) {
      return iVar7;
    }
    iVar7 = param_1[param_2 * 4 + 0x71];
    uVar3 = iVar7 - 1;
    if ((param_3 != 0) && (uVar3 < 3)) {
      return 0;
    }
  } while( true );
}


lui gp,0x3
addiu gp,gp,-0x48ac
addu gp,gp,t9
addiu sp,sp,-0x48
li v0,0x2
sw s8,0x40(sp)
sll s8,a1,0x4
sw s0,0x20(sp)
addu s0,a0,s8
sw gp,0x10(sp)
sw ra,0x44(sp)
sw s7,0x3c(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
lw v1,0x1c0(s0)
beq v1,v0,0x00082b60
_sll v0,a1,0x2
lw s7,0x0(a0)
sw a3,0x18(sp)
or s1,a2,zero
addu v0,a0,v0
lw a3,0x1c4(s0)
or s4,a0,zero
or s5,a1,zero
sw v0,0x1c(sp)
beq a3,zero,0x00082b20
_lw s2,0x198(v0)
lw s6,-0x7fd4(gp)
addiu v1,a3,-0x1
li s3,-0x1
addiu s6,s6,0x2e8
sltiu v1,v1,0x3
lw t9,-0x7d58(gp)
li a2,0x1
or a1,zero,zero
beq v1,zero,0x00082be4
_or a0,s7,zero
jalr t9
_nop
li a1,-0x1
lw gp,0x10(sp)
or a3,v0,zero
movn a3,zero,s1
bltz v0,0x00082b9c
_lw t9,-0x7d3c(gp)
lw v0,0x1c4(s0)
or v1,s3,zero
or a2,s3,zero
xori a0,v0,0x3
movn v1,s2,a0
addiu v0,v0,-0x2
sltiu v0,v0,0x2
movz a2,s2,a0
beq v0,zero,0x00082ac0
_or a0,v1,zero
jalr t9
_nop
bltz v0,0x00082c38
_lw gp,0x10(sp)
beq v0,zero,0x00082c68
_nop
or a1,s5,zero
or t9,s6,zero
bal 0x000802e8
_or a0,s4,zero
bne v0,zero,0x00082af0
_lw gp,0x10(sp)
lw a3,0x1c4(s0)
beq s1,zero,0x00082a48
_addiu v1,a3,-0x1
sltiu a0,v1,0x3
beq a0,zero,0x00082a48
_nop
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
lw t9,-0x7d58(gp)
li a2,0x1
or a1,zero,zero
jalr t9
_or a0,s7,zero
bltz v0,0x00082b9c
_lw gp,0x10(sp)
lw t9,-0x7fd4(gp)
or a1,s5,zero
addiu t9,t9,-0x1954
bal 0x0007e6ac
_or a0,s4,zero
bne v0,zero,0x00082af0
_lw gp,0x10(sp)
b 0x00082a38
_lw a3,0x1c4(s0)
lw ra,0x44(sp)
li v1,0x1
lw s8,0x40(sp)
or v0,zero,zero
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
sb v1,0x0(a3)
jr ra
_addiu sp,sp,0x48
lw a1,-0x7f7c(gp)
or a0,s7,zero
lw t9,-0x7fc4(gp)
jalr t9
_addiu a1,a1,0x4b98
li v0,0x1c
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
li v0,0x4
beq a3,v0,0x00082c7c
_li v0,0x5
beq a3,v0,0x00082cb8
_addu s4,s4,s8
lw v0,0x18(sp)
sb zero,0x0(v0)
or v0,zero,zero
sw zero,0x1c4(s0)
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
lw t9,-0x7344(gp)
jalr t9
_nop
or a0,s7,zero
lw gp,0x10(sp)
lw a2,0x0(v0)
lw a1,-0x7f7c(gp)
lw t9,-0x7fc4(gp)
jalr t9
_addiu a1,a1,0x39c4
b 0x00082af0
_li v0,0x23
beq s1,zero,0x00082b9c
_lw v0,0x18(sp)
sb zero,0x0(v0)
b 0x00082af0
_or v0,zero,zero
lw v1,0xf0(s4)
addiu a1,s8,0x1bc
li v0,0x2
beq v1,v0,0x00082cf4
_addu a1,s4,a1
lbu a2,0x208(s4)
bne a2,zero,0x00082ca0
_lw t9,-0x7fd4(gp)
lbu a2,0x209(s4)
addiu t9,t9,0x94c
bal 0x0008094c
_or a0,s4,zero
bne v0,zero,0x00082af0
_lw gp,0x10(sp)
addu s4,s4,s8
lw v1,0x1c(sp)
li v0,0x2
sw v0,0x1c0(s4)
lw v0,-0x7fd4(gp)
addiu v0,v0,-0x37e0
sw v0,0x1ac(v1)
lw v0,-0x7fd4(gp)
addiu v0,v0,-0x26c8
sw v0,0x1b4(v1)
li v0,0x1
lw v1,0x18(sp)
sb v0,0x0(v1)
or v0,zero,zero
b 0x00082c08
_sw zero,0x1c4(s0)
lw v0,0x19c(s4)
addiu v0,v0,0x1
sltu v0,zero,v0
sll v0,v0,0x4
addu v0,s4,v0
lw v0,0x1e0(v0)
beq v0,v1,0x00082c90
_nop
lbu a2,0x230(s4)
bne a2,zero,0x00082ca0
_lw t9,-0x7fd4(gp)
b 0x00082ca0
_lbu a2,0x231(s4)
(translation_unit "int FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char cVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  \n  if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }\n  uVar9 = *param_1;\n  iVar7 = param_1[param_2 * 4 + 0x71];\n  uVar8 = param_1[param_2 + 0x66];\n  if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }\n  uVar3 = iVar7 - 1;\n  do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char cVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  \n  if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }\n  uVar9 = *param_1;\n  iVar7 = param_1[param_2 * 4 + 0x71];\n  uVar8 = param_1[param_2 + 0x66];\n  if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }\n  uVar3 = iVar7 - 1;\n  do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined1 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char cVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  \n  if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }\n  uVar9 = *param_1;\n  iVar7 = param_1[param_2 * 4 + 0x71];\n  uVar8 = param_1[param_2 + 0x66];\n  if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }\n  uVar3 = iVar7 - 1;\n  do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (if_statement "if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }" if (parenthesized_expression "(param_1[param_2 * 4 + 0x70] == 2)" ( (binary_expression "param_1[param_2 * 4 + 0x70] == 2" (subscript_expression "param_1[param_2 * 4 + 0x70]" identifier [ (binary_expression "param_2 * 4 + 0x70" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) == number_literal) )) (compound_statement "{\n    *param_4 = 1;\n    return 0;\n  }" { (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar9 = *param_1;" (assignment_expression "uVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" identifier = (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar8 = param_1[param_2 + 0x66];" (assignment_expression "uVar8 = param_1[param_2 + 0x66]" identifier = (subscript_expression "param_1[param_2 + 0x66]" identifier [ (binary_expression "param_2 + 0x66" identifier + number_literal) ])) ;) (if_statement "if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }" { (expression_statement "iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);" (assignment_expression "iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" identifier = (call_expression "(*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" (parenthesized_expression "(*(code *)PTR_FUN_000a63b8)" ( (pointer_expression "*(code *)PTR_FUN_000a63b8" * (cast_expression "(code *)PTR_FUN_000a63b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,0,1)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }" { (labeled_statement "LAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);" statement_identifier : (expression_statement "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);" (call_expression "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98)" (parenthesized_expression "(*(code *)PTR_FUN_000a614c)" ( (pointer_expression "*(code *)PTR_FUN_000a614c" * (cast_expression "(code *)PTR_FUN_000a614c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,PTR_UINT_000a6194 + 0x4b98)" ( identifier , (binary_expression "PTR_UINT_000a6194 + 0x4b98" identifier + number_literal) ))) ;)) (return_statement "return 0x1c;" return number_literal ;) })) (expression_statement "iVar7 = FUN_0007e6ac(param_1,param_2);" (assignment_expression "iVar7 = FUN_0007e6ac(param_1,param_2)" identifier = (call_expression "FUN_0007e6ac(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n      return iVar7;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      return iVar7;\n    }" { (return_statement "return iVar7;" return identifier ;) })) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" identifier = (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ])) ;) })) (expression_statement "uVar3 = iVar7 - 1;" (assignment_expression "uVar3 = iVar7 - 1" identifier = (binary_expression "iVar7 - 1" identifier - number_literal)) ;) (do_statement "do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );" do (compound_statement "{\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  }" { (if_statement "if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }" if (parenthesized_expression "(2 < uVar3)" ( (binary_expression "2 < uVar3" number_literal < identifier) )) (compound_statement "{\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }" { (if_statement "if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" if (parenthesized_expression "(iVar7 == 4)" ( (binary_expression "iVar7 == 4" identifier == number_literal) )) (compound_statement "{\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }" { (if_statement "if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" if (parenthesized_expression "((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2))" ( (binary_expression "(param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)" (parenthesized_expression "(param_1[0x3c] == 2)" ( (binary_expression "param_1[0x3c] == 2" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)" ( (binary_expression "param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2" (subscript_expression "param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78]" identifier [ (binary_expression "(uint)(param_1[0x67] != -1) * 4 + 0x78" (binary_expression "(uint)(param_1[0x67] != -1) * 4" (call_expression "(uint)(param_1[0x67] != -1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[0x67] != -1)" ( (binary_expression "param_1[0x67] != -1" (subscript_expression "param_1[0x67]" identifier [ number_literal ]) != number_literal) ))) * number_literal) + number_literal) ]) != number_literal) ))) )) (compound_statement "{\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }" { (expression_statement "cVar6 = *(char *)(param_1 + 0x8c);" (assignment_expression "cVar6 = *(char *)(param_1 + 0x8c)" identifier = (pointer_expression "*(char *)(param_1 + 0x8c)" * (cast_expression "(char *)(param_1 + 0x8c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8c)" ( (binary_expression "param_1 + 0x8c" identifier + number_literal) ))))) ;) (if_statement "if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }" { (expression_statement "cVar6 = *(char *)((int)param_1 + 0x231);" (assignment_expression "cVar6 = *(char *)((int)param_1 + 0x231)" identifier = (pointer_expression "*(char *)((int)param_1 + 0x231)" * (cast_expression "(char *)((int)param_1 + 0x231)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x231)" ( (binary_expression "(int)param_1 + 0x231" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) }) (else_clause "else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" else (compound_statement "{\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" { (expression_statement "cVar6 = *(char *)(param_1 + 0x82);" (assignment_expression "cVar6 = *(char *)(param_1 + 0x82)" identifier = (pointer_expression "*(char *)(param_1 + 0x82)" * (cast_expression "(char *)(param_1 + 0x82)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x82)" ( (binary_expression "param_1 + 0x82" identifier + number_literal) ))))) ;) (if_statement "if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }" { (expression_statement "cVar6 = *(char *)((int)param_1 + 0x209);" (assignment_expression "cVar6 = *(char *)((int)param_1 + 0x209)" identifier = (pointer_expression "*(char *)((int)param_1 + 0x209)" * (cast_expression "(char *)((int)param_1 + 0x209)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x209)" ( (binary_expression "(int)param_1 + 0x209" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) }))) (expression_statement "iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);" (assignment_expression "iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" identifier = (call_expression "FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" identifier (argument_list "(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" ( identifier , (binary_expression "param_1 + param_2 * 4 + 0x6f" (binary_expression "param_1 + param_2 * 4" identifier + (binary_expression "param_2 * 4" identifier * number_literal)) + number_literal) , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n          return iVar7;\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          return iVar7;\n        }" { (return_statement "return iVar7;" return identifier ;) })) }) (else_clause "else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" else (if_statement "if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" if (parenthesized_expression "(iVar7 != 5)" ( (binary_expression "iVar7 != 5" identifier != number_literal) )) (compound_statement "{\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" { (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "param_1[param_2 * 4 + 0x71] = 0;" (assignment_expression "param_1[param_2 * 4 + 0x71] = 0" (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })))) (expression_statement "param_1[param_2 * 4 + 0x70] = 2;" (assignment_expression "param_1[param_2 * 4 + 0x70] = 2" (subscript_expression "param_1[param_2 * 4 + 0x70]" identifier [ (binary_expression "param_2 * 4 + 0x70" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;" (assignment_expression "param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0" (subscript_expression "param_1[param_2 + 0x6b]" identifier [ (binary_expression "param_2 + 0x6b" identifier + number_literal) ]) = (binary_expression "PTR_LAB_000a613c + -0x37e0" identifier + number_literal)) ;) (expression_statement "param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;" (assignment_expression "param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8" (subscript_expression "param_1[param_2 + 0x6d]" identifier [ (binary_expression "param_2 + 0x6d" identifier + number_literal) ]) = (binary_expression "PTR_LAB_000a613c + -0x26c8" identifier + number_literal)) ;) (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "param_1[param_2 * 4 + 0x71] = 0;" (assignment_expression "param_1[param_2 * 4 + 0x71] = 0" (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);" (assignment_expression "iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" identifier = (call_expression "(*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" (parenthesized_expression "(*(code *)PTR_FUN_000a63b8)" ( (pointer_expression "*(code *)PTR_FUN_000a63b8" * (cast_expression "(code *)PTR_FUN_000a63b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,0,1)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar7 = iVar1;" (assignment_expression "iVar7 = iVar1" identifier = identifier) ;) (if_statement "if (param_3 != 0) {\n      iVar7 = 0;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar7 = 0;\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) })) (if_statement "if (iVar1 < 0) goto LAB_00082b9c;" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00082b9c;" goto statement_identifier ;)) (expression_statement "uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;" (assignment_expression "uVar3 = param_1[param_2 * 4 + 0x71] ^ 3" identifier = (binary_expression "param_1[param_2 * 4 + 0x71] ^ 3" (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) ^ number_literal)) ;) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar4 = uVar8;\n    }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar5 = uVar8;\n    }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (if_statement "if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }" if (parenthesized_expression "(param_1[param_2 * 4 + 0x71] - 2 < 2)" ( (binary_expression "param_1[param_2 * 4 + 0x71] - 2 < 2" (binary_expression "param_1[param_2 * 4 + 0x71] - 2" (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) - number_literal) < number_literal) )) (compound_statement "{\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }" { (expression_statement "iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);" (assignment_expression "iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7)" identifier = (call_expression "(*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7)" (parenthesized_expression "(*(code *)PTR_FUN_000a63d4)" ( (pointer_expression "*(code *)PTR_FUN_000a63d4" * (cast_expression "(code *)PTR_FUN_000a63d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar4,0xffffffff,uVar5,iVar7)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }" { (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_000a6dcc)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000a6dcc)()" (parenthesized_expression "(*(code *)PTR___errno_location_000a6dcc)" ( (pointer_expression "*(code *)PTR___errno_location_000a6dcc" * (cast_expression "(code *)PTR___errno_location_000a6dcc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);" (call_expression "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2)" (parenthesized_expression "(*(code *)PTR_FUN_000a614c)" ( (pointer_expression "*(code *)PTR_FUN_000a614c" * (cast_expression "(code *)PTR_FUN_000a614c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2)" ( identifier , (binary_expression "PTR_UINT_000a6194 + 0x39c4" identifier + number_literal) , (pointer_expression "*puVar2" * identifier) ))) ;) (return_statement "return 0x23;" return number_literal ;) })) (if_statement "if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }" { (if_statement "if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n          *param_4 = 0;\n          return 0;\n        }" { (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00082b9c;" goto statement_identifier ;) })) })) (expression_statement "iVar7 = FUN_000802e8(param_1,param_2);" (assignment_expression "iVar7 = FUN_000802e8(param_1,param_2)" identifier = (call_expression "FUN_000802e8(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n      return iVar7;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      return iVar7;\n    }" { (return_statement "return iVar7;" return identifier ;) })) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" identifier = (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar3 = iVar7 - 1;" (assignment_expression "uVar3 = iVar7 - 1" identifier = (binary_expression "iVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }" if (parenthesized_expression "((param_3 != 0) && (uVar3 < 3))" ( (binary_expression "(param_3 != 0) && (uVar3 < 3)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar3 < 3)" ( (binary_expression "uVar3 < 3" identifier < number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nCURLcode ossl_connect_common(connectdata *conn,int sockindex,_Bool nonblocking,_Bool *done)\n\n{\n  int iVar1;\n  CURLcode CVar2;\n  undefined4 *puVar3;\n  uint uVar4;\n  curl_socket_t cVar5;\n  ssl_connect_state sVar6;\n  undefined3 in_register_00000018;\n  int iVar7;\n  curl_socket_t cVar8;\n  _Bool strict;\n  ssl_connect_state sVar9;\n  int iVar10;\n  curl_socket_t cVar11;\n  Curl_easy *pCVar12;\n  \n  iVar7 = CONCAT31(in_register_00000018,nonblocking);\n  if (conn->ssl[sockindex].state == ssl_connection_complete) {\n    *done = true;\n    return CURLE_OK;\n  }\n  pCVar12 = conn->data;\n  sVar9 = conn->ssl[sockindex].connecting_state;\n  cVar11 = conn->sock[sockindex];\n  if (sVar9 == ssl_connect_1) {\n    iVar10 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    if (iVar10 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);\n      return CURLE_OPERATION_TIMEDOUT;\n    }\n    CVar2 = ossl_connect_step1(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n  }\n  uVar4 = sVar9 - ssl_connect_2;\n  do {\n    if (2 < uVar4) {\n      if (sVar9 == ssl_connect_3) {\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }\n      else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }\n      conn->ssl[sockindex].state = ssl_connection_complete;\n      conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);\n      conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);\n      *done = true;\n      conn->ssl[sockindex].connecting_state = ssl_connect_1;\n      return CURLE_OK;\n    }\n    iVar1 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    iVar10 = iVar1;\n    if (iVar7 != 0) {\n      iVar10 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    sVar6 = sVar9 ^ ssl_connect_2_writing;\n    cVar5 = -1;\n    if (sVar6 != ssl_connect_1) {\n      cVar5 = cVar11;\n    }\n    cVar8 = -1;\n    if (sVar6 == ssl_connect_1) {\n      cVar8 = cVar11;\n    }\n    if (sVar9 - ssl_connect_2_reading < 2) {\n      iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);\n      if (iVar10 < 0) {\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }\n      if (iVar10 == 0) {\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    CVar2 = ossl_connect_step2(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    uVar4 = sVar9 - ssl_connect_2;\n    if ((iVar7 != 0) && (uVar4 < 3)) {\n      return CURLE_OK;\n    }\n  } while( true );\n}\n\n" comment (function_definition "CURLcode ossl_connect_common(connectdata *conn,int sockindex,_Bool nonblocking,_Bool *done)\n\n{\n  int iVar1;\n  CURLcode CVar2;\n  undefined4 *puVar3;\n  uint uVar4;\n  curl_socket_t cVar5;\n  ssl_connect_state sVar6;\n  undefined3 in_register_00000018;\n  int iVar7;\n  curl_socket_t cVar8;\n  _Bool strict;\n  ssl_connect_state sVar9;\n  int iVar10;\n  curl_socket_t cVar11;\n  Curl_easy *pCVar12;\n  \n  iVar7 = CONCAT31(in_register_00000018,nonblocking);\n  if (conn->ssl[sockindex].state == ssl_connection_complete) {\n    *done = true;\n    return CURLE_OK;\n  }\n  pCVar12 = conn->data;\n  sVar9 = conn->ssl[sockindex].connecting_state;\n  cVar11 = conn->sock[sockindex];\n  if (sVar9 == ssl_connect_1) {\n    iVar10 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    if (iVar10 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);\n      return CURLE_OPERATION_TIMEDOUT;\n    }\n    CVar2 = ossl_connect_step1(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n  }\n  uVar4 = sVar9 - ssl_connect_2;\n  do {\n    if (2 < uVar4) {\n      if (sVar9 == ssl_connect_3) {\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }\n      else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }\n      conn->ssl[sockindex].state = ssl_connection_complete;\n      conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);\n      conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);\n      *done = true;\n      conn->ssl[sockindex].connecting_state = ssl_connect_1;\n      return CURLE_OK;\n    }\n    iVar1 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    iVar10 = iVar1;\n    if (iVar7 != 0) {\n      iVar10 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    sVar6 = sVar9 ^ ssl_connect_2_writing;\n    cVar5 = -1;\n    if (sVar6 != ssl_connect_1) {\n      cVar5 = cVar11;\n    }\n    cVar8 = -1;\n    if (sVar6 == ssl_connect_1) {\n      cVar8 = cVar11;\n    }\n    if (sVar9 - ssl_connect_2_reading < 2) {\n      iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);\n      if (iVar10 < 0) {\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }\n      if (iVar10 == 0) {\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    CVar2 = ossl_connect_step2(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    uVar4 = sVar9 - ssl_connect_2;\n    if ((iVar7 != 0) && (uVar4 < 3)) {\n      return CURLE_OK;\n    }\n  } while( true );\n}" type_identifier (function_declarator "ossl_connect_common(connectdata *conn,int sockindex,_Bool nonblocking,_Bool *done)" identifier (parameter_list "(connectdata *conn,int sockindex,_Bool nonblocking,_Bool *done)" ( (parameter_declaration "connectdata *conn" type_identifier (pointer_declarator "*conn" * identifier)) , (parameter_declaration "int sockindex" primitive_type identifier) , (parameter_declaration "_Bool nonblocking" type_identifier identifier) , (parameter_declaration "_Bool *done" type_identifier (pointer_declarator "*done" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  CURLcode CVar2;\n  undefined4 *puVar3;\n  uint uVar4;\n  curl_socket_t cVar5;\n  ssl_connect_state sVar6;\n  undefined3 in_register_00000018;\n  int iVar7;\n  curl_socket_t cVar8;\n  _Bool strict;\n  ssl_connect_state sVar9;\n  int iVar10;\n  curl_socket_t cVar11;\n  Curl_easy *pCVar12;\n  \n  iVar7 = CONCAT31(in_register_00000018,nonblocking);\n  if (conn->ssl[sockindex].state == ssl_connection_complete) {\n    *done = true;\n    return CURLE_OK;\n  }\n  pCVar12 = conn->data;\n  sVar9 = conn->ssl[sockindex].connecting_state;\n  cVar11 = conn->sock[sockindex];\n  if (sVar9 == ssl_connect_1) {\n    iVar10 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    if (iVar10 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);\n      return CURLE_OPERATION_TIMEDOUT;\n    }\n    CVar2 = ossl_connect_step1(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n  }\n  uVar4 = sVar9 - ssl_connect_2;\n  do {\n    if (2 < uVar4) {\n      if (sVar9 == ssl_connect_3) {\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }\n      else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }\n      conn->ssl[sockindex].state = ssl_connection_complete;\n      conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);\n      conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);\n      *done = true;\n      conn->ssl[sockindex].connecting_state = ssl_connect_1;\n      return CURLE_OK;\n    }\n    iVar1 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    iVar10 = iVar1;\n    if (iVar7 != 0) {\n      iVar10 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    sVar6 = sVar9 ^ ssl_connect_2_writing;\n    cVar5 = -1;\n    if (sVar6 != ssl_connect_1) {\n      cVar5 = cVar11;\n    }\n    cVar8 = -1;\n    if (sVar6 == ssl_connect_1) {\n      cVar8 = cVar11;\n    }\n    if (sVar9 - ssl_connect_2_reading < 2) {\n      iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);\n      if (iVar10 < 0) {\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }\n      if (iVar10 == 0) {\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    CVar2 = ossl_connect_step2(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    uVar4 = sVar9 - ssl_connect_2;\n    if ((iVar7 != 0) && (uVar4 < 3)) {\n      return CURLE_OK;\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "CURLcode CVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "curl_socket_t cVar5;" type_identifier identifier ;) (declaration "ssl_connect_state sVar6;" type_identifier identifier ;) (declaration "undefined3 in_register_00000018;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "curl_socket_t cVar8;" type_identifier identifier ;) (declaration "_Bool strict;" type_identifier identifier ;) (declaration "ssl_connect_state sVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "curl_socket_t cVar11;" type_identifier identifier ;) (declaration "Curl_easy *pCVar12;" type_identifier (pointer_declarator "*pCVar12" * identifier) ;) (expression_statement "iVar7 = CONCAT31(in_register_00000018,nonblocking);" (assignment_expression "iVar7 = CONCAT31(in_register_00000018,nonblocking)" identifier = (call_expression "CONCAT31(in_register_00000018,nonblocking)" identifier (argument_list "(in_register_00000018,nonblocking)" ( identifier , identifier )))) ;) (if_statement "if (conn->ssl[sockindex].state == ssl_connection_complete) {\n    *done = true;\n    return CURLE_OK;\n  }" if (parenthesized_expression "(conn->ssl[sockindex].state == ssl_connection_complete)" ( (binary_expression "conn->ssl[sockindex].state == ssl_connection_complete" (field_expression "conn->ssl[sockindex].state" (subscript_expression "conn->ssl[sockindex]" (field_expression "conn->ssl" identifier -> field_identifier) [ identifier ]) . field_identifier) == identifier) )) (compound_statement "{\n    *done = true;\n    return CURLE_OK;\n  }" { (expression_statement "*done = true;" (assignment_expression "*done = true" (pointer_expression "*done" * identifier) = true) ;) (return_statement "return CURLE_OK;" return identifier ;) })) (expression_statement "pCVar12 = conn->data;" (assignment_expression "pCVar12 = conn->data" identifier = (field_expression "conn->data" identifier -> field_identifier)) ;) (expression_statement "sVar9 = conn->ssl[sockindex].connecting_state;" (assignment_expression "sVar9 = conn->ssl[sockindex].connecting_state" identifier = (field_expression "conn->ssl[sockindex].connecting_state" (subscript_expression "conn->ssl[sockindex]" (field_expression "conn->ssl" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "cVar11 = conn->sock[sockindex];" (assignment_expression "cVar11 = conn->sock[sockindex]" identifier = (subscript_expression "conn->sock[sockindex]" (field_expression "conn->sock" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if (sVar9 == ssl_connect_1) {\n    iVar10 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    if (iVar10 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);\n      return CURLE_OPERATION_TIMEDOUT;\n    }\n    CVar2 = ossl_connect_step1(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n  }" if (parenthesized_expression "(sVar9 == ssl_connect_1)" ( (binary_expression "sVar9 == ssl_connect_1" identifier == identifier) )) (compound_statement "{\n    iVar10 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    if (iVar10 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);\n      return CURLE_OPERATION_TIMEDOUT;\n    }\n    CVar2 = ossl_connect_step1(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n  }" { (expression_statement "iVar10 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);" (assignment_expression "iVar10 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1)" identifier = (call_expression "(*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1)" (parenthesized_expression "(*(code *)PTR_Curl_timeleft_000a63b8)" ( (pointer_expression "*(code *)PTR_Curl_timeleft_000a63b8" * (cast_expression "(code *)PTR_Curl_timeleft_000a63b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pCVar12,0,1)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar10 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);\n      return CURLE_OPERATION_TIMEDOUT;\n    }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_00082b9c:\n      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);\n      return CURLE_OPERATION_TIMEDOUT;\n    }" { (labeled_statement "LAB_00082b9c:\n      (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);" statement_identifier : (expression_statement "(*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98);" (call_expression "(*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x4b98)" (parenthesized_expression "(*(code *)PTR_Curl_failf_000a614c)" ( (pointer_expression "*(code *)PTR_Curl_failf_000a614c" * (cast_expression "(code *)PTR_Curl_failf_000a614c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pCVar12,PTR_UINT_000a6194 + 0x4b98)" ( identifier , (binary_expression "PTR_UINT_000a6194 + 0x4b98" identifier + number_literal) ))) ;)) (return_statement "return CURLE_OPERATION_TIMEDOUT;" return identifier ;) })) (expression_statement "CVar2 = ossl_connect_step1(conn,sockindex);" (assignment_expression "CVar2 = ossl_connect_step1(conn,sockindex)" identifier = (call_expression "ossl_connect_step1(conn,sockindex)" identifier (argument_list "(conn,sockindex)" ( identifier , identifier )))) ;) (if_statement "if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }" if (parenthesized_expression "(CVar2 != CURLE_OK)" ( (binary_expression "CVar2 != CURLE_OK" identifier != identifier) )) (compound_statement "{\n      return CVar2;\n    }" { (return_statement "return CVar2;" return identifier ;) })) (expression_statement "sVar9 = conn->ssl[sockindex].connecting_state;" (assignment_expression "sVar9 = conn->ssl[sockindex].connecting_state" identifier = (field_expression "conn->ssl[sockindex].connecting_state" (subscript_expression "conn->ssl[sockindex]" (field_expression "conn->ssl" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) })) (expression_statement "uVar4 = sVar9 - ssl_connect_2;" (assignment_expression "uVar4 = sVar9 - ssl_connect_2" identifier = (binary_expression "sVar9 - ssl_connect_2" identifier - identifier)) ;) (do_statement "do {\n    if (2 < uVar4) {\n      if (sVar9 == ssl_connect_3) {\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }\n      else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }\n      conn->ssl[sockindex].state = ssl_connection_complete;\n      conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);\n      conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);\n      *done = true;\n      conn->ssl[sockindex].connecting_state = ssl_connect_1;\n      return CURLE_OK;\n    }\n    iVar1 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    iVar10 = iVar1;\n    if (iVar7 != 0) {\n      iVar10 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    sVar6 = sVar9 ^ ssl_connect_2_writing;\n    cVar5 = -1;\n    if (sVar6 != ssl_connect_1) {\n      cVar5 = cVar11;\n    }\n    cVar8 = -1;\n    if (sVar6 == ssl_connect_1) {\n      cVar8 = cVar11;\n    }\n    if (sVar9 - ssl_connect_2_reading < 2) {\n      iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);\n      if (iVar10 < 0) {\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }\n      if (iVar10 == 0) {\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    CVar2 = ossl_connect_step2(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    uVar4 = sVar9 - ssl_connect_2;\n    if ((iVar7 != 0) && (uVar4 < 3)) {\n      return CURLE_OK;\n    }\n  } while( true );" do (compound_statement "{\n    if (2 < uVar4) {\n      if (sVar9 == ssl_connect_3) {\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }\n      else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }\n      conn->ssl[sockindex].state = ssl_connection_complete;\n      conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);\n      conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);\n      *done = true;\n      conn->ssl[sockindex].connecting_state = ssl_connect_1;\n      return CURLE_OK;\n    }\n    iVar1 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);\n    iVar10 = iVar1;\n    if (iVar7 != 0) {\n      iVar10 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    sVar6 = sVar9 ^ ssl_connect_2_writing;\n    cVar5 = -1;\n    if (sVar6 != ssl_connect_1) {\n      cVar5 = cVar11;\n    }\n    cVar8 = -1;\n    if (sVar6 == ssl_connect_1) {\n      cVar8 = cVar11;\n    }\n    if (sVar9 - ssl_connect_2_reading < 2) {\n      iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);\n      if (iVar10 < 0) {\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }\n      if (iVar10 == 0) {\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    CVar2 = ossl_connect_step2(conn,sockindex);\n    if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }\n    sVar9 = conn->ssl[sockindex].connecting_state;\n    uVar4 = sVar9 - ssl_connect_2;\n    if ((iVar7 != 0) && (uVar4 < 3)) {\n      return CURLE_OK;\n    }\n  }" { (if_statement "if (2 < uVar4) {\n      if (sVar9 == ssl_connect_3) {\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }\n      else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }\n      conn->ssl[sockindex].state = ssl_connection_complete;\n      conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);\n      conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);\n      *done = true;\n      conn->ssl[sockindex].connecting_state = ssl_connect_1;\n      return CURLE_OK;\n    }" if (parenthesized_expression "(2 < uVar4)" ( (binary_expression "2 < uVar4" number_literal < identifier) )) (compound_statement "{\n      if (sVar9 == ssl_connect_3) {\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }\n      else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }\n      conn->ssl[sockindex].state = ssl_connection_complete;\n      conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);\n      conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);\n      *done = true;\n      conn->ssl[sockindex].connecting_state = ssl_connect_1;\n      return CURLE_OK;\n    }" { (if_statement "if (sVar9 == ssl_connect_3) {\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }\n      else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }" if (parenthesized_expression "(sVar9 == ssl_connect_3)" ( (binary_expression "sVar9 == ssl_connect_3" identifier == identifier) )) (compound_statement "{\n        if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }\n        CVar2 = servercert(conn,conn->ssl + sockindex,strict);\n        if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }\n      }" { (if_statement "if (((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)) {\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }\n        else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }" if (parenthesized_expression "(((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete))" ( (binary_expression "((conn->http_proxy).proxytype == CURLPROXY_HTTPS) &&\n           (conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)" (parenthesized_expression "((conn->http_proxy).proxytype == CURLPROXY_HTTPS)" ( (binary_expression "(conn->http_proxy).proxytype == CURLPROXY_HTTPS" (field_expression "(conn->http_proxy).proxytype" (parenthesized_expression "(conn->http_proxy)" ( (field_expression "conn->http_proxy" identifier -> field_identifier) )) . field_identifier) == identifier) )) && (parenthesized_expression "(conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete)" ( (binary_expression "conn->proxy_ssl[conn->sock[1] != -1].state != ssl_connection_complete" (field_expression "conn->proxy_ssl[conn->sock[1] != -1].state" (subscript_expression "conn->proxy_ssl[conn->sock[1] != -1]" (field_expression "conn->proxy_ssl" identifier -> field_identifier) [ (binary_expression "conn->sock[1] != -1" (subscript_expression "conn->sock[1]" (field_expression "conn->sock" identifier -> field_identifier) [ number_literal ]) != number_literal) ]) . field_identifier) != identifier) ))) )) (compound_statement "{\n          strict = (conn->proxy_ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }\n        }" { (expression_statement "strict = (conn->proxy_ssl_config).verifypeer;" (assignment_expression "strict = (conn->proxy_ssl_config).verifypeer" identifier = (field_expression "(conn->proxy_ssl_config).verifypeer" (parenthesized_expression "(conn->proxy_ssl_config)" ( (field_expression "conn->proxy_ssl_config" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (strict == false) {\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }" if (parenthesized_expression "(strict == false)" ( (binary_expression "strict == false" identifier == false) )) (compound_statement "{\n            strict = (conn->proxy_ssl_config).verifyhost;\n          }" { (expression_statement "strict = (conn->proxy_ssl_config).verifyhost;" (assignment_expression "strict = (conn->proxy_ssl_config).verifyhost" identifier = (field_expression "(conn->proxy_ssl_config).verifyhost" (parenthesized_expression "(conn->proxy_ssl_config)" ( (field_expression "conn->proxy_ssl_config" identifier -> field_identifier) )) . field_identifier)) ;) })) }) (else_clause "else {\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }" else (compound_statement "{\n          strict = (conn->ssl_config).verifypeer;\n          if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }\n        }" { (expression_statement "strict = (conn->ssl_config).verifypeer;" (assignment_expression "strict = (conn->ssl_config).verifypeer" identifier = (field_expression "(conn->ssl_config).verifypeer" (parenthesized_expression "(conn->ssl_config)" ( (field_expression "conn->ssl_config" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (strict == false) {\n            strict = (conn->ssl_config).verifyhost;\n          }" if (parenthesized_expression "(strict == false)" ( (binary_expression "strict == false" identifier == false) )) (compound_statement "{\n            strict = (conn->ssl_config).verifyhost;\n          }" { (expression_statement "strict = (conn->ssl_config).verifyhost;" (assignment_expression "strict = (conn->ssl_config).verifyhost" identifier = (field_expression "(conn->ssl_config).verifyhost" (parenthesized_expression "(conn->ssl_config)" ( (field_expression "conn->ssl_config" identifier -> field_identifier) )) . field_identifier)) ;) })) }))) (expression_statement "CVar2 = servercert(conn,conn->ssl + sockindex,strict);" (assignment_expression "CVar2 = servercert(conn,conn->ssl + sockindex,strict)" identifier = (call_expression "servercert(conn,conn->ssl + sockindex,strict)" identifier (argument_list "(conn,conn->ssl + sockindex,strict)" ( identifier , (binary_expression "conn->ssl + sockindex" (field_expression "conn->ssl" identifier -> field_identifier) + identifier) , identifier )))) ;) (if_statement "if (CVar2 != CURLE_OK) {\n          return CVar2;\n        }" if (parenthesized_expression "(CVar2 != CURLE_OK)" ( (binary_expression "CVar2 != CURLE_OK" identifier != identifier) )) (compound_statement "{\n          return CVar2;\n        }" { (return_statement "return CVar2;" return identifier ;) })) }) (else_clause "else if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }" else (if_statement "if (sVar9 != ssl_connect_done) {\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }" if (parenthesized_expression "(sVar9 != ssl_connect_done)" ( (binary_expression "sVar9 != ssl_connect_done" identifier != identifier) )) (compound_statement "{\n        *done = false;\n        conn->ssl[sockindex].connecting_state = ssl_connect_1;\n        return CURLE_OK;\n      }" { (expression_statement "*done = false;" (assignment_expression "*done = false" (pointer_expression "*done" * identifier) = false) ;) (expression_statement "conn->ssl[sockindex].connecting_state = ssl_connect_1;" (assignment_expression "conn->ssl[sockindex].connecting_state = ssl_connect_1" (field_expression "conn->ssl[sockindex].connecting_state" (subscript_expression "conn->ssl[sockindex]" (field_expression "conn->ssl" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) (return_statement "return CURLE_OK;" return identifier ;) })))) (expression_statement "conn->ssl[sockindex].state = ssl_connection_complete;" (assignment_expression "conn->ssl[sockindex].state = ssl_connection_complete" (field_expression "conn->ssl[sockindex].state" (subscript_expression "conn->ssl[sockindex]" (field_expression "conn->ssl" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0);" (assignment_expression "conn->recv[sockindex] = (Curl_recv *)(PTR_LAB_000a613c + -0x37e0)" (subscript_expression "conn->recv[sockindex]" (field_expression "conn->recv" identifier -> field_identifier) [ identifier ]) = (cast_expression "(Curl_recv *)(PTR_LAB_000a613c + -0x37e0)" ( (type_descriptor "Curl_recv *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000a613c + -0x37e0)" ( (binary_expression "PTR_LAB_000a613c + -0x37e0" identifier + number_literal) )))) ;) (expression_statement "conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8);" (assignment_expression "conn->send[sockindex] = (Curl_send *)(PTR_LAB_000a613c + -0x26c8)" (subscript_expression "conn->send[sockindex]" (field_expression "conn->send" identifier -> field_identifier) [ identifier ]) = (cast_expression "(Curl_send *)(PTR_LAB_000a613c + -0x26c8)" ( (type_descriptor "Curl_send *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000a613c + -0x26c8)" ( (binary_expression "PTR_LAB_000a613c + -0x26c8" identifier + number_literal) )))) ;) (expression_statement "*done = true;" (assignment_expression "*done = true" (pointer_expression "*done" * identifier) = true) ;) (expression_statement "conn->ssl[sockindex].connecting_state = ssl_connect_1;" (assignment_expression "conn->ssl[sockindex].connecting_state = ssl_connect_1" (field_expression "conn->ssl[sockindex].connecting_state" (subscript_expression "conn->ssl[sockindex]" (field_expression "conn->ssl" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) (return_statement "return CURLE_OK;" return identifier ;) })) (expression_statement "iVar1 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1);" (assignment_expression "iVar1 = (*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1)" identifier = (call_expression "(*(code *)PTR_Curl_timeleft_000a63b8)(pCVar12,0,1)" (parenthesized_expression "(*(code *)PTR_Curl_timeleft_000a63b8)" ( (pointer_expression "*(code *)PTR_Curl_timeleft_000a63b8" * (cast_expression "(code *)PTR_Curl_timeleft_000a63b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pCVar12,0,1)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar10 = iVar1;" (assignment_expression "iVar10 = iVar1" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\n      iVar10 = 0;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = 0;\n    }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) })) (if_statement "if (iVar1 < 0) goto LAB_00082b9c;" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00082b9c;" goto statement_identifier ;)) (expression_statement "sVar9 = conn->ssl[sockindex].connecting_state;" (assignment_expression "sVar9 = conn->ssl[sockindex].connecting_state" identifier = (field_expression "conn->ssl[sockindex].connecting_state" (subscript_expression "conn->ssl[sockindex]" (field_expression "conn->ssl" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "sVar6 = sVar9 ^ ssl_connect_2_writing;" (assignment_expression "sVar6 = sVar9 ^ ssl_connect_2_writing" identifier = (binary_expression "sVar9 ^ ssl_connect_2_writing" identifier ^ identifier)) ;) (expression_statement "cVar5 = -1;" (assignment_expression "cVar5 = -1" identifier = number_literal) ;) (if_statement "if (sVar6 != ssl_connect_1) {\n      cVar5 = cVar11;\n    }" if (parenthesized_expression "(sVar6 != ssl_connect_1)" ( (binary_expression "sVar6 != ssl_connect_1" identifier != identifier) )) (compound_statement "{\n      cVar5 = cVar11;\n    }" { (expression_statement "cVar5 = cVar11;" (assignment_expression "cVar5 = cVar11" identifier = identifier) ;) })) (expression_statement "cVar8 = -1;" (assignment_expression "cVar8 = -1" identifier = number_literal) ;) (if_statement "if (sVar6 == ssl_connect_1) {\n      cVar8 = cVar11;\n    }" if (parenthesized_expression "(sVar6 == ssl_connect_1)" ( (binary_expression "sVar6 == ssl_connect_1" identifier == identifier) )) (compound_statement "{\n      cVar8 = cVar11;\n    }" { (expression_statement "cVar8 = cVar11;" (assignment_expression "cVar8 = cVar11" identifier = identifier) ;) })) (if_statement "if (sVar9 - ssl_connect_2_reading < 2) {\n      iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);\n      if (iVar10 < 0) {\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }\n      if (iVar10 == 0) {\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }\n    }" if (parenthesized_expression "(sVar9 - ssl_connect_2_reading < 2)" ( (binary_expression "sVar9 - ssl_connect_2_reading < 2" (binary_expression "sVar9 - ssl_connect_2_reading" identifier - identifier) < number_literal) )) (compound_statement "{\n      iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);\n      if (iVar10 < 0) {\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }\n      if (iVar10 == 0) {\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }\n    }" { (expression_statement "iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10);" (assignment_expression "iVar10 = (*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10)" identifier = (call_expression "(*(code *)PTR_Curl_socket_check_000a63d4)(cVar5,0xffffffff,cVar8,iVar10)" (parenthesized_expression "(*(code *)PTR_Curl_socket_check_000a63d4)" ( (pointer_expression "*(code *)PTR_Curl_socket_check_000a63d4" * (cast_expression "(code *)PTR_Curl_socket_check_000a63d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(cVar5,0xffffffff,cVar8,iVar10)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar10 < 0) {\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n        puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);\n        return CURLE_SSL_CONNECT_ERROR;\n      }" { (expression_statement "puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();" (assignment_expression "puVar3 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_000a6dcc)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000a6dcc)()" (parenthesized_expression "(*(code *)PTR___errno_location_000a6dcc)" ( (pointer_expression "*(code *)PTR___errno_location_000a6dcc" * (cast_expression "(code *)PTR___errno_location_000a6dcc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "(*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3);" (call_expression "(*(code *)PTR_Curl_failf_000a614c)(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3)" (parenthesized_expression "(*(code *)PTR_Curl_failf_000a614c)" ( (pointer_expression "*(code *)PTR_Curl_failf_000a614c" * (cast_expression "(code *)PTR_Curl_failf_000a614c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pCVar12,PTR_UINT_000a6194 + 0x39c4,*puVar3)" ( identifier , (binary_expression "PTR_UINT_000a6194 + 0x39c4" identifier + number_literal) , (pointer_expression "*puVar3" * identifier) ))) ;) (return_statement "return CURLE_SSL_CONNECT_ERROR;" return identifier ;) })) (if_statement "if (iVar10 == 0) {\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }\n        goto LAB_00082b9c;\n      }" { (if_statement "if (iVar7 != 0) {\n          *done = false;\n          return CURLE_OK;\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          *done = false;\n          return CURLE_OK;\n        }" { (expression_statement "*done = false;" (assignment_expression "*done = false" (pointer_expression "*done" * identifier) = false) ;) (return_statement "return CURLE_OK;" return identifier ;) })) (goto_statement "goto LAB_00082b9c;" goto statement_identifier ;) })) })) (expression_statement "CVar2 = ossl_connect_step2(conn,sockindex);" (assignment_expression "CVar2 = ossl_connect_step2(conn,sockindex)" identifier = (call_expression "ossl_connect_step2(conn,sockindex)" identifier (argument_list "(conn,sockindex)" ( identifier , identifier )))) ;) (if_statement "if (CVar2 != CURLE_OK) {\n      return CVar2;\n    }" if (parenthesized_expression "(CVar2 != CURLE_OK)" ( (binary_expression "CVar2 != CURLE_OK" identifier != identifier) )) (compound_statement "{\n      return CVar2;\n    }" { (return_statement "return CVar2;" return identifier ;) })) (expression_statement "sVar9 = conn->ssl[sockindex].connecting_state;" (assignment_expression "sVar9 = conn->ssl[sockindex].connecting_state" identifier = (field_expression "conn->ssl[sockindex].connecting_state" (subscript_expression "conn->ssl[sockindex]" (field_expression "conn->ssl" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "uVar4 = sVar9 - ssl_connect_2;" (assignment_expression "uVar4 = sVar9 - ssl_connect_2" identifier = (binary_expression "sVar9 - ssl_connect_2" identifier - identifier)) ;) (if_statement "if ((iVar7 != 0) && (uVar4 < 3)) {\n      return CURLE_OK;\n    }" if (parenthesized_expression "((iVar7 != 0) && (uVar4 < 3))" ( (binary_expression "(iVar7 != 0) && (uVar4 < 3)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar4 < 3)" ( (binary_expression "uVar4 < 3" identifier < number_literal) ))) )) (compound_statement "{\n      return CURLE_OK;\n    }" { (return_statement "return CURLE_OK;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char cVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  \n  if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }\n  uVar9 = *param_1;\n  iVar7 = param_1[param_2 * 4 + 0x71];\n  uVar8 = param_1[param_2 + 0x66];\n  if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }\n  uVar3 = iVar7 - 1;\n  do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char cVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  \n  if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }\n  uVar9 = *param_1;\n  iVar7 = param_1[param_2 * 4 + 0x71];\n  uVar8 = param_1[param_2 + 0x66];\n  if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }\n  uVar3 = iVar7 - 1;\n  do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined1 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char cVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  \n  if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }\n  uVar9 = *param_1;\n  iVar7 = param_1[param_2 * 4 + 0x71];\n  uVar8 = param_1[param_2 + 0x66];\n  if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }\n  uVar3 = iVar7 - 1;\n  do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (if_statement "if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }" if (parenthesized_expression "(param_1[param_2 * 4 + 0x70] == 2)" ( (binary_expression "param_1[param_2 * 4 + 0x70] == 2" (subscript_expression "param_1[param_2 * 4 + 0x70]" identifier [ (binary_expression "param_2 * 4 + 0x70" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) == number_literal) )) (compound_statement "{\n    *param_4 = 1;\n    return 0;\n  }" { (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar9 = *param_1;" (assignment_expression "uVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" identifier = (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar8 = param_1[param_2 + 0x66];" (assignment_expression "uVar8 = param_1[param_2 + 0x66]" identifier = (subscript_expression "param_1[param_2 + 0x66]" identifier [ (binary_expression "param_2 + 0x66" identifier + number_literal) ])) ;) (if_statement "if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }" { (expression_statement "iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);" (assignment_expression "iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" identifier = (call_expression "(*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" (parenthesized_expression "(*(code *)PTR_FUN_000a63b8)" ( (pointer_expression "*(code *)PTR_FUN_000a63b8" * (cast_expression "(code *)PTR_FUN_000a63b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,0,1)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }" { (labeled_statement "LAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);" statement_identifier : (expression_statement "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);" (call_expression "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98)" (parenthesized_expression "(*(code *)PTR_FUN_000a614c)" ( (pointer_expression "*(code *)PTR_FUN_000a614c" * (cast_expression "(code *)PTR_FUN_000a614c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,PTR_UINT_000a6194 + 0x4b98)" ( identifier , (binary_expression "PTR_UINT_000a6194 + 0x4b98" identifier + number_literal) ))) ;)) (return_statement "return 0x1c;" return number_literal ;) })) (expression_statement "iVar7 = FUN_0007e6ac(param_1,param_2);" (assignment_expression "iVar7 = FUN_0007e6ac(param_1,param_2)" identifier = (call_expression "FUN_0007e6ac(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n      return iVar7;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      return iVar7;\n    }" { (return_statement "return iVar7;" return identifier ;) })) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" identifier = (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ])) ;) })) (expression_statement "uVar3 = iVar7 - 1;" (assignment_expression "uVar3 = iVar7 - 1" identifier = (binary_expression "iVar7 - 1" identifier - number_literal)) ;) (do_statement "do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );" do (compound_statement "{\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  }" { (if_statement "if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }" if (parenthesized_expression "(2 < uVar3)" ( (binary_expression "2 < uVar3" number_literal < identifier) )) (compound_statement "{\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }" { (if_statement "if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" if (parenthesized_expression "(iVar7 == 4)" ( (binary_expression "iVar7 == 4" identifier == number_literal) )) (compound_statement "{\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }" { (if_statement "if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" if (parenthesized_expression "((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2))" ( (binary_expression "(param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)" (parenthesized_expression "(param_1[0x3c] == 2)" ( (binary_expression "param_1[0x3c] == 2" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)" ( (binary_expression "param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2" (subscript_expression "param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78]" identifier [ (binary_expression "(uint)(param_1[0x67] != -1) * 4 + 0x78" (binary_expression "(uint)(param_1[0x67] != -1) * 4" (call_expression "(uint)(param_1[0x67] != -1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[0x67] != -1)" ( (binary_expression "param_1[0x67] != -1" (subscript_expression "param_1[0x67]" identifier [ number_literal ]) != number_literal) ))) * number_literal) + number_literal) ]) != number_literal) ))) )) (compound_statement "{\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }" { (expression_statement "cVar6 = *(char *)(param_1 + 0x8c);" (assignment_expression "cVar6 = *(char *)(param_1 + 0x8c)" identifier = (pointer_expression "*(char *)(param_1 + 0x8c)" * (cast_expression "(char *)(param_1 + 0x8c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8c)" ( (binary_expression "param_1 + 0x8c" identifier + number_literal) ))))) ;) (if_statement "if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }" { (expression_statement "cVar6 = *(char *)((int)param_1 + 0x231);" (assignment_expression "cVar6 = *(char *)((int)param_1 + 0x231)" identifier = (pointer_expression "*(char *)((int)param_1 + 0x231)" * (cast_expression "(char *)((int)param_1 + 0x231)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x231)" ( (binary_expression "(int)param_1 + 0x231" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) }) (else_clause "else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" else (compound_statement "{\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" { (expression_statement "cVar6 = *(char *)(param_1 + 0x82);" (assignment_expression "cVar6 = *(char *)(param_1 + 0x82)" identifier = (pointer_expression "*(char *)(param_1 + 0x82)" * (cast_expression "(char *)(param_1 + 0x82)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x82)" ( (binary_expression "param_1 + 0x82" identifier + number_literal) ))))) ;) (if_statement "if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }" { (expression_statement "cVar6 = *(char *)((int)param_1 + 0x209);" (assignment_expression "cVar6 = *(char *)((int)param_1 + 0x209)" identifier = (pointer_expression "*(char *)((int)param_1 + 0x209)" * (cast_expression "(char *)((int)param_1 + 0x209)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x209)" ( (binary_expression "(int)param_1 + 0x209" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) }))) (expression_statement "iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);" (assignment_expression "iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" identifier = (call_expression "FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" identifier (argument_list "(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" ( identifier , (binary_expression "param_1 + param_2 * 4 + 0x6f" (binary_expression "param_1 + param_2 * 4" identifier + (binary_expression "param_2 * 4" identifier * number_literal)) + number_literal) , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n          return iVar7;\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          return iVar7;\n        }" { (return_statement "return iVar7;" return identifier ;) })) }) (else_clause "else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" else (if_statement "if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" if (parenthesized_expression "(iVar7 != 5)" ( (binary_expression "iVar7 != 5" identifier != number_literal) )) (compound_statement "{\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" { (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "param_1[param_2 * 4 + 0x71] = 0;" (assignment_expression "param_1[param_2 * 4 + 0x71] = 0" (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })))) (expression_statement "param_1[param_2 * 4 + 0x70] = 2;" (assignment_expression "param_1[param_2 * 4 + 0x70] = 2" (subscript_expression "param_1[param_2 * 4 + 0x70]" identifier [ (binary_expression "param_2 * 4 + 0x70" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;" (assignment_expression "param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0" (subscript_expression "param_1[param_2 + 0x6b]" identifier [ (binary_expression "param_2 + 0x6b" identifier + number_literal) ]) = (binary_expression "PTR_LAB_000a613c + -0x37e0" identifier + number_literal)) ;) (expression_statement "param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;" (assignment_expression "param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8" (subscript_expression "param_1[param_2 + 0x6d]" identifier [ (binary_expression "param_2 + 0x6d" identifier + number_literal) ]) = (binary_expression "PTR_LAB_000a613c + -0x26c8" identifier + number_literal)) ;) (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "param_1[param_2 * 4 + 0x71] = 0;" (assignment_expression "param_1[param_2 * 4 + 0x71] = 0" (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);" (assignment_expression "iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" identifier = (call_expression "(*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" (parenthesized_expression "(*(code *)PTR_FUN_000a63b8)" ( (pointer_expression "*(code *)PTR_FUN_000a63b8" * (cast_expression "(code *)PTR_FUN_000a63b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,0,1)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar7 = iVar1;" (assignment_expression "iVar7 = iVar1" identifier = identifier) ;) (if_statement "if (param_3 != 0) {\n      iVar7 = 0;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar7 = 0;\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) })) (if_statement "if (iVar1 < 0) goto LAB_00082b9c;" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00082b9c;" goto statement_identifier ;)) (expression_statement "uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;" (assignment_expression "uVar3 = param_1[param_2 * 4 + 0x71] ^ 3" identifier = (binary_expression "param_1[param_2 * 4 + 0x71] ^ 3" (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) ^ number_literal)) ;) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar4 = uVar8;\n    }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar5 = uVar8;\n    }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (if_statement "if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }" if (parenthesized_expression "(param_1[param_2 * 4 + 0x71] - 2 < 2)" ( (binary_expression "param_1[param_2 * 4 + 0x71] - 2 < 2" (binary_expression "param_1[param_2 * 4 + 0x71] - 2" (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ]) - number_literal) < number_literal) )) (compound_statement "{\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }" { (expression_statement "iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);" (assignment_expression "iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7)" identifier = (call_expression "(*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7)" (parenthesized_expression "(*(code *)PTR_FUN_000a63d4)" ( (pointer_expression "*(code *)PTR_FUN_000a63d4" * (cast_expression "(code *)PTR_FUN_000a63d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar4,0xffffffff,uVar5,iVar7)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }" { (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_000a6dcc)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000a6dcc)()" (parenthesized_expression "(*(code *)PTR___errno_location_000a6dcc)" ( (pointer_expression "*(code *)PTR___errno_location_000a6dcc" * (cast_expression "(code *)PTR___errno_location_000a6dcc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);" (call_expression "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2)" (parenthesized_expression "(*(code *)PTR_FUN_000a614c)" ( (pointer_expression "*(code *)PTR_FUN_000a614c" * (cast_expression "(code *)PTR_FUN_000a614c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2)" ( identifier , (binary_expression "PTR_UINT_000a6194 + 0x39c4" identifier + number_literal) , (pointer_expression "*puVar2" * identifier) ))) ;) (return_statement "return 0x23;" return number_literal ;) })) (if_statement "if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }" { (if_statement "if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n          *param_4 = 0;\n          return 0;\n        }" { (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00082b9c;" goto statement_identifier ;) })) })) (expression_statement "iVar7 = FUN_000802e8(param_1,param_2);" (assignment_expression "iVar7 = FUN_000802e8(param_1,param_2)" identifier = (call_expression "FUN_000802e8(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n      return iVar7;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      return iVar7;\n    }" { (return_statement "return iVar7;" return identifier ;) })) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" identifier = (subscript_expression "param_1[param_2 * 4 + 0x71]" identifier [ (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar3 = iVar7 - 1;" (assignment_expression "uVar3 = iVar7 - 1" identifier = (binary_expression "iVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }" if (parenthesized_expression "((param_3 != 0) && (uVar3 < 3))" ( (binary_expression "(param_3 != 0) && (uVar3 < 3)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar3 < 3)" ( (binary_expression "uVar3 < 3" identifier < number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;)) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) * LIT) + LIT) ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (return_statement return LIT ;) })))) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) ^ LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) ))) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  undefined4 *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char cVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  \n  if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }\n  uVar9 = *param_1;\n  iVar7 = param_1[param_2 * 4 + 0x71];\n  uVar8 = param_1[param_2 + 0x66];\n  if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }\n  uVar3 = iVar7 - 1;\n  do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_000829bc(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)" (identifier "FUN_000829bc") (parameter_list "(undefined4 *param_1,int param_2,int param_3,undefined1 *param_4)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined1 *param_4" (type_identifier "undefined1") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char cVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  \n  if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }\n  uVar9 = *param_1;\n  iVar7 = param_1[param_2 * 4 + 0x71];\n  uVar8 = param_1[param_2 + 0x66];\n  if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }\n  uVar3 = iVar7 - 1;\n  do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "char cVar6;" (primitive_type "char") (identifier "cVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (if_statement "if (param_1[param_2 * 4 + 0x70] == 2) {\n    *param_4 = 1;\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_1[param_2 * 4 + 0x70] == 2)" (( "(") (binary_expression "param_1[param_2 * 4 + 0x70] == 2" (subscript_expression "param_1[param_2 * 4 + 0x70]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x70" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x70")) (] "]")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    *param_4 = 1;\n    return 0;\n  }" ({ "{") (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "1")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar9 = *param_1;" (assignment_expression "uVar9 = *param_1" (identifier "uVar9") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" (identifier "iVar7") (= "=") (subscript_expression "param_1[param_2 * 4 + 0x71]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x71")) (] "]"))) (; ";")) (expression_statement "uVar8 = param_1[param_2 + 0x66];" (assignment_expression "uVar8 = param_1[param_2 + 0x66]" (identifier "uVar8") (= "=") (subscript_expression "param_1[param_2 + 0x66]" (identifier "param_1") ([ "[") (binary_expression "param_2 + 0x66" (identifier "param_2") (+ "+") (number_literal "0x66")) (] "]"))) (; ";")) (if_statement "if (iVar7 == 0) {\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }\n    iVar7 = FUN_0007e6ac(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n  }" ({ "{") (expression_statement "iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);" (assignment_expression "iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" (parenthesized_expression "(*(code *)PTR_FUN_000a63b8)" (( "(") (pointer_expression "*(code *)PTR_FUN_000a63b8" (* "*") (cast_expression "(code *)PTR_FUN_000a63b8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000a63b8"))) () ")")) (argument_list "(uVar9,0,1)" (( "(") (identifier "uVar9") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar7 < 0) {\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);\n      return 0x1c;\n    }" ({ "{") (labeled_statement "LAB_00082b9c:\n      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);" (statement_identifier "LAB_00082b9c") (: ":") (expression_statement "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);" (call_expression "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98)" (parenthesized_expression "(*(code *)PTR_FUN_000a614c)" (( "(") (pointer_expression "*(code *)PTR_FUN_000a614c" (* "*") (cast_expression "(code *)PTR_FUN_000a614c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000a614c"))) () ")")) (argument_list "(uVar9,PTR_UINT_000a6194 + 0x4b98)" (( "(") (identifier "uVar9") (, ",") (binary_expression "PTR_UINT_000a6194 + 0x4b98" (identifier "PTR_UINT_000a6194") (+ "+") (number_literal "0x4b98")) () ")"))) (; ";"))) (return_statement "return 0x1c;" (return "return") (number_literal "0x1c") (; ";")) (} "}"))) (expression_statement "iVar7 = FUN_0007e6ac(param_1,param_2);" (assignment_expression "iVar7 = FUN_0007e6ac(param_1,param_2)" (identifier "iVar7") (= "=") (call_expression "FUN_0007e6ac(param_1,param_2)" (identifier "FUN_0007e6ac") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) {\n      return iVar7;\n    }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar7;\n    }" ({ "{") (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}"))) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" (identifier "iVar7") (= "=") (subscript_expression "param_1[param_2 * 4 + 0x71]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x71")) (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar3 = iVar7 - 1;" (assignment_expression "uVar3 = iVar7 - 1" (identifier "uVar3") (= "=") (binary_expression "iVar7 - 1" (identifier "iVar7") (- "-") (number_literal "1"))) (; ";")) (do_statement "do {\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }\n    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);\n    iVar7 = iVar1;\n    if (param_3 != 0) {\n      iVar7 = 0;\n    }\n    if (iVar1 < 0) goto LAB_00082b9c;\n    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;\n    uVar4 = 0xffffffff;\n    if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }\n    uVar5 = 0xffffffff;\n    if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }\n    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }\n    iVar7 = FUN_000802e8(param_1,param_2);\n    if (iVar7 != 0) {\n      return iVar7;\n    }\n    iVar7 = param_1[param_2 * 4 + 0x71];\n    uVar3 = iVar7 - 1;\n    if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (2 < uVar3) {\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }" (if "if") (parenthesized_expression "(2 < uVar3)" (( "(") (binary_expression "2 < uVar3" (number_literal "2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }\n      param_1[param_2 * 4 + 0x70] = 2;\n      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;\n      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;\n      *param_4 = 1;\n      param_1[param_2 * 4 + 0x71] = 0;\n      return 0;\n    }" ({ "{") (if_statement "if (iVar7 == 4) {\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }\n      else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar7 == 4)" (( "(") (binary_expression "iVar7 == 4" (identifier "iVar7") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }\n        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);\n        if (iVar7 != 0) {\n          return iVar7;\n        }\n      }" ({ "{") (if_statement "if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }\n        else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" (if "if") (parenthesized_expression "((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2))" (( "(") (binary_expression "(param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)" (parenthesized_expression "(param_1[0x3c] == 2)" (( "(") (binary_expression "param_1[0x3c] == 2" (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]")) (== "==") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)" (( "(") (binary_expression "param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2" (subscript_expression "param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78]" (identifier "param_1") ([ "[") (binary_expression "(uint)(param_1[0x67] != -1) * 4 + 0x78" (binary_expression "(uint)(param_1[0x67] != -1) * 4" (call_expression "(uint)(param_1[0x67] != -1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[0x67] != -1)" (( "(") (binary_expression "param_1[0x67] != -1" (subscript_expression "param_1[0x67]" (identifier "param_1") ([ "[") (number_literal "0x67") (] "]")) (!= "!=") (number_literal "-1")) () ")"))) (* "*") (number_literal "4")) (+ "+") (number_literal "0x78")) (] "]")) (!= "!=") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n          cVar6 = *(char *)(param_1 + 0x8c);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }\n        }" ({ "{") (expression_statement "cVar6 = *(char *)(param_1 + 0x8c);" (assignment_expression "cVar6 = *(char *)(param_1 + 0x8c)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(param_1 + 0x8c)" (* "*") (cast_expression "(char *)(param_1 + 0x8c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x8c)" (( "(") (binary_expression "param_1 + 0x8c" (identifier "param_1") (+ "+") (number_literal "0x8c")) () ")"))))) (; ";")) (if_statement "if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }" (if "if") (parenthesized_expression "(cVar6 == '\0')" (( "(") (binary_expression "cVar6 == '\0'" (identifier "cVar6") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            cVar6 = *(char *)((int)param_1 + 0x231);\n          }" ({ "{") (expression_statement "cVar6 = *(char *)((int)param_1 + 0x231);" (assignment_expression "cVar6 = *(char *)((int)param_1 + 0x231)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)((int)param_1 + 0x231)" (* "*") (cast_expression "(char *)((int)param_1 + 0x231)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x231)" (( "(") (binary_expression "(int)param_1 + 0x231" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x231")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" (else "else") (compound_statement "{\n          cVar6 = *(char *)(param_1 + 0x82);\n          if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }\n        }" ({ "{") (expression_statement "cVar6 = *(char *)(param_1 + 0x82);" (assignment_expression "cVar6 = *(char *)(param_1 + 0x82)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(param_1 + 0x82)" (* "*") (cast_expression "(char *)(param_1 + 0x82)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x82)" (( "(") (binary_expression "param_1 + 0x82" (identifier "param_1") (+ "+") (number_literal "0x82")) () ")"))))) (; ";")) (if_statement "if (cVar6 == '\0') {\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }" (if "if") (parenthesized_expression "(cVar6 == '\0')" (( "(") (binary_expression "cVar6 == '\0'" (identifier "cVar6") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            cVar6 = *(char *)((int)param_1 + 0x209);\n          }" ({ "{") (expression_statement "cVar6 = *(char *)((int)param_1 + 0x209);" (assignment_expression "cVar6 = *(char *)((int)param_1 + 0x209)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)((int)param_1 + 0x209)" (* "*") (cast_expression "(char *)((int)param_1 + 0x209)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x209)" (( "(") (binary_expression "(int)param_1 + 0x209" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x209")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);" (assignment_expression "iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" (identifier "iVar7") (= "=") (call_expression "FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" (identifier "FUN_0008094c") (argument_list "(param_1,param_1 + param_2 * 4 + 0x6f,cVar6)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_1 + param_2 * 4 + 0x6f" (binary_expression "param_1 + param_2 * 4" (identifier "param_1") (+ "+") (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x6f")) (, ",") (identifier "cVar6") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) {\n          return iVar7;\n        }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return iVar7;\n        }" ({ "{") (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}"))) (} "}")) (else_clause "else if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" (else "else") (if_statement "if (iVar7 != 5) {\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar7 != 5)" (( "(") (binary_expression "iVar7 != 5" (identifier "iVar7") (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n        *param_4 = 0;\n        param_1[param_2 * 4 + 0x71] = 0;\n        return 0;\n      }" ({ "{") (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[param_2 * 4 + 0x71] = 0;" (assignment_expression "param_1[param_2 * 4 + 0x71] = 0" (subscript_expression "param_1[param_2 * 4 + 0x71]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x71")) (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))))) (expression_statement "param_1[param_2 * 4 + 0x70] = 2;" (assignment_expression "param_1[param_2 * 4 + 0x70] = 2" (subscript_expression "param_1[param_2 * 4 + 0x70]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x70" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x70")) (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;" (assignment_expression "param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0" (subscript_expression "param_1[param_2 + 0x6b]" (identifier "param_1") ([ "[") (binary_expression "param_2 + 0x6b" (identifier "param_2") (+ "+") (number_literal "0x6b")) (] "]")) (= "=") (binary_expression "PTR_LAB_000a613c + -0x37e0" (identifier "PTR_LAB_000a613c") (+ "+") (number_literal "-0x37e0"))) (; ";")) (expression_statement "param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;" (assignment_expression "param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8" (subscript_expression "param_1[param_2 + 0x6d]" (identifier "param_1") ([ "[") (binary_expression "param_2 + 0x6d" (identifier "param_2") (+ "+") (number_literal "0x6d")) (] "]")) (= "=") (binary_expression "PTR_LAB_000a613c + -0x26c8" (identifier "PTR_LAB_000a613c") (+ "+") (number_literal "-0x26c8"))) (; ";")) (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_1[param_2 * 4 + 0x71] = 0;" (assignment_expression "param_1[param_2 * 4 + 0x71] = 0" (subscript_expression "param_1[param_2 * 4 + 0x71]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x71")) (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);" (assignment_expression "iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_FUN_000a63b8)(uVar9,0,1)" (parenthesized_expression "(*(code *)PTR_FUN_000a63b8)" (( "(") (pointer_expression "*(code *)PTR_FUN_000a63b8" (* "*") (cast_expression "(code *)PTR_FUN_000a63b8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000a63b8"))) () ")")) (argument_list "(uVar9,0,1)" (( "(") (identifier "uVar9") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar7 = iVar1;" (assignment_expression "iVar7 = iVar1" (identifier "iVar7") (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (param_3 != 0) {\n      iVar7 = 0;\n    }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar7 = 0;\n    }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (iVar1 < 0) goto LAB_00082b9c;" (if "if") (parenthesized_expression "(iVar1 < 0)" (( "(") (binary_expression "iVar1 < 0" (identifier "iVar1") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00082b9c;" (goto "goto") (statement_identifier "LAB_00082b9c") (; ";"))) (expression_statement "uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;" (assignment_expression "uVar3 = param_1[param_2 * 4 + 0x71] ^ 3" (identifier "uVar3") (= "=") (binary_expression "param_1[param_2 * 4 + 0x71] ^ 3" (subscript_expression "param_1[param_2 * 4 + 0x71]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x71")) (] "]")) (^ "^") (number_literal "3"))) (; ";")) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (uVar3 != 0) {\n      uVar4 = uVar8;\n    }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = uVar8;\n    }" ({ "{") (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" (identifier "uVar4") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" (identifier "uVar5") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (uVar3 == 0) {\n      uVar5 = uVar8;\n    }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar5 = uVar8;\n    }" ({ "{") (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" (identifier "uVar5") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (if_statement "if (param_1[param_2 * 4 + 0x71] - 2 < 2) {\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }" (if "if") (parenthesized_expression "(param_1[param_2 * 4 + 0x71] - 2 < 2)" (( "(") (binary_expression "param_1[param_2 * 4 + 0x71] - 2 < 2" (binary_expression "param_1[param_2 * 4 + 0x71] - 2" (subscript_expression "param_1[param_2 * 4 + 0x71]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x71")) (] "]")) (- "-") (number_literal "2")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);\n      if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }\n      if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }\n    }" ({ "{") (expression_statement "iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);" (assignment_expression "iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7)" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7)" (parenthesized_expression "(*(code *)PTR_FUN_000a63d4)" (( "(") (pointer_expression "*(code *)PTR_FUN_000a63d4" (* "*") (cast_expression "(code *)PTR_FUN_000a63d4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000a63d4"))) () ")")) (argument_list "(uVar4,0xffffffff,uVar5,iVar7)" (( "(") (identifier "uVar4") (, ",") (number_literal "0xffffffff") (, ",") (identifier "uVar5") (, ",") (identifier "iVar7") () ")")))) (; ";")) (if_statement "if (iVar7 < 0) {\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();\n        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);\n        return 0x23;\n      }" ({ "{") (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)()" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_000a6dcc)()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___errno_location_000a6dcc)()" (parenthesized_expression "(*(code *)PTR___errno_location_000a6dcc)" (( "(") (pointer_expression "*(code *)PTR___errno_location_000a6dcc" (* "*") (cast_expression "(code *)PTR___errno_location_000a6dcc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___errno_location_000a6dcc"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);" (call_expression "(*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2)" (parenthesized_expression "(*(code *)PTR_FUN_000a614c)" (( "(") (pointer_expression "*(code *)PTR_FUN_000a614c" (* "*") (cast_expression "(code *)PTR_FUN_000a614c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000a614c"))) () ")")) (argument_list "(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2)" (( "(") (identifier "uVar9") (, ",") (binary_expression "PTR_UINT_000a6194 + 0x39c4" (identifier "PTR_UINT_000a6194") (+ "+") (number_literal "0x39c4")) (, ",") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) () ")"))) (; ";")) (return_statement "return 0x23;" (return "return") (number_literal "0x23") (; ";")) (} "}"))) (if_statement "if (iVar7 == 0) {\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }\n        goto LAB_00082b9c;\n      }" ({ "{") (if_statement "if (param_3 != 0) {\n          *param_4 = 0;\n          return 0;\n        }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *param_4 = 0;\n          return 0;\n        }" ({ "{") (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_00082b9c;" (goto "goto") (statement_identifier "LAB_00082b9c") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar7 = FUN_000802e8(param_1,param_2);" (assignment_expression "iVar7 = FUN_000802e8(param_1,param_2)" (identifier "iVar7") (= "=") (call_expression "FUN_000802e8(param_1,param_2)" (identifier "FUN_000802e8") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) {\n      return iVar7;\n    }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return iVar7;\n    }" ({ "{") (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}"))) (expression_statement "iVar7 = param_1[param_2 * 4 + 0x71];" (assignment_expression "iVar7 = param_1[param_2 * 4 + 0x71]" (identifier "iVar7") (= "=") (subscript_expression "param_1[param_2 * 4 + 0x71]" (identifier "param_1") ([ "[") (binary_expression "param_2 * 4 + 0x71" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (number_literal "0x71")) (] "]"))) (; ";")) (expression_statement "uVar3 = iVar7 - 1;" (assignment_expression "uVar3 = iVar7 - 1" (identifier "uVar3") (= "=") (binary_expression "iVar7 - 1" (identifier "iVar7") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_3 != 0) && (uVar3 < 3)) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((param_3 != 0) && (uVar3 < 3))" (( "(") (binary_expression "(param_3 != 0) && (uVar3 < 3)" (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar3 < 3)" (( "(") (binary_expression "uVar3 < 3" (identifier "uVar3") (< "<") (number_literal "3")) () ")"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (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) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (number_literal)) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (return_statement (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (return_statement (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) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (number_literal) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (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)) (pointer_expression argument: (identifier))))) (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (number_literal)))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal))))) condition: (parenthesized_expression (true))))))

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

{
  int iVar1;
  undefined4 *puVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  char cVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  
  if (param_1[param_2 * 4 + 0x70] == 2) {
    *param_4 = 1;
    return 0;
  }
  uVar9 = *param_1;
  iVar7 = param_1[param_2 * 4 + 0x71];
  uVar8 = param_1[param_2 + 0x66];
  if (iVar7 == 0) {
    iVar7 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);
    if (iVar7 < 0) {
LAB_00082b9c:
      (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x4b98);
      return 0x1c;
    }
    iVar7 = FUN_0007e6ac(param_1,param_2);
    if (iVar7 != 0) {
      return iVar7;
    }
    iVar7 = param_1[param_2 * 4 + 0x71];
  }
  uVar3 = iVar7 - 1;
  do {
    if (2 < uVar3) {
      if (iVar7 == 4) {
        if ((param_1[0x3c] == 2) && (param_1[(uint)(param_1[0x67] != -1) * 4 + 0x78] != 2)) {
          cVar6 = *(char *)(param_1 + 0x8c);
          if (cVar6 == '\0') {
            cVar6 = *(char *)((int)param_1 + 0x231);
          }
        }
        else {
          cVar6 = *(char *)(param_1 + 0x82);
          if (cVar6 == '\0') {
            cVar6 = *(char *)((int)param_1 + 0x209);
          }
        }
        iVar7 = FUN_0008094c(param_1,param_1 + param_2 * 4 + 0x6f,cVar6);
        if (iVar7 != 0) {
          return iVar7;
        }
      }
      else if (iVar7 != 5) {
        *param_4 = 0;
        param_1[param_2 * 4 + 0x71] = 0;
        return 0;
      }
      param_1[param_2 * 4 + 0x70] = 2;
      param_1[param_2 + 0x6b] = PTR_LAB_000a613c + -0x37e0;
      param_1[param_2 + 0x6d] = PTR_LAB_000a613c + -0x26c8;
      *param_4 = 1;
      param_1[param_2 * 4 + 0x71] = 0;
      return 0;
    }
    iVar1 = (*(code *)PTR_FUN_000a63b8)(uVar9,0,1);
    iVar7 = iVar1;
    if (param_3 != 0) {
      iVar7 = 0;
    }
    if (iVar1 < 0) goto LAB_00082b9c;
    uVar3 = param_1[param_2 * 4 + 0x71] ^ 3;
    uVar4 = 0xffffffff;
    if (uVar3 != 0) {
      uVar4 = uVar8;
    }
    uVar5 = 0xffffffff;
    if (uVar3 == 0) {
      uVar5 = uVar8;
    }
    if (param_1[param_2 * 4 + 0x71] - 2 < 2) {
      iVar7 = (*(code *)PTR_FUN_000a63d4)(uVar4,0xffffffff,uVar5,iVar7);
      if (iVar7 < 0) {
        puVar2 = (undefined4 *)(*(code *)PTR___errno_location_000a6dcc)();
        (*(code *)PTR_FUN_000a614c)(uVar9,PTR_UINT_000a6194 + 0x39c4,*puVar2);
        return 0x23;
      }
      if (iVar7 == 0) {
        if (param_3 != 0) {
          *param_4 = 0;
          return 0;
        }
        goto LAB_00082b9c;
      }
    }
    iVar7 = FUN_000802e8(param_1,param_2);
    if (iVar7 != 0) {
      return iVar7;
    }
    iVar7 = param_1[param_2 * 4 + 0x71];
    uVar3 = iVar7 - 1;
    if ((param_3 != 0) && (uVar3 < 3)) {
      return 0;
    }
  } while( true );
}

