
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int dss_verifysig(void *key,char *sig,int siglen,char *data,int datalen)

{
  int iVar1;
  char *p_00;
  Bignum_conflict b;
  Bignum_conflict b_00;
  int iVar2;
  Bignum_conflict q;
  Bignum_conflict p_01;
  Bignum_conflict exp;
  Bignum_conflict exp_00;
  Bignum_conflict p_02;
  Bignum_conflict q_00;
  Bignum_conflict p_03;
  Bignum_conflict a;
  uint uVar3;
  int in_GS_OFFSET;
  uchar *local_40;
  char *p;
  int slen;
  char hash [20];
  
  p_00 = data;
  local_40 = (uchar *)sig;
                    /* WARNING: Load size is inaccurate */
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (*key != 0) {
    if (siglen == 0x28) {
LAB_0005a6d3:
      b = bignum_from_bytes(local_40,0x14);
      local_40 = local_40 + 0x14;
      siglen = siglen + -0x14;
      if (siglen < 0x14) {
        if (b != (Bignum_conflict)0x0) {
          freebn(b);
        }
      }
      else {
        b_00 = bignum_from_bytes(local_40,0x14);
        local_40 = local_40 + 0x14;
        siglen = siglen + -0x14;
        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {
          if (b != (Bignum_conflict)0x0) {
            freebn(b);
          }
          if (b_00 != (Bignum_conflict)0x0) {
            freebn(b_00);
            uVar3 = 0;
            goto LAB_0005a91a;
          }
        }
        else {
          iVar2 = bignum_cmp(b_00,Zero);
          if (iVar2 == 0) {
            freebn(b);
            freebn(b_00);
            uVar3 = 0;
            goto LAB_0005a91a;
          }
          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));
          if (q != (Bignum_conflict)0x0) {
            SHA_Simple(p_00,datalen,(uchar *)hash);
            slen = 0x14;
            p = hash;
            p_01 = bignum_from_bytes((uchar *)hash,0x14);
            p = p + 0x14;
            slen = slen + -0x14;
            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));
            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));
                    /* WARNING: Load size is inaccurate */
            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);
                    /* WARNING: Load size is inaccurate */
            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);
                    /* WARNING: Load size is inaccurate */
            p_03 = modmul(p_02,q_00,*key);
            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));
            iVar2 = bignum_cmp(a,b);
            uVar3 = (uint)(iVar2 == 0);
            freebn(q);
            freebn(p_01);
            freebn(exp);
            freebn(exp_00);
            freebn(p_02);
            freebn(q_00);
            freebn(p_03);
            freebn(a);
            freebn(b);
            freebn(b_00);
            goto LAB_0005a91a;
          }
          freebn(b);
          freebn(b_00);
        }
      }
    }
    else {
      getstring((char **)&local_40,&siglen,&p,&slen);
      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&
         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {
        local_40 = local_40 + 4;
        siglen = siglen + -4;
        if (0x13 < siglen) goto LAB_0005a6d3;
      }
    }
  }
  uVar3 = 0;
LAB_0005a91a:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return uVar3;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bool FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int iVar11;
  int in_GS_OFFSET;
  bool bVar12;
  int local_40;
  int *local_3c;
  int local_38;
  undefined1 local_34 [20];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x5a699;
  local_40 = param_2;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (*param_1 != 0) {
    if (param_3 == 0x28) {
LAB_0005a6d3:
      iVar1 = FUN_00053bf0(local_40,0x14);
      if (param_3 + -0x14 < 0x14) {
        if (iVar1 != 0) {
          FUN_00053760(iVar1);
        }
      }
      else {
        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);
        if ((iVar1 == 0) || (iVar2 == 0)) {
          if (iVar1 != 0) {
            FUN_00053760(iVar1);
          }
          if (iVar2 != 0) {
            FUN_00053760(iVar2);
            bVar12 = false;
            goto LAB_0005a91a;
          }
        }
        else {
          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);
          if (iVar3 == 0) {
            FUN_00053760(iVar1);
            FUN_00053760(iVar2);
            bVar12 = false;
            goto LAB_0005a91a;
          }
          iVar3 = FUN_000553c0(iVar2,param_1[1]);
          if (iVar3 != 0) {
            FUN_0006b8b0(param_4,param_5,local_34);
            local_38 = 0x14;
            uVar4 = FUN_00053bf0(local_34,0x14);
            local_38 = local_38 + -0x14;
            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);
            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);
            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);
            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);
            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);
            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);
            iVar11 = FUN_000540e0(uVar10,iVar1);
            bVar12 = iVar11 == 0;
            FUN_00053760(iVar3);
            FUN_00053760(uVar4);
            FUN_00053760(uVar5);
            FUN_00053760(uVar6);
            FUN_00053760(uVar7);
            FUN_00053760(uVar8);
            FUN_00053760(uVar9);
            FUN_00053760(uVar10);
            FUN_00053760(iVar1);
            FUN_00053760(iVar2);
            goto LAB_0005a91a;
          }
          FUN_00053760(iVar1);
          FUN_00053760(iVar2);
        }
      }
    }
    else {
      FUN_0005a610(&local_38);
      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&
         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {
        local_40 = param_2 + 4;
        param_3 = param_3 + -4;
        if (0x13 < param_3) goto LAB_0005a6d3;
      }
    }
  }
  bVar12 = false;
LAB_0005a91a:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000a39d0();
  }
  return bVar12;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001c4f0
ADD EBX,0xb60b7
SUB ESP,0x5c
MOV EAX,dword ptr [ESP + 0x74]
MOV ESI,dword ptr [ESP + 0x70]
MOV EBP,dword ptr [ESP + 0x7c]
MOV dword ptr [ESP + 0x2c],EAX
MOV EDX,dword ptr [ESI]
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x4c],EAX
XOR EAX,EAX
TEST EDX,EDX
JZ 0x0005a918
CMP dword ptr [ESP + 0x78],0x28
JNZ 0x0005a8b8
SUB ESP,0x8
PUSH 0x14
PUSH dword ptr [ESP + 0x38]
CALL 0x00053bf0
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x3c]
LEA EDX,[EAX + 0x14]
MOV EAX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x3c],EDX
SUB EAX,0x14
MOV dword ptr [ESP + 0x88],EAX
ADD ESP,0x10
CMP EAX,0x13
JLE 0x0005a99d
SUB ESP,0x8
PUSH 0x14
PUSH EDX
CALL 0x00053bf0
ADD dword ptr [ESP + 0x3c],0x14
MOV dword ptr [ESP + 0x1c],EAX
SUB dword ptr [ESP + 0x88],0x14
ADD ESP,0x10
TEST EDI,EDI
JZ 0x0005a950
TEST EAX,EAX
JZ 0x0005a950
LEA EAX,[EBX + 0xa78]
SUB ESP,0x8
PUSH dword ptr [EAX]
PUSH dword ptr [ESP + 0x18]
CALL 0x000540e0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0005a930
SUB ESP,0x8
PUSH dword ptr [ESI + 0x4]
PUSH dword ptr [ESP + 0x18]
CALL 0x000553c0
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0005a980
SUB ESP,0x4
LEA EAX,[ESP + 0x3c]
PUSH EAX
MOV dword ptr [ESP + 0x1c],EAX
PUSH dword ptr [ESP + 0x88]
PUSH EBP
CALL 0x0006b8b0
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x44],0x14
MOV dword ptr [ESP + 0x40],EAX
POP EDX
POP ECX
PUSH 0x14
PUSH EAX
CALL 0x00053bf0
ADD dword ptr [ESP + 0x40],0x14
SUB dword ptr [ESP + 0x44],0x14
ADD ESP,0xc
PUSH dword ptr [ESI + 0x4]
MOV EBP,dword ptr [ESP + 0x18]
PUSH EBP
PUSH EAX
MOV dword ptr [ESP + 0x38],EAX
CALL 0x000537a0
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0xc
PUSH dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x18],EBP
PUSH EBP
PUSH EDI
CALL 0x000537a0
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0xc
PUSH dword ptr [ESI]
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESI + 0x8]
CALL 0x000556a0
ADD ESP,0xc
PUSH dword ptr [ESI]
PUSH dword ptr [ESP + 0x20]
MOV EBP,EAX
PUSH dword ptr [ESI + 0xc]
CALL 0x000556a0
ADD ESP,0xc
PUSH dword ptr [ESI]
PUSH EAX
MOV dword ptr [ESP + 0x28],EBP
MOV dword ptr [ESP + 0x30],EAX
PUSH EBP
CALL 0x000537a0
ADD ESP,0xc
PUSH dword ptr [ESI + 0x4]
MOV EBP,EAX
LEA EAX,[EBX + 0xa74]
PUSH dword ptr [EAX]
PUSH EBP
CALL 0x000537a0
MOV ESI,EAX
POP EAX
POP EDX
PUSH EDI
PUSH ESI
CALL 0x000540e0
POP ECX
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
MOV dword ptr [ESP + 0x2c],EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00053760
MOV EDX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP],EDX
CALL 0x00053760
POP EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x00053760
POP EAX
PUSH dword ptr [ESP + 0x24]
CALL 0x00053760
POP EAX
PUSH dword ptr [ESP + 0x28]
CALL 0x00053760
MOV ECX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP],ECX
CALL 0x00053760
MOV dword ptr [ESP],EBP
CALL 0x00053760
MOV dword ptr [ESP],ESI
CALL 0x00053760
MOV dword ptr [ESP],EDI
CALL 0x00053760
POP EAX
PUSH dword ptr [ESP + 0x18]
CALL 0x00053760
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x20]
JMP 0x0005a91a
LEA EAX,[ESP + 0x2c]
LEA ECX,[ESP + 0x30]
LEA EDX,[ESP + 0x78]
SUB ESP,0xc
LEA EDI,[ESP + 0x40]
PUSH EDI
CALL 0x0005a610
MOV EAX,dword ptr [ESP + 0x40]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0005a918
CMP dword ptr [ESP + 0x34],0x7
JNZ 0x0005a918
CMP dword ptr [EAX],0x2d687373
JNZ 0x0005a918
CMP word ptr [EAX + 0x4],0x7364
JNZ 0x0005a918
CMP byte ptr [EAX + 0x6],0x73
JNZ 0x0005a918
MOV EAX,dword ptr [ESP + 0x78]
ADD dword ptr [ESP + 0x2c],0x4
SUB EAX,0x4
MOV dword ptr [ESP + 0x78],EAX
CMP EAX,0x13
JG 0x0005a6d3
LEA ESI,[ESI]
XOR EAX,EAX
MOV ECX,dword ptr [ESP + 0x4c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0005a998
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x10],EAX
SUB ESP,0xc
PUSH EDI
CALL 0x00053760
POP EAX
PUSH dword ptr [ESP + 0x18]
CALL 0x00053760
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
JMP 0x0005a91a
TEST EDI,EDI
JZ 0x0005a960
SUB ESP,0xc
PUSH EDI
CALL 0x00053760
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x0005a918
SUB ESP,0xc
PUSH EAX
CALL 0x00053760
ADD ESP,0x10
XOR EAX,EAX
JMP 0x0005a91a
SUB ESP,0xc
PUSH EDI
CALL 0x00053760
POP EAX
PUSH dword ptr [ESP + 0x18]
CALL 0x00053760
ADD ESP,0x10
JMP 0x0005a918
CALL 0x000a39d0
TEST EDI,EDI
JZ 0x0005a918
SUB ESP,0xc
PUSH EDI
CALL 0x00053760
ADD ESP,0x10
JMP 0x0005a918
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  int local_40;\n  int *local_3c;\n  int local_38;\n  undefined1 local_34 [20];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5a699;\n  local_40 = param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }\n  return bVar12;\n}\n\n" comment (function_definition "bool FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  int local_40;\n  int *local_3c;\n  int local_38;\n  undefined1 local_34 [20];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5a699;\n  local_40 = param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }\n  return bVar12;\n}" primitive_type (function_declarator "FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)" identifier (parameter_list "(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  int local_40;\n  int *local_3c;\n  int local_38;\n  undefined1 local_34 [20];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5a699;\n  local_40 = param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }\n  return bVar12;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined1 local_34 [20];" type_identifier (array_declarator "local_34 [20]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x5a699;" (assignment_expression "uStack_14 = 0x5a699" identifier = number_literal) ;) (expression_statement "local_40 = param_2;" (assignment_expression "local_40 = param_2" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }" { (if_statement "if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" if (parenthesized_expression "(param_3 == 0x28)" ( (binary_expression "param_3 == 0x28" identifier == number_literal) )) (compound_statement "{\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }" { (labeled_statement "LAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);" statement_identifier : (expression_statement "iVar1 = FUN_00053bf0(local_40,0x14);" (assignment_expression "iVar1 = FUN_00053bf0(local_40,0x14)" identifier = (call_expression "FUN_00053bf0(local_40,0x14)" identifier (argument_list "(local_40,0x14)" ( identifier , number_literal )))) ;)) (if_statement "if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" if (parenthesized_expression "(param_3 + -0x14 < 0x14)" ( (binary_expression "param_3 + -0x14 < 0x14" (binary_expression "param_3 + -0x14" identifier + number_literal) < number_literal) )) (compound_statement "{\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }" { (if_statement "if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00053760(iVar1);\n        }" { (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) }) (else_clause "else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" else (compound_statement "{\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" { (expression_statement "iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);" (assignment_expression "iVar2 = FUN_00053bf0(local_40 + 0x14,0x14)" identifier = (call_expression "FUN_00053bf0(local_40 + 0x14,0x14)" identifier (argument_list "(local_40 + 0x14,0x14)" ( (binary_expression "local_40 + 0x14" identifier + number_literal) , number_literal )))) ;) (if_statement "if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" if (parenthesized_expression "((iVar1 == 0) || (iVar2 == 0))" ( (binary_expression "(iVar1 == 0) || (iVar2 == 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }" { (if_statement "if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00053760(iVar1);\n          }" { (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (if_statement "if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" { (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) }) (else_clause "else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" else (compound_statement "{\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" { (expression_statement "iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);" (assignment_expression "iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8)" identifier = (call_expression "FUN_000540e0(iVar2,PTR_DAT_001111c8)" identifier (argument_list "(iVar2,PTR_DAT_001111c8)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" { (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) (expression_statement "iVar3 = FUN_000553c0(iVar2,param_1[1]);" (assignment_expression "iVar3 = FUN_000553c0(iVar2,param_1[1])" identifier = (call_expression "FUN_000553c0(iVar2,param_1[1])" identifier (argument_list "(iVar2,param_1[1])" ( identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }" { (expression_statement "FUN_0006b8b0(param_4,param_5,local_34);" (call_expression "FUN_0006b8b0(param_4,param_5,local_34)" identifier (argument_list "(param_4,param_5,local_34)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_38 = 0x14;" (assignment_expression "local_38 = 0x14" identifier = number_literal) ;) (expression_statement "uVar4 = FUN_00053bf0(local_34,0x14);" (assignment_expression "uVar4 = FUN_00053bf0(local_34,0x14)" identifier = (call_expression "FUN_00053bf0(local_34,0x14)" identifier (argument_list "(local_34,0x14)" ( identifier , number_literal )))) ;) (expression_statement "local_38 = local_38 + -0x14;" (assignment_expression "local_38 = local_38 + -0x14" identifier = (binary_expression "local_38 + -0x14" identifier + number_literal)) ;) (expression_statement "uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);" (assignment_expression "uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1])" identifier = (call_expression "FUN_000537a0(uVar4,iVar3,param_1[1])" identifier (argument_list "(uVar4,iVar3,param_1[1])" ( identifier , identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);" (assignment_expression "uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1])" identifier = (call_expression "FUN_000537a0(iVar1,iVar3,param_1[1])" identifier (argument_list "(iVar1,iVar3,param_1[1])" ( identifier , identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);" (assignment_expression "uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1)" identifier = (call_expression "FUN_000556a0(param_1[2],uVar5,*param_1)" identifier (argument_list "(param_1[2],uVar5,*param_1)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , identifier , (pointer_expression "*param_1" * identifier) )))) ;) (expression_statement "uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);" (assignment_expression "uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1)" identifier = (call_expression "FUN_000556a0(param_1[3],uVar6,*param_1)" identifier (argument_list "(param_1[3],uVar6,*param_1)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , identifier , (pointer_expression "*param_1" * identifier) )))) ;) (expression_statement "uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);" (assignment_expression "uVar9 = FUN_000537a0(uVar7,uVar8,*param_1)" identifier = (call_expression "FUN_000537a0(uVar7,uVar8,*param_1)" identifier (argument_list "(uVar7,uVar8,*param_1)" ( identifier , identifier , (pointer_expression "*param_1" * identifier) )))) ;) (expression_statement "uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);" (assignment_expression "uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1])" identifier = (call_expression "FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1])" identifier (argument_list "(uVar9,PTR_DAT_001111c4,param_1[1])" ( identifier , identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar11 = FUN_000540e0(uVar10,iVar1);" (assignment_expression "iVar11 = FUN_000540e0(uVar10,iVar1)" identifier = (call_expression "FUN_000540e0(uVar10,iVar1)" identifier (argument_list "(uVar10,iVar1)" ( identifier , identifier )))) ;) (expression_statement "bVar12 = iVar11 == 0;" (assignment_expression "bVar12 = iVar11 == 0" identifier = (binary_expression "iVar11 == 0" identifier == number_literal)) ;) (expression_statement "FUN_00053760(iVar3);" (call_expression "FUN_00053760(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar4);" (call_expression "FUN_00053760(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar5);" (call_expression "FUN_00053760(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar6);" (call_expression "FUN_00053760(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar7);" (call_expression "FUN_00053760(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar8);" (call_expression "FUN_00053760(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar9);" (call_expression "FUN_00053760(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar10);" (call_expression "FUN_00053760(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) }))) }))) }) (else_clause "else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" else (compound_statement "{\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" { (expression_statement "FUN_0005a610(&local_38);" (call_expression "FUN_0005a610(&local_38)" identifier (argument_list "(&local_38)" ( (pointer_expression "&local_38" & identifier) ))) ;) (if_statement "if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }" if (parenthesized_expression "((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's'))))" ( (binary_expression "(((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))" (parenthesized_expression "(((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373))" ( (binary_expression "((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)" (parenthesized_expression "((local_3c != (int *)0x0) && (local_38 == 7))" ( (binary_expression "(local_3c != (int *)0x0) && (local_38 == 7)" (parenthesized_expression "(local_3c != (int *)0x0)" ( (binary_expression "local_3c != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_38 == 7)" ( (binary_expression "local_38 == 7" identifier == number_literal) ))) )) && (parenthesized_expression "(*local_3c == 0x2d687373)" ( (binary_expression "*local_3c == 0x2d687373" (pointer_expression "*local_3c" * identifier) == number_literal) ))) )) && (parenthesized_expression "(((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))" ( (parenthesized_expression "((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's'))" ( (binary_expression "(short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')" (binary_expression "(short)local_3c[1] == 0x7364" (cast_expression "(short)local_3c[1]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "local_3c[1]" identifier [ number_literal ])) == number_literal) && (parenthesized_expression "(*(char *)((int)local_3c + 6) == 's')" ( (binary_expression "*(char *)((int)local_3c + 6) == 's'" (pointer_expression "*(char *)((int)local_3c + 6)" * (cast_expression "(char *)((int)local_3c + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_3c + 6)" ( (binary_expression "(int)local_3c + 6" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'s'" ' character ')) ))) )) ))) )) (compound_statement "{\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }" { (expression_statement "local_40 = param_2 + 4;" (assignment_expression "local_40 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + -4;" (assignment_expression "param_3 = param_3 + -4" identifier = (binary_expression "param_3 + -4" identifier + number_literal)) ;) (if_statement "if (0x13 < param_3) goto LAB_0005a6d3;" if (parenthesized_expression "(0x13 < param_3)" ( (binary_expression "0x13 < param_3" number_literal < identifier) )) (goto_statement "goto LAB_0005a6d3;" goto statement_identifier ;)) })) }))) })) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (labeled_statement "LAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }" { comment (expression_statement "FUN_000a39d0();" (call_expression "FUN_000a39d0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return bVar12;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint dss_verifysig(void *key,char *sig,int siglen,char *data,int datalen)\n\n{\n  int iVar1;\n  char *p_00;\n  Bignum_conflict b;\n  Bignum_conflict b_00;\n  int iVar2;\n  Bignum_conflict q;\n  Bignum_conflict p_01;\n  Bignum_conflict exp;\n  Bignum_conflict exp_00;\n  Bignum_conflict p_02;\n  Bignum_conflict q_00;\n  Bignum_conflict p_03;\n  Bignum_conflict a;\n  uint uVar3;\n  int in_GS_OFFSET;\n  uchar *local_40;\n  char *p;\n  int slen;\n  char hash [20];\n  \n  p_00 = data;\n  local_40 = (uchar *)sig;\n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*key != 0) {\n    if (siglen == 0x28) {\nLAB_0005a6d3:\n      b = bignum_from_bytes(local_40,0x14);\n      local_40 = local_40 + 0x14;\n      siglen = siglen + -0x14;\n      if (siglen < 0x14) {\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }\n      else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }\n    }\n    else {\n      getstring((char **)&local_40,&siglen,&p,&slen);\n      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }\n    }\n  }\n  uVar3 = 0;\nLAB_0005a91a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar3;\n}\n\n" comment (function_definition "int dss_verifysig(void *key,char *sig,int siglen,char *data,int datalen)\n\n{\n  int iVar1;\n  char *p_00;\n  Bignum_conflict b;\n  Bignum_conflict b_00;\n  int iVar2;\n  Bignum_conflict q;\n  Bignum_conflict p_01;\n  Bignum_conflict exp;\n  Bignum_conflict exp_00;\n  Bignum_conflict p_02;\n  Bignum_conflict q_00;\n  Bignum_conflict p_03;\n  Bignum_conflict a;\n  uint uVar3;\n  int in_GS_OFFSET;\n  uchar *local_40;\n  char *p;\n  int slen;\n  char hash [20];\n  \n  p_00 = data;\n  local_40 = (uchar *)sig;\n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*key != 0) {\n    if (siglen == 0x28) {\nLAB_0005a6d3:\n      b = bignum_from_bytes(local_40,0x14);\n      local_40 = local_40 + 0x14;\n      siglen = siglen + -0x14;\n      if (siglen < 0x14) {\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }\n      else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }\n    }\n    else {\n      getstring((char **)&local_40,&siglen,&p,&slen);\n      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }\n    }\n  }\n  uVar3 = 0;\nLAB_0005a91a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar3;\n}" primitive_type (function_declarator "dss_verifysig(void *key,char *sig,int siglen,char *data,int datalen)" identifier (parameter_list "(void *key,char *sig,int siglen,char *data,int datalen)" ( (parameter_declaration "void *key" primitive_type (pointer_declarator "*key" * identifier)) , (parameter_declaration "char *sig" primitive_type (pointer_declarator "*sig" * identifier)) , (parameter_declaration "int siglen" primitive_type identifier) , (parameter_declaration "char *data" primitive_type (pointer_declarator "*data" * identifier)) , (parameter_declaration "int datalen" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  char *p_00;\n  Bignum_conflict b;\n  Bignum_conflict b_00;\n  int iVar2;\n  Bignum_conflict q;\n  Bignum_conflict p_01;\n  Bignum_conflict exp;\n  Bignum_conflict exp_00;\n  Bignum_conflict p_02;\n  Bignum_conflict q_00;\n  Bignum_conflict p_03;\n  Bignum_conflict a;\n  uint uVar3;\n  int in_GS_OFFSET;\n  uchar *local_40;\n  char *p;\n  int slen;\n  char hash [20];\n  \n  p_00 = data;\n  local_40 = (uchar *)sig;\n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*key != 0) {\n    if (siglen == 0x28) {\nLAB_0005a6d3:\n      b = bignum_from_bytes(local_40,0x14);\n      local_40 = local_40 + 0x14;\n      siglen = siglen + -0x14;\n      if (siglen < 0x14) {\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }\n      else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }\n    }\n    else {\n      getstring((char **)&local_40,&siglen,&p,&slen);\n      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }\n    }\n  }\n  uVar3 = 0;\nLAB_0005a91a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *p_00;" primitive_type (pointer_declarator "*p_00" * identifier) ;) (declaration "Bignum_conflict b;" type_identifier identifier ;) (declaration "Bignum_conflict b_00;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Bignum_conflict q;" type_identifier identifier ;) (declaration "Bignum_conflict p_01;" type_identifier identifier ;) (declaration "Bignum_conflict exp;" type_identifier identifier ;) (declaration "Bignum_conflict exp_00;" type_identifier identifier ;) (declaration "Bignum_conflict p_02;" type_identifier identifier ;) (declaration "Bignum_conflict q_00;" type_identifier identifier ;) (declaration "Bignum_conflict p_03;" type_identifier identifier ;) (declaration "Bignum_conflict a;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uchar *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "char *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (declaration "int slen;" primitive_type identifier ;) (declaration "char hash [20];" primitive_type (array_declarator "hash [20]" identifier [ number_literal ]) ;) (expression_statement "p_00 = data;" (assignment_expression "p_00 = data" identifier = identifier) ;) (expression_statement "local_40 = (uchar *)sig;" (assignment_expression "local_40 = (uchar *)sig" identifier = (cast_expression "(uchar *)sig" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) comment (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*key != 0) {\n    if (siglen == 0x28) {\nLAB_0005a6d3:\n      b = bignum_from_bytes(local_40,0x14);\n      local_40 = local_40 + 0x14;\n      siglen = siglen + -0x14;\n      if (siglen < 0x14) {\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }\n      else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }\n    }\n    else {\n      getstring((char **)&local_40,&siglen,&p,&slen);\n      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }\n    }\n  }" if (parenthesized_expression "(*key != 0)" ( (binary_expression "*key != 0" (pointer_expression "*key" * identifier) != number_literal) )) (compound_statement "{\n    if (siglen == 0x28) {\nLAB_0005a6d3:\n      b = bignum_from_bytes(local_40,0x14);\n      local_40 = local_40 + 0x14;\n      siglen = siglen + -0x14;\n      if (siglen < 0x14) {\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }\n      else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }\n    }\n    else {\n      getstring((char **)&local_40,&siglen,&p,&slen);\n      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }\n    }\n  }" { (if_statement "if (siglen == 0x28) {\nLAB_0005a6d3:\n      b = bignum_from_bytes(local_40,0x14);\n      local_40 = local_40 + 0x14;\n      siglen = siglen + -0x14;\n      if (siglen < 0x14) {\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }\n      else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }\n    }\n    else {\n      getstring((char **)&local_40,&siglen,&p,&slen);\n      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }\n    }" if (parenthesized_expression "(siglen == 0x28)" ( (binary_expression "siglen == 0x28" identifier == number_literal) )) (compound_statement "{\nLAB_0005a6d3:\n      b = bignum_from_bytes(local_40,0x14);\n      local_40 = local_40 + 0x14;\n      siglen = siglen + -0x14;\n      if (siglen < 0x14) {\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }\n      else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }\n    }" { (labeled_statement "LAB_0005a6d3:\n      b = bignum_from_bytes(local_40,0x14);" statement_identifier : (expression_statement "b = bignum_from_bytes(local_40,0x14);" (assignment_expression "b = bignum_from_bytes(local_40,0x14)" identifier = (call_expression "bignum_from_bytes(local_40,0x14)" identifier (argument_list "(local_40,0x14)" ( identifier , number_literal )))) ;)) (expression_statement "local_40 = local_40 + 0x14;" (assignment_expression "local_40 = local_40 + 0x14" identifier = (binary_expression "local_40 + 0x14" identifier + number_literal)) ;) (expression_statement "siglen = siglen + -0x14;" (assignment_expression "siglen = siglen + -0x14" identifier = (binary_expression "siglen + -0x14" identifier + number_literal)) ;) (if_statement "if (siglen < 0x14) {\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }\n      else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }" if (parenthesized_expression "(siglen < 0x14)" ( (binary_expression "siglen < 0x14" identifier < number_literal) )) (compound_statement "{\n        if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }\n      }" { (if_statement "if (b != (Bignum_conflict)0x0) {\n          freebn(b);\n        }" if (parenthesized_expression "(b != (Bignum_conflict)0x0)" ( (binary_expression "b != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n          freebn(b);\n        }" { (expression_statement "freebn(b);" (call_expression "freebn(b)" identifier (argument_list "(b)" ( identifier ))) ;) })) }) (else_clause "else {\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }" else (compound_statement "{\n        b_00 = bignum_from_bytes(local_40,0x14);\n        local_40 = local_40 + 0x14;\n        siglen = siglen + -0x14;\n        if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }\n      }" { (expression_statement "b_00 = bignum_from_bytes(local_40,0x14);" (assignment_expression "b_00 = bignum_from_bytes(local_40,0x14)" identifier = (call_expression "bignum_from_bytes(local_40,0x14)" identifier (argument_list "(local_40,0x14)" ( identifier , number_literal )))) ;) (expression_statement "local_40 = local_40 + 0x14;" (assignment_expression "local_40 = local_40 + 0x14" identifier = (binary_expression "local_40 + 0x14" identifier + number_literal)) ;) (expression_statement "siglen = siglen + -0x14;" (assignment_expression "siglen = siglen + -0x14" identifier = (binary_expression "siglen + -0x14" identifier + number_literal)) ;) (if_statement "if ((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)) {\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }" if (parenthesized_expression "((b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0))" ( (binary_expression "(b == (Bignum_conflict)0x0) || (b_00 == (Bignum_conflict)0x0)" (parenthesized_expression "(b == (Bignum_conflict)0x0)" ( (binary_expression "b == (Bignum_conflict)0x0" identifier == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) || (parenthesized_expression "(b_00 == (Bignum_conflict)0x0)" ( (binary_expression "b_00 == (Bignum_conflict)0x0" identifier == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n          if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }\n          if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n        }" { (if_statement "if (b != (Bignum_conflict)0x0) {\n            freebn(b);\n          }" if (parenthesized_expression "(b != (Bignum_conflict)0x0)" ( (binary_expression "b != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n            freebn(b);\n          }" { (expression_statement "freebn(b);" (call_expression "freebn(b)" identifier (argument_list "(b)" ( identifier ))) ;) })) (if_statement "if (b_00 != (Bignum_conflict)0x0) {\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(b_00 != (Bignum_conflict)0x0)" ( (binary_expression "b_00 != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }" { (expression_statement "freebn(b_00);" (call_expression "freebn(b_00)" identifier (argument_list "(b_00)" ( identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) }) (else_clause "else {\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }" else (compound_statement "{\n          iVar2 = bignum_cmp(b_00,Zero);\n          if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }\n          q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));\n          if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }\n          freebn(b);\n          freebn(b_00);\n        }" { (expression_statement "iVar2 = bignum_cmp(b_00,Zero);" (assignment_expression "iVar2 = bignum_cmp(b_00,Zero)" identifier = (call_expression "bignum_cmp(b_00,Zero)" identifier (argument_list "(b_00,Zero)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            freebn(b);\n            freebn(b_00);\n            uVar3 = 0;\n            goto LAB_0005a91a;\n          }" { (expression_statement "freebn(b);" (call_expression "freebn(b)" identifier (argument_list "(b)" ( identifier ))) ;) (expression_statement "freebn(b_00);" (call_expression "freebn(b_00)" identifier (argument_list "(b_00)" ( identifier ))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) (expression_statement "q = modinv(b_00,*(Bignum_conflict *)((int)key + 4));" (assignment_expression "q = modinv(b_00,*(Bignum_conflict *)((int)key + 4))" identifier = (call_expression "modinv(b_00,*(Bignum_conflict *)((int)key + 4))" identifier (argument_list "(b_00,*(Bignum_conflict *)((int)key + 4))" ( identifier , (pointer_expression "*(Bignum_conflict *)((int)key + 4)" * (cast_expression "(Bignum_conflict *)((int)key + 4)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (if_statement "if (q != (Bignum_conflict)0x0) {\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(q != (Bignum_conflict)0x0)" ( (binary_expression "q != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n            SHA_Simple(p_00,datalen,(uchar *)hash);\n            slen = 0x14;\n            p = hash;\n            p_01 = bignum_from_bytes((uchar *)hash,0x14);\n            p = p + 0x14;\n            slen = slen + -0x14;\n            exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));\n            exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));\n                    /* WARNING: Load size is inaccurate */\n            p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);\n                    /* WARNING: Load size is inaccurate */\n            q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);\n                    /* WARNING: Load size is inaccurate */\n            p_03 = modmul(p_02,q_00,*key);\n            a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));\n            iVar2 = bignum_cmp(a,b);\n            uVar3 = (uint)(iVar2 == 0);\n            freebn(q);\n            freebn(p_01);\n            freebn(exp);\n            freebn(exp_00);\n            freebn(p_02);\n            freebn(q_00);\n            freebn(p_03);\n            freebn(a);\n            freebn(b);\n            freebn(b_00);\n            goto LAB_0005a91a;\n          }" { (expression_statement "SHA_Simple(p_00,datalen,(uchar *)hash);" (call_expression "SHA_Simple(p_00,datalen,(uchar *)hash)" identifier (argument_list "(p_00,datalen,(uchar *)hash)" ( identifier , identifier , (cast_expression "(uchar *)hash" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "slen = 0x14;" (assignment_expression "slen = 0x14" identifier = number_literal) ;) (expression_statement "p = hash;" (assignment_expression "p = hash" identifier = identifier) ;) (expression_statement "p_01 = bignum_from_bytes((uchar *)hash,0x14);" (assignment_expression "p_01 = bignum_from_bytes((uchar *)hash,0x14)" identifier = (call_expression "bignum_from_bytes((uchar *)hash,0x14)" identifier (argument_list "((uchar *)hash,0x14)" ( (cast_expression "(uchar *)hash" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "p = p + 0x14;" (assignment_expression "p = p + 0x14" identifier = (binary_expression "p + 0x14" identifier + number_literal)) ;) (expression_statement "slen = slen + -0x14;" (assignment_expression "slen = slen + -0x14" identifier = (binary_expression "slen + -0x14" identifier + number_literal)) ;) (expression_statement "exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4));" (assignment_expression "exp = modmul(p_01,q,*(Bignum_conflict *)((int)key + 4))" identifier = (call_expression "modmul(p_01,q,*(Bignum_conflict *)((int)key + 4))" identifier (argument_list "(p_01,q,*(Bignum_conflict *)((int)key + 4))" ( identifier , identifier , (pointer_expression "*(Bignum_conflict *)((int)key + 4)" * (cast_expression "(Bignum_conflict *)((int)key + 4)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (expression_statement "exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4));" (assignment_expression "exp_00 = modmul(b,q,*(Bignum_conflict *)((int)key + 4))" identifier = (call_expression "modmul(b,q,*(Bignum_conflict *)((int)key + 4))" identifier (argument_list "(b,q,*(Bignum_conflict *)((int)key + 4))" ( identifier , identifier , (pointer_expression "*(Bignum_conflict *)((int)key + 4)" * (cast_expression "(Bignum_conflict *)((int)key + 4)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) comment (expression_statement "p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key);" (assignment_expression "p_02 = modpow(*(Bignum_conflict *)((int)key + 8),exp,*key)" identifier = (call_expression "modpow(*(Bignum_conflict *)((int)key + 8),exp,*key)" identifier (argument_list "(*(Bignum_conflict *)((int)key + 8),exp,*key)" ( (pointer_expression "*(Bignum_conflict *)((int)key + 8)" * (cast_expression "(Bignum_conflict *)((int)key + 8)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 8)" ( (binary_expression "(int)key + 8" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , (pointer_expression "*key" * identifier) )))) ;) comment (expression_statement "q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key);" (assignment_expression "q_00 = modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key)" identifier = (call_expression "modpow(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key)" identifier (argument_list "(*(Bignum_conflict *)((int)key + 0xc),exp_00,*key)" ( (pointer_expression "*(Bignum_conflict *)((int)key + 0xc)" * (cast_expression "(Bignum_conflict *)((int)key + 0xc)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 0xc)" ( (binary_expression "(int)key + 0xc" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , (pointer_expression "*key" * identifier) )))) ;) comment (expression_statement "p_03 = modmul(p_02,q_00,*key);" (assignment_expression "p_03 = modmul(p_02,q_00,*key)" identifier = (call_expression "modmul(p_02,q_00,*key)" identifier (argument_list "(p_02,q_00,*key)" ( identifier , identifier , (pointer_expression "*key" * identifier) )))) ;) (expression_statement "a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4));" (assignment_expression "a = modmul(p_03,One,*(Bignum_conflict *)((int)key + 4))" identifier = (call_expression "modmul(p_03,One,*(Bignum_conflict *)((int)key + 4))" identifier (argument_list "(p_03,One,*(Bignum_conflict *)((int)key + 4))" ( identifier , identifier , (pointer_expression "*(Bignum_conflict *)((int)key + 4)" * (cast_expression "(Bignum_conflict *)((int)key + 4)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (expression_statement "iVar2 = bignum_cmp(a,b);" (assignment_expression "iVar2 = bignum_cmp(a,b)" identifier = (call_expression "bignum_cmp(a,b)" identifier (argument_list "(a,b)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = (uint)(iVar2 == 0);" (assignment_expression "uVar3 = (uint)(iVar2 == 0)" identifier = (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) ;) (expression_statement "freebn(q);" (call_expression "freebn(q)" identifier (argument_list "(q)" ( identifier ))) ;) (expression_statement "freebn(p_01);" (call_expression "freebn(p_01)" identifier (argument_list "(p_01)" ( identifier ))) ;) (expression_statement "freebn(exp);" (call_expression "freebn(exp)" identifier (argument_list "(exp)" ( identifier ))) ;) (expression_statement "freebn(exp_00);" (call_expression "freebn(exp_00)" identifier (argument_list "(exp_00)" ( identifier ))) ;) (expression_statement "freebn(p_02);" (call_expression "freebn(p_02)" identifier (argument_list "(p_02)" ( identifier ))) ;) (expression_statement "freebn(q_00);" (call_expression "freebn(q_00)" identifier (argument_list "(q_00)" ( identifier ))) ;) (expression_statement "freebn(p_03);" (call_expression "freebn(p_03)" identifier (argument_list "(p_03)" ( identifier ))) ;) (expression_statement "freebn(a);" (call_expression "freebn(a)" identifier (argument_list "(a)" ( identifier ))) ;) (expression_statement "freebn(b);" (call_expression "freebn(b)" identifier (argument_list "(b)" ( identifier ))) ;) (expression_statement "freebn(b_00);" (call_expression "freebn(b_00)" identifier (argument_list "(b_00)" ( identifier ))) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) (expression_statement "freebn(b);" (call_expression "freebn(b)" identifier (argument_list "(b)" ( identifier ))) ;) (expression_statement "freebn(b_00);" (call_expression "freebn(b_00)" identifier (argument_list "(b_00)" ( identifier ))) ;) }))) }))) }) (else_clause "else {\n      getstring((char **)&local_40,&siglen,&p,&slen);\n      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }\n    }" else (compound_statement "{\n      getstring((char **)&local_40,&siglen,&p,&slen);\n      if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }\n    }" { (expression_statement "getstring((char **)&local_40,&siglen,&p,&slen);" (call_expression "getstring((char **)&local_40,&siglen,&p,&slen)" identifier (argument_list "((char **)&local_40,&siglen,&p,&slen)" ( (cast_expression "(char **)&local_40" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_40" & identifier)) , (pointer_expression "&siglen" & identifier) , (pointer_expression "&p" & identifier) , (pointer_expression "&slen" & identifier) ))) ;) (if_statement "if ((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))) {\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }" if (parenthesized_expression "((((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's'))))" ( (binary_expression "(((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)) &&\n         ((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))" (parenthesized_expression "(((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373))" ( (binary_expression "((p != (char *)0x0) && (slen == 7)) && (*(int *)p == 0x2d687373)" (parenthesized_expression "((p != (char *)0x0) && (slen == 7))" ( (binary_expression "(p != (char *)0x0) && (slen == 7)" (parenthesized_expression "(p != (char *)0x0)" ( (binary_expression "p != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(slen == 7)" ( (binary_expression "slen == 7" identifier == number_literal) ))) )) && (parenthesized_expression "(*(int *)p == 0x2d687373)" ( (binary_expression "*(int *)p == 0x2d687373" (pointer_expression "*(int *)p" * (cast_expression "(int *)p" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) ))) )) && (parenthesized_expression "((*(short *)(p + 4) == 0x7364 && (p[6] == 's')))" ( (parenthesized_expression "(*(short *)(p + 4) == 0x7364 && (p[6] == 's'))" ( (binary_expression "*(short *)(p + 4) == 0x7364 && (p[6] == 's')" (binary_expression "*(short *)(p + 4) == 0x7364" (pointer_expression "*(short *)(p + 4)" * (cast_expression "(short *)(p + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p + 4)" ( (binary_expression "p + 4" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "(p[6] == 's')" ( (binary_expression "p[6] == 's'" (subscript_expression "p[6]" identifier [ number_literal ]) == (char_literal "'s'" ' character ')) ))) )) ))) )) (compound_statement "{\n        local_40 = local_40 + 4;\n        siglen = siglen + -4;\n        if (0x13 < siglen) goto LAB_0005a6d3;\n      }" { (expression_statement "local_40 = local_40 + 4;" (assignment_expression "local_40 = local_40 + 4" identifier = (binary_expression "local_40 + 4" identifier + number_literal)) ;) (expression_statement "siglen = siglen + -4;" (assignment_expression "siglen = siglen + -4" identifier = (binary_expression "siglen + -4" identifier + number_literal)) ;) (if_statement "if (0x13 < siglen) goto LAB_0005a6d3;" if (parenthesized_expression "(0x13 < siglen)" ( (binary_expression "0x13 < siglen" number_literal < identifier) )) (goto_statement "goto LAB_0005a6d3;" goto statement_identifier ;)) })) }))) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0005a91a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "bool FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  int local_40;\n  int *local_3c;\n  int local_38;\n  undefined1 local_34 [20];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5a699;\n  local_40 = param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return bVar12;\n}\n\n" (function_definition "bool FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  int local_40;\n  int *local_3c;\n  int local_38;\n  undefined1 local_34 [20];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5a699;\n  local_40 = param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return bVar12;\n}" primitive_type (function_declarator "FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)" identifier (parameter_list "(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  int local_40;\n  int *local_3c;\n  int local_38;\n  undefined1 local_34 [20];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5a699;\n  local_40 = param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return bVar12;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined1 local_34 [20];" type_identifier (array_declarator "local_34 [20]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x5a699;" (assignment_expression "uStack_14 = 0x5a699" identifier = number_literal) ;) (expression_statement "local_40 = param_2;" (assignment_expression "local_40 = param_2" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }" { (if_statement "if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" if (parenthesized_expression "(param_3 == 0x28)" ( (binary_expression "param_3 == 0x28" identifier == number_literal) )) (compound_statement "{\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }" { (labeled_statement "LAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);" statement_identifier : (expression_statement "iVar1 = FUN_00053bf0(local_40,0x14);" (assignment_expression "iVar1 = FUN_00053bf0(local_40,0x14)" identifier = (call_expression "FUN_00053bf0(local_40,0x14)" identifier (argument_list "(local_40,0x14)" ( identifier , number_literal )))) ;)) (if_statement "if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" if (parenthesized_expression "(param_3 + -0x14 < 0x14)" ( (binary_expression "param_3 + -0x14 < 0x14" (binary_expression "param_3 + -0x14" identifier + number_literal) < number_literal) )) (compound_statement "{\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }" { (if_statement "if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00053760(iVar1);\n        }" { (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) }) (else_clause "else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" else (compound_statement "{\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" { (expression_statement "iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);" (assignment_expression "iVar2 = FUN_00053bf0(local_40 + 0x14,0x14)" identifier = (call_expression "FUN_00053bf0(local_40 + 0x14,0x14)" identifier (argument_list "(local_40 + 0x14,0x14)" ( (binary_expression "local_40 + 0x14" identifier + number_literal) , number_literal )))) ;) (if_statement "if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" if (parenthesized_expression "((iVar1 == 0) || (iVar2 == 0))" ( (binary_expression "(iVar1 == 0) || (iVar2 == 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }" { (if_statement "if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00053760(iVar1);\n          }" { (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (if_statement "if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" { (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) }) (else_clause "else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" else (compound_statement "{\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" { (expression_statement "iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);" (assignment_expression "iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8)" identifier = (call_expression "FUN_000540e0(iVar2,PTR_DAT_001111c8)" identifier (argument_list "(iVar2,PTR_DAT_001111c8)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" { (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) (expression_statement "iVar3 = FUN_000553c0(iVar2,param_1[1]);" (assignment_expression "iVar3 = FUN_000553c0(iVar2,param_1[1])" identifier = (call_expression "FUN_000553c0(iVar2,param_1[1])" identifier (argument_list "(iVar2,param_1[1])" ( identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }" { (expression_statement "FUN_0006b8b0(param_4,param_5,local_34);" (call_expression "FUN_0006b8b0(param_4,param_5,local_34)" identifier (argument_list "(param_4,param_5,local_34)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_38 = 0x14;" (assignment_expression "local_38 = 0x14" identifier = number_literal) ;) (expression_statement "uVar4 = FUN_00053bf0(local_34,0x14);" (assignment_expression "uVar4 = FUN_00053bf0(local_34,0x14)" identifier = (call_expression "FUN_00053bf0(local_34,0x14)" identifier (argument_list "(local_34,0x14)" ( identifier , number_literal )))) ;) (expression_statement "local_38 = local_38 + -0x14;" (assignment_expression "local_38 = local_38 + -0x14" identifier = (binary_expression "local_38 + -0x14" identifier + number_literal)) ;) (expression_statement "uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);" (assignment_expression "uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1])" identifier = (call_expression "FUN_000537a0(uVar4,iVar3,param_1[1])" identifier (argument_list "(uVar4,iVar3,param_1[1])" ( identifier , identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);" (assignment_expression "uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1])" identifier = (call_expression "FUN_000537a0(iVar1,iVar3,param_1[1])" identifier (argument_list "(iVar1,iVar3,param_1[1])" ( identifier , identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);" (assignment_expression "uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1)" identifier = (call_expression "FUN_000556a0(param_1[2],uVar5,*param_1)" identifier (argument_list "(param_1[2],uVar5,*param_1)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , identifier , (pointer_expression "*param_1" * identifier) )))) ;) (expression_statement "uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);" (assignment_expression "uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1)" identifier = (call_expression "FUN_000556a0(param_1[3],uVar6,*param_1)" identifier (argument_list "(param_1[3],uVar6,*param_1)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , identifier , (pointer_expression "*param_1" * identifier) )))) ;) (expression_statement "uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);" (assignment_expression "uVar9 = FUN_000537a0(uVar7,uVar8,*param_1)" identifier = (call_expression "FUN_000537a0(uVar7,uVar8,*param_1)" identifier (argument_list "(uVar7,uVar8,*param_1)" ( identifier , identifier , (pointer_expression "*param_1" * identifier) )))) ;) (expression_statement "uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);" (assignment_expression "uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1])" identifier = (call_expression "FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1])" identifier (argument_list "(uVar9,PTR_DAT_001111c4,param_1[1])" ( identifier , identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar11 = FUN_000540e0(uVar10,iVar1);" (assignment_expression "iVar11 = FUN_000540e0(uVar10,iVar1)" identifier = (call_expression "FUN_000540e0(uVar10,iVar1)" identifier (argument_list "(uVar10,iVar1)" ( identifier , identifier )))) ;) (expression_statement "bVar12 = iVar11 == 0;" (assignment_expression "bVar12 = iVar11 == 0" identifier = (binary_expression "iVar11 == 0" identifier == number_literal)) ;) (expression_statement "FUN_00053760(iVar3);" (call_expression "FUN_00053760(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar4);" (call_expression "FUN_00053760(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar5);" (call_expression "FUN_00053760(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar6);" (call_expression "FUN_00053760(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar7);" (call_expression "FUN_00053760(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar8);" (call_expression "FUN_00053760(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar9);" (call_expression "FUN_00053760(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (expression_statement "FUN_00053760(uVar10);" (call_expression "FUN_00053760(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (goto_statement "goto LAB_0005a91a;" goto statement_identifier ;) })) (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) }))) }))) }) (else_clause "else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" else (compound_statement "{\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" { (expression_statement "FUN_0005a610(&local_38);" (call_expression "FUN_0005a610(&local_38)" identifier (argument_list "(&local_38)" ( (pointer_expression "&local_38" & identifier) ))) ;) (if_statement "if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }" if (parenthesized_expression "((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's'))))" ( (binary_expression "(((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))" (parenthesized_expression "(((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373))" ( (binary_expression "((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)" (parenthesized_expression "((local_3c != (int *)0x0) && (local_38 == 7))" ( (binary_expression "(local_3c != (int *)0x0) && (local_38 == 7)" (parenthesized_expression "(local_3c != (int *)0x0)" ( (binary_expression "local_3c != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_38 == 7)" ( (binary_expression "local_38 == 7" identifier == number_literal) ))) )) && (parenthesized_expression "(*local_3c == 0x2d687373)" ( (binary_expression "*local_3c == 0x2d687373" (pointer_expression "*local_3c" * identifier) == number_literal) ))) )) && (parenthesized_expression "(((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))" ( (parenthesized_expression "((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's'))" ( (binary_expression "(short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')" (binary_expression "(short)local_3c[1] == 0x7364" (cast_expression "(short)local_3c[1]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "local_3c[1]" identifier [ number_literal ])) == number_literal) && (parenthesized_expression "(*(char *)((int)local_3c + 6) == 's')" ( (binary_expression "*(char *)((int)local_3c + 6) == 's'" (pointer_expression "*(char *)((int)local_3c + 6)" * (cast_expression "(char *)((int)local_3c + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_3c + 6)" ( (binary_expression "(int)local_3c + 6" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'s'" ' character ')) ))) )) ))) )) (compound_statement "{\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }" { (expression_statement "local_40 = param_2 + 4;" (assignment_expression "local_40 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + -4;" (assignment_expression "param_3 = param_3 + -4" identifier = (binary_expression "param_3 + -4" identifier + number_literal)) ;) (if_statement "if (0x13 < param_3) goto LAB_0005a6d3;" if (parenthesized_expression "(0x13 < param_3)" ( (binary_expression "0x13 < param_3" number_literal < identifier) )) (goto_statement "goto LAB_0005a6d3;" goto statement_identifier ;)) })) }))) })) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (labeled_statement "LAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000a39d0();\n  }" { (expression_statement "FUN_000a39d0();" (call_expression "FUN_000a39d0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return bVar12;" return identifier ;) })))
(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 IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (pointer_expression * IDENT) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])) == LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' character ')) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) })) }))) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "bool FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  int local_40;\n  int *local_3c;\n  int local_38;\n  undefined1 local_34 [20];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5a699;\n  local_40 = param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return bVar12;\n}" (primitive_type "bool") (function_declarator "FUN_0005a690(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)" (identifier "FUN_0005a690") (parameter_list "(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (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 "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  int local_40;\n  int *local_3c;\n  int local_38;\n  undefined1 local_34 [20];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5a699;\n  local_40 = param_2;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return bVar12;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int *local_3c;" (primitive_type "int") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "undefined1 local_34 [20];" (type_identifier "undefined1") (array_declarator "local_34 [20]" (identifier "local_34") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x5a699;" (assignment_expression "uStack_14 = 0x5a699" (identifier "uStack_14") (= "=") (number_literal "0x5a699")) (; ";")) (expression_statement "local_40 = param_2;" (assignment_expression "local_40 = param_2" (identifier "local_40") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (*param_1 != 0) {\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }\n  }" ({ "{") (if_statement "if (param_3 == 0x28) {\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }\n    else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" (if "if") (parenthesized_expression "(param_3 == 0x28)" (( "(") (binary_expression "param_3 == 0x28" (identifier "param_3") (== "==") (number_literal "0x28")) () ")")) (compound_statement "{\nLAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);\n      if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }\n    }" ({ "{") (labeled_statement "LAB_0005a6d3:\n      iVar1 = FUN_00053bf0(local_40,0x14);" (statement_identifier "LAB_0005a6d3") (: ":") (expression_statement "iVar1 = FUN_00053bf0(local_40,0x14);" (assignment_expression "iVar1 = FUN_00053bf0(local_40,0x14)" (identifier "iVar1") (= "=") (call_expression "FUN_00053bf0(local_40,0x14)" (identifier "FUN_00053bf0") (argument_list "(local_40,0x14)" (( "(") (identifier "local_40") (, ",") (number_literal "0x14") () ")")))) (; ";"))) (if_statement "if (param_3 + -0x14 < 0x14) {\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }\n      else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" (if "if") (parenthesized_expression "(param_3 + -0x14 < 0x14)" (( "(") (binary_expression "param_3 + -0x14 < 0x14" (binary_expression "param_3 + -0x14" (identifier "param_3") (+ "+") (number_literal "-0x14")) (< "<") (number_literal "0x14")) () ")")) (compound_statement "{\n        if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }\n      }" ({ "{") (if_statement "if (iVar1 != 0) {\n          FUN_00053760(iVar1);\n        }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00053760(iVar1);\n        }" ({ "{") (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" (identifier "FUN_00053760") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" (else "else") (compound_statement "{\n        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);\n        if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }\n      }" ({ "{") (expression_statement "iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);" (assignment_expression "iVar2 = FUN_00053bf0(local_40 + 0x14,0x14)" (identifier "iVar2") (= "=") (call_expression "FUN_00053bf0(local_40 + 0x14,0x14)" (identifier "FUN_00053bf0") (argument_list "(local_40 + 0x14,0x14)" (( "(") (binary_expression "local_40 + 0x14" (identifier "local_40") (+ "+") (number_literal "0x14")) (, ",") (number_literal "0x14") () ")")))) (; ";")) (if_statement "if ((iVar1 == 0) || (iVar2 == 0)) {\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }\n        else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" (if "if") (parenthesized_expression "((iVar1 == 0) || (iVar2 == 0))" (( "(") (binary_expression "(iVar1 == 0) || (iVar2 == 0)" (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }\n          if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n        }" ({ "{") (if_statement "if (iVar1 != 0) {\n            FUN_00053760(iVar1);\n          }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00053760(iVar1);\n          }" ({ "{") (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" (identifier "FUN_00053760") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar2 != 0) {\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" ({ "{") (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" (identifier "FUN_00053760") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_0005a91a;" (goto "goto") (statement_identifier "LAB_0005a91a") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" (else "else") (compound_statement "{\n          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);\n          if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }\n          iVar3 = FUN_000553c0(iVar2,param_1[1]);\n          if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }\n          FUN_00053760(iVar1);\n          FUN_00053760(iVar2);\n        }" ({ "{") (expression_statement "iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);" (assignment_expression "iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8)" (identifier "iVar3") (= "=") (call_expression "FUN_000540e0(iVar2,PTR_DAT_001111c8)" (identifier "FUN_000540e0") (argument_list "(iVar2,PTR_DAT_001111c8)" (( "(") (identifier "iVar2") (, ",") (identifier "PTR_DAT_001111c8") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            bVar12 = false;\n            goto LAB_0005a91a;\n          }" ({ "{") (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" (identifier "FUN_00053760") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" (identifier "FUN_00053760") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_0005a91a;" (goto "goto") (statement_identifier "LAB_0005a91a") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_000553c0(iVar2,param_1[1]);" (assignment_expression "iVar3 = FUN_000553c0(iVar2,param_1[1])" (identifier "iVar3") (= "=") (call_expression "FUN_000553c0(iVar2,param_1[1])" (identifier "FUN_000553c0") (argument_list "(iVar2,param_1[1])" (( "(") (identifier "iVar2") (, ",") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0006b8b0(param_4,param_5,local_34);\n            local_38 = 0x14;\n            uVar4 = FUN_00053bf0(local_34,0x14);\n            local_38 = local_38 + -0x14;\n            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);\n            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);\n            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);\n            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);\n            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);\n            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);\n            iVar11 = FUN_000540e0(uVar10,iVar1);\n            bVar12 = iVar11 == 0;\n            FUN_00053760(iVar3);\n            FUN_00053760(uVar4);\n            FUN_00053760(uVar5);\n            FUN_00053760(uVar6);\n            FUN_00053760(uVar7);\n            FUN_00053760(uVar8);\n            FUN_00053760(uVar9);\n            FUN_00053760(uVar10);\n            FUN_00053760(iVar1);\n            FUN_00053760(iVar2);\n            goto LAB_0005a91a;\n          }" ({ "{") (expression_statement "FUN_0006b8b0(param_4,param_5,local_34);" (call_expression "FUN_0006b8b0(param_4,param_5,local_34)" (identifier "FUN_0006b8b0") (argument_list "(param_4,param_5,local_34)" (( "(") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "local_34") () ")"))) (; ";")) (expression_statement "local_38 = 0x14;" (assignment_expression "local_38 = 0x14" (identifier "local_38") (= "=") (number_literal "0x14")) (; ";")) (expression_statement "uVar4 = FUN_00053bf0(local_34,0x14);" (assignment_expression "uVar4 = FUN_00053bf0(local_34,0x14)" (identifier "uVar4") (= "=") (call_expression "FUN_00053bf0(local_34,0x14)" (identifier "FUN_00053bf0") (argument_list "(local_34,0x14)" (( "(") (identifier "local_34") (, ",") (number_literal "0x14") () ")")))) (; ";")) (expression_statement "local_38 = local_38 + -0x14;" (assignment_expression "local_38 = local_38 + -0x14" (identifier "local_38") (= "=") (binary_expression "local_38 + -0x14" (identifier "local_38") (+ "+") (number_literal "-0x14"))) (; ";")) (expression_statement "uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);" (assignment_expression "uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1])" (identifier "uVar5") (= "=") (call_expression "FUN_000537a0(uVar4,iVar3,param_1[1])" (identifier "FUN_000537a0") (argument_list "(uVar4,iVar3,param_1[1])" (( "(") (identifier "uVar4") (, ",") (identifier "iVar3") (, ",") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) () ")")))) (; ";")) (expression_statement "uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);" (assignment_expression "uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1])" (identifier "uVar6") (= "=") (call_expression "FUN_000537a0(iVar1,iVar3,param_1[1])" (identifier "FUN_000537a0") (argument_list "(iVar1,iVar3,param_1[1])" (( "(") (identifier "iVar1") (, ",") (identifier "iVar3") (, ",") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) () ")")))) (; ";")) (expression_statement "uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);" (assignment_expression "uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1)" (identifier "uVar7") (= "=") (call_expression "FUN_000556a0(param_1[2],uVar5,*param_1)" (identifier "FUN_000556a0") (argument_list "(param_1[2],uVar5,*param_1)" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "uVar5") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);" (assignment_expression "uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1)" (identifier "uVar8") (= "=") (call_expression "FUN_000556a0(param_1[3],uVar6,*param_1)" (identifier "FUN_000556a0") (argument_list "(param_1[3],uVar6,*param_1)" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "uVar6") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);" (assignment_expression "uVar9 = FUN_000537a0(uVar7,uVar8,*param_1)" (identifier "uVar9") (= "=") (call_expression "FUN_000537a0(uVar7,uVar8,*param_1)" (identifier "FUN_000537a0") (argument_list "(uVar7,uVar8,*param_1)" (( "(") (identifier "uVar7") (, ",") (identifier "uVar8") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);" (assignment_expression "uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1])" (identifier "uVar10") (= "=") (call_expression "FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1])" (identifier "FUN_000537a0") (argument_list "(uVar9,PTR_DAT_001111c4,param_1[1])" (( "(") (identifier "uVar9") (, ",") (identifier "PTR_DAT_001111c4") (, ",") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) () ")")))) (; ";")) (expression_statement "iVar11 = FUN_000540e0(uVar10,iVar1);" (assignment_expression "iVar11 = FUN_000540e0(uVar10,iVar1)" (identifier "iVar11") (= "=") (call_expression "FUN_000540e0(uVar10,iVar1)" (identifier "FUN_000540e0") (argument_list "(uVar10,iVar1)" (( "(") (identifier "uVar10") (, ",") (identifier "iVar1") () ")")))) (; ";")) (expression_statement "bVar12 = iVar11 == 0;" (assignment_expression "bVar12 = iVar11 == 0" (identifier "bVar12") (= "=") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0"))) (; ";")) (expression_statement "FUN_00053760(iVar3);" (call_expression "FUN_00053760(iVar3)" (identifier "FUN_00053760") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "FUN_00053760(uVar4);" (call_expression "FUN_00053760(uVar4)" (identifier "FUN_00053760") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "FUN_00053760(uVar5);" (call_expression "FUN_00053760(uVar5)" (identifier "FUN_00053760") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "FUN_00053760(uVar6);" (call_expression "FUN_00053760(uVar6)" (identifier "FUN_00053760") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "FUN_00053760(uVar7);" (call_expression "FUN_00053760(uVar7)" (identifier "FUN_00053760") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "FUN_00053760(uVar8);" (call_expression "FUN_00053760(uVar8)" (identifier "FUN_00053760") (argument_list "(uVar8)" (( "(") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "FUN_00053760(uVar9);" (call_expression "FUN_00053760(uVar9)" (identifier "FUN_00053760") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (expression_statement "FUN_00053760(uVar10);" (call_expression "FUN_00053760(uVar10)" (identifier "FUN_00053760") (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" (identifier "FUN_00053760") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" (identifier "FUN_00053760") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (goto_statement "goto LAB_0005a91a;" (goto "goto") (statement_identifier "LAB_0005a91a") (; ";")) (} "}"))) (expression_statement "FUN_00053760(iVar1);" (call_expression "FUN_00053760(iVar1)" (identifier "FUN_00053760") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "FUN_00053760(iVar2);" (call_expression "FUN_00053760(iVar2)" (identifier "FUN_00053760") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" (else "else") (compound_statement "{\n      FUN_0005a610(&local_38);\n      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }\n    }" ({ "{") (expression_statement "FUN_0005a610(&local_38);" (call_expression "FUN_0005a610(&local_38)" (identifier "FUN_0005a610") (argument_list "(&local_38)" (( "(") (pointer_expression "&local_38" (& "&") (identifier "local_38")) () ")"))) (; ";")) (if_statement "if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }" (if "if") (parenthesized_expression "((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's'))))" (( "(") (binary_expression "(((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&\n         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))" (parenthesized_expression "(((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373))" (( "(") (binary_expression "((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)" (parenthesized_expression "((local_3c != (int *)0x0) && (local_38 == 7))" (( "(") (binary_expression "(local_3c != (int *)0x0) && (local_38 == 7)" (parenthesized_expression "(local_3c != (int *)0x0)" (( "(") (binary_expression "local_3c != (int *)0x0" (identifier "local_3c") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_38 == 7)" (( "(") (binary_expression "local_38 == 7" (identifier "local_38") (== "==") (number_literal "7")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*local_3c == 0x2d687373)" (( "(") (binary_expression "*local_3c == 0x2d687373" (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (== "==") (number_literal "0x2d687373")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))" (( "(") (parenthesized_expression "((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's'))" (( "(") (binary_expression "(short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')" (binary_expression "(short)local_3c[1] == 0x7364" (cast_expression "(short)local_3c[1]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]"))) (== "==") (number_literal "0x7364")) (&& "&&") (parenthesized_expression "(*(char *)((int)local_3c + 6) == 's')" (( "(") (binary_expression "*(char *)((int)local_3c + 6) == 's'" (pointer_expression "*(char *)((int)local_3c + 6)" (* "*") (cast_expression "(char *)((int)local_3c + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_3c + 6)" (( "(") (binary_expression "(int)local_3c + 6" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (+ "+") (number_literal "6")) () ")")))) (== "==") (char_literal "'s'" (' "'") (character "s") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        local_40 = param_2 + 4;\n        param_3 = param_3 + -4;\n        if (0x13 < param_3) goto LAB_0005a6d3;\n      }" ({ "{") (expression_statement "local_40 = param_2 + 4;" (assignment_expression "local_40 = param_2 + 4" (identifier "local_40") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_3 = param_3 + -4;" (assignment_expression "param_3 = param_3 + -4" (identifier "param_3") (= "=") (binary_expression "param_3 + -4" (identifier "param_3") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (0x13 < param_3) goto LAB_0005a6d3;" (if "if") (parenthesized_expression "(0x13 < param_3)" (( "(") (binary_expression "0x13 < param_3" (number_literal "0x13") (< "<") (identifier "param_3")) () ")")) (goto_statement "goto LAB_0005a6d3;" (goto "goto") (statement_identifier "LAB_0005a6d3") (; ";"))) (} "}"))) (} "}")))) (} "}"))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_0005a91a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }" (statement_identifier "LAB_0005a91a") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000a39d0();\n  }" ({ "{") (expression_statement "FUN_000a39d0();" (call_expression "FUN_000a39d0()" (identifier "FUN_000a39d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return bVar12;" (return "return") (identifier "bVar12") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int function_1(void *key,char *sig,int var_2,char *data,int datalen)

{
  int var_18;
  char *p_00;
  type_1 var_5;
  type_1 var_7;
  int var_9;
  type_1 var_11;
  type_1 p_01;
  type_1 exp;
  type_1 exp_00;
  type_1 p_02;
  type_1 q_00;
  type_1 p_03;
  type_1 a;
  type_2 uVar3;
  int var_1;
  type_3 *var_4;
  char *var_13;
  int var_14;
  char hash [20];
  
  p_00 = data;
  var_4 = (type_3 *)sig;
                    /* WARNING: Load size is inaccurate */
  var_18 = *(int *)(var_1 + 0x14);
  if (*key != 0) {
    if (var_2 == 0x28) {
LAB_0005a6d3:
      var_5 = var_3(var_4,0x14);
      var_4 = var_4 + 0x14;
      var_2 = var_2 + -0x14;
      if (var_2 < 0x14) {
        if (var_5 != (type_1)0x0) {
          var_6(var_5);
        }
      }
      else {
        var_7 = var_3(var_4,0x14);
        var_4 = var_4 + 0x14;
        var_2 = var_2 + -0x14;
        if ((var_5 == (type_1)0x0) || (var_7 == (type_1)0x0)) {
          if (var_5 != (type_1)0x0) {
            var_6(var_5);
          }
          if (var_7 != (type_1)0x0) {
            var_6(var_7);
            uVar3 = 0;
            goto LAB_0005a91a;
          }
        }
        else {
          var_9 = var_8(var_7,Zero);
          if (var_9 == 0) {
            var_6(var_5);
            var_6(var_7);
            uVar3 = 0;
            goto LAB_0005a91a;
          }
          var_11 = var_10(var_7,*(type_1 *)((int)key + 4));
          if (var_11 != (type_1)0x0) {
            var_12(p_00,datalen,(type_3 *)hash);
            var_14 = 0x14;
            var_13 = hash;
            p_01 = var_3((type_3 *)hash,0x14);
            var_13 = var_13 + 0x14;
            var_14 = var_14 + -0x14;
            exp = var_15(p_01,var_11,*(type_1 *)((int)key + 4));
            exp_00 = var_15(var_5,var_11,*(type_1 *)((int)key + 4));
                    /* WARNING: Load size is inaccurate */
            p_02 = var_16(*(type_1 *)((int)key + 8),exp,*key);
                    /* WARNING: Load size is inaccurate */
            q_00 = var_16(*(type_1 *)((int)key + 0xc),exp_00,*key);
                    /* WARNING: Load size is inaccurate */
            p_03 = var_15(p_02,q_00,*key);
            a = var_15(p_03,One,*(type_1 *)((int)key + 4));
            var_9 = var_8(a,var_5);
            uVar3 = (type_2)(var_9 == 0);
            var_6(var_11);
            var_6(p_01);
            var_6(exp);
            var_6(exp_00);
            var_6(p_02);
            var_6(q_00);
            var_6(p_03);
            var_6(a);
            var_6(var_5);
            var_6(var_7);
            goto LAB_0005a91a;
          }
          var_6(var_5);
          var_6(var_7);
        }
      }
    }
    else {
      var_17((char **)&var_4,&var_2,&var_13,&var_14);
      if ((((var_13 != (char *)0x0) && (var_14 == 7)) && (*(int *)var_13 == 0x2d687373)) &&
         ((*(short *)(var_13 + 4) == 0x7364 && (var_13[6] == 's')))) {
        var_4 = var_4 + 4;
        var_2 = var_2 + -4;
        if (0x13 < var_2) goto LAB_0005a6d3;
      }
    }
  }
  uVar3 = 0;
LAB_0005a91a:
  if (var_18 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_19();
  }
  return uVar3;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

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

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int iVar11;
  int in_GS_OFFSET;
  bool bVar12;
  int local_40;
  int *local_3c;
  int local_38;
  undefined1 local_34 [20];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x5a699;
  local_40 = param_2;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (*param_1 != 0) {
    if (param_3 == 0x28) {
LAB_0005a6d3:
      iVar1 = FUN_00053bf0(local_40,0x14);
      if (param_3 + -0x14 < 0x14) {
        if (iVar1 != 0) {
          FUN_00053760(iVar1);
        }
      }
      else {
        iVar2 = FUN_00053bf0(local_40 + 0x14,0x14);
        if ((iVar1 == 0) || (iVar2 == 0)) {
          if (iVar1 != 0) {
            FUN_00053760(iVar1);
          }
          if (iVar2 != 0) {
            FUN_00053760(iVar2);
            bVar12 = false;
            goto LAB_0005a91a;
          }
        }
        else {
          iVar3 = FUN_000540e0(iVar2,PTR_DAT_001111c8);
          if (iVar3 == 0) {
            FUN_00053760(iVar1);
            FUN_00053760(iVar2);
            bVar12 = false;
            goto LAB_0005a91a;
          }
          iVar3 = FUN_000553c0(iVar2,param_1[1]);
          if (iVar3 != 0) {
            FUN_0006b8b0(param_4,param_5,local_34);
            local_38 = 0x14;
            uVar4 = FUN_00053bf0(local_34,0x14);
            local_38 = local_38 + -0x14;
            uVar5 = FUN_000537a0(uVar4,iVar3,param_1[1]);
            uVar6 = FUN_000537a0(iVar1,iVar3,param_1[1]);
            uVar7 = FUN_000556a0(param_1[2],uVar5,*param_1);
            uVar8 = FUN_000556a0(param_1[3],uVar6,*param_1);
            uVar9 = FUN_000537a0(uVar7,uVar8,*param_1);
            uVar10 = FUN_000537a0(uVar9,PTR_DAT_001111c4,param_1[1]);
            iVar11 = FUN_000540e0(uVar10,iVar1);
            bVar12 = iVar11 == 0;
            FUN_00053760(iVar3);
            FUN_00053760(uVar4);
            FUN_00053760(uVar5);
            FUN_00053760(uVar6);
            FUN_00053760(uVar7);
            FUN_00053760(uVar8);
            FUN_00053760(uVar9);
            FUN_00053760(uVar10);
            FUN_00053760(iVar1);
            FUN_00053760(iVar2);
            goto LAB_0005a91a;
          }
          FUN_00053760(iVar1);
          FUN_00053760(iVar2);
        }
      }
    }
    else {
      FUN_0005a610(&local_38);
      if ((((local_3c != (int *)0x0) && (local_38 == 7)) && (*local_3c == 0x2d687373)) &&
         (((short)local_3c[1] == 0x7364 && (*(char *)((int)local_3c + 6) == 's')))) {
        local_40 = param_2 + 4;
        param_3 = param_3 + -4;
        if (0x13 < param_3) goto LAB_0005a6d3;
      }
    }
  }
  bVar12 = false;
LAB_0005a91a:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000a39d0();
  }
  return bVar12;
}

